【问题标题】:want to filter out Windows admin shares from my arrangedObjects NSArrayController想从我的排列对象 NSArrayController 中过滤掉 Windows 管理员共享
【发布时间】:2016-11-24 21:34:14
【问题描述】:

我在我的 NSArrayController 中设置了所有内容,让我的文件所有者代表对象成为我拥有的 tableview 的数据源。

在界面生成器中的绑定中,我想使用过滤谓词过滤掉数组控制器中名称中包含 $ 的任何项目...。特别是实际上以 $ 结尾,因为这就是 windows 管理员共享的样子当我得到我正在收集的 FTP 共享数组时。

我已将过滤谓词设置为: 控制器键:选择 modelKeyPath:directorsAndFiles

value Transformer:嗯,我不知道?你能帮忙吗

想要: 消除所有包含 $ 字符的项目

谢谢!

【问题讨论】:

    标签: cocoa binding nsarraycontroller


    【解决方案1】:

    首先,在这种情况下,您不需要值转换器。值转换器更改值的显示。例如,它可能会导致数字 2 显示为“€ 2,00”——或任何您喜欢的。

    其次,您要查找的谓词语法是“ENDSWITH”,如:

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name not ENDSWITH '$'"];
    

    【讨论】:

      【解决方案2】:

      当您“设置”过滤谓词时,您所做的是绑定它——您需要将键路径设置为您设置为控制器键的任何对象的有效属性。因此,您应该将控制器键设置为某个控制器对象,以及某个属性的键路径,可能命名为 windowsPredicate

      然后,在您绑定的任何对象中,添加一个 windowsPredicate 属性,该属性返回一个 NSPredicate。您将自己创建NSPredicate,使用如下内容:

      NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name not like '*$'"];
      

      (* 表示“任何东西”,因此大致翻译为“不要以 $ 结尾”。)查看NSPredicate 文档以获取更多信息。祝你好运!

      【讨论】:

      • 使用该字符串时出现错误(稍作修改):无法解析格式字符串“title NOT like '*$'”
      • 我在我的控制器中添加了一个 NSPredicate *windowsPredicate: 方法,然后在界面构建器中将其连接为:绑定到文件所有者 keypath:self.windowsPredicate 并且当我收到该错误时。
      • 检查developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/… 以获得确切的详细信息,但我的猜测是单引号或 $ 不起作用。试试“title not like \"*$\"”。
      猜你喜欢
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 2018-10-12
      • 2016-02-25
      • 2022-10-05
      相关资源
      最近更新 更多