1

我的应用中有一个搜索栏和一些过滤器,它们创建了两个谓词。一个用于搜索栏中的字符串,一个用于过滤器 ( UISegmentedControl)。

当使用谓词时,我将一个对象插入上下文,然后调用-save:应用程序崩溃:

CoreData: error: Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.  Can't use in/contains operator with collection 1379410732 (not a collection) with userInfo (null)

在保存点: 崩溃点 (SIGABRT)

不使用谓词时不会发生这种情况。我可以在保存过程中以某种方式删除谓词吗?我已经通过获取 进行了尝试NSFetchRequest,但是我无法将其设置回控制器。

编辑

我还尝试添加self为观察者NSManagedObjectContextDidSaveNotification,然后使用-mergeChangesFromContextDidSaveNotification:关于 SO 建议的讨论。这也没有帮助。

4

1 回答 1

2

我发现了我的问题。这很容易,但是错误消息太混乱了,以至于我没有看对点。

问题是我使用的是[NSPredicate predicateWithFormat:@"number CONTAINS[cd] %@", string].

所以谓词CONTAINS在 a 上使用NSNumber。令人困惑的部分是谓词在从数据库中查询现有数据时起作用。我仍然不明白这部分,但它现在正在使用==比较器。

于 2013-09-17T10:30:26.107 回答