- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个经典的 CoreData 应用程序,通过绑定(bind)在 NSTableView 中显示它的数据(全部使用 XCode 4.2 完成)。
工作正常,直到我昨天决定在属性检查器中检查 ArrayController 的“自动重新排列内容”。现在,当我尝试在其上设置过滤器谓词时,我得到:
[<_NSFaultingMutableSet 0x102b65950> addObserver:forKeyPath:options:context:] is not supported. Key path: name
请记住,如果没有这个选项,它会完美地工作:谓词是好的, Controller 正在正确地过滤它的托管内容,并且 TableView 只显示与谓词匹配的实体。
当然,我可以取消启用此“自动重新排列内容”,但它对于在实体发生更改时保持排序顺序很有用。如果我编辑一个实体,“修改日期”会发生变化,并且由于我的排序顺序是在这个日期,所以我希望 TableView 自动重新排序它的行。它确实使用了这个选项,但遗憾的是添加了“addObserver not supported”错误。
_NSFaultingMutableSet 来自相关实体中的一对多关系,因此是“集合”。也许“自动重新排列内容”与具有一对多关系的“setFilterPredicate”不兼容?
有人遇到类似问题吗? NSArrayController 的内部错误?
注意:引起问题的谓词形式为
name CONTAINS[cd] %@ OR ANY aliases.name CONTAINS[cd] %@
或
ANY tags.name CONTAINS[cd] %@ OR ANY tags.aliases.name CONTAINS[cd] %@
似乎“ANY”引起了一些冲突...
最佳答案
找到了一个解决方案,上面对 SUBQUERY 进行了评论。
保留“自动重新排列内容”选项,但将谓词更改为:
name CONTAINS[cd] %@ OR SUBQUERY(aliases, $anAlias, $anAlias.name CONTAINS[cd] %@).@count != 0
和
SUBQUERY(tags, $aTag, $aTag.name CONTAINS[cd] %@).@count !=0 OR SUBQUERY(tags, $aTag, $aTag.aliases.name CONTAINS[cd] %@).@count !=0
分别。
可能谓词有误,我之前没有遇到其他问题。
关于objective-c - NSArrayController 上的 setFilterPredicate 在 "Auto Rearrange Content"中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341325/
正在完成我的第一个 Cocoa OS X 项目,其中我获取远程 XML 数据并将对象存储在 NSMutableArray 中。 今天,当我在项目中第一次打开IB时,我发现了对象NSArrayContr
我是 Objective-C 的新手,到目前为止我很喜欢它。然而,我似乎在兜圈子。我试图在不编写代码的情况下做尽可能多的事情。是否可以有效地将一个 NSArrayController 的内容集绑定(b
我有一个简单的 NSArrayController 连接到我的 coreData 模型之一。我可以轻松地显示 NSTableView 中的所有项目,没有问题,但是,如果我尝试将包含 NSPopUpBu
在我的 MainController 中,有一个 Person 数组,它绑定(bind)到 NSArrayController。人员姓名显示在表name 列中。如果我将一个按钮绑定(bind)到 NS
我有一个连接到 NSManagedObjectContext 的 NSArrayController。此外,我有一个 NSTableView,其内容和选择索引绑定(bind)到所述 NSArrayCo
我正在 Xcode 控制台中检查 NSArrayController 的数量,我得到了这个: (lldb)po [_myArrayAC.content count] nil 但是如果我尝试检查该值是
我在使用 NSArrayController rearrangeObjects 函数时遇到了麻烦 - 该函数是从某些后台步骤调用的,有时应用程序会因错误而崩溃:“endUpdates 在没有 begi
我刚刚意识到有两种方法可以使用 NSArrayController。 将 Controller 绑定(bind)到数组并向数组添加对象。或者根本不使用任何数组,直接将对象添加到 Controller
我正在开发一个 Mac 应用程序,并且正在努力让谓词过滤器正常工作。对于 NSArrayController,使用 fetch 与过滤谓词的方式有什么不同吗? 我正在使用 Core Data 来存储我
我想使用 NSArrayController 向 NSTableView 提供数据。我面临的问题是我不想将所有数据预先加载到数组中,然后使用数组 Controller setContent: 方法。我
我有一个示例项目 https://github.com/ericgorr/LazyFetching 设置非常简单。在我的 CoreData 模型中,我有两个实体: 具有 name 属性和与 Item
非常简单的问题让我抓狂:以编程方式清除 NSArrayController 选择的正确方法是什么? 我正在设计一个包含以下组件的 View : NSArrayController *controlle
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我正在努力将通过拖放(文件从 finder 到 NSView)接收到的变量传递给 AppDelegate 中的 NSArrayController。 NSView 接收拖放: class MyView
我在我的 OS X 应用程序中使用 Core Data,我将一些 TableViews 绑定(bind)到 NSArrayControllers。我遇到的问题是,当我尝试使用数组 Controller
我在过滤 NSArrayController 时遇到问题。内容数组绑定(bind)到一个包含 NSDictionaries 的 NSMutableArray。我想过滤所有“名称”键等于“a”的 NSD
我有一个 NSArrayController,其内容是我的 AppDelegate 的“servers”属性。 我有一个 NSTextField ,它绑定(bind)到 NSArrayControll
我有一个链接到核心数据模型的 NSArrayController 子类。在我调用的方法之一中 [self performSelectorInBackground:@selector(someLongE
也许我不明白如何正确使用 NSArrayController,但这是我的情况。 我的实体设置如下:帐户 -> 文件夹 -> 聊天。因此,我将针对特定文件夹实体进行大量聊天。我希望我的数组 Contro
我有一个 NSArrayController,它返回一个 NSManagedObjects 数组,但是我只对在 NSTableView 中显示这些对象的某些属性感兴趣,并且不需要所有这些属性。有没有办
我是一名优秀的程序员,十分优秀!