1)我有NSFetchedResultsController
一些集合视图,我使用 defaultManagedObjectContext 来保留它的上下文,其中一个是NSMainQueueConcurrencyType
并且它设置为{的子节点{1}}。
2)我在同一个 defaultManagedObjectContext 中取自CoreData的NSPrivateQueueConcurrencyType
NSArray
。我使用的这个字符串就像NSStrings
,就像下面窗口中的过滤器选项一样。过滤器可以正常工作。
3)我有方法在另一个 backgroundManagedObjectContext (predicate
)中更改Collection View元素(例如,设置LIKE),它设置为 defaultManagedObjectContext的子元素。喜欢按钮按预期工作。
但是当我尝试一起使用(Predicate和Set like method)时,CoreData会出现错误:
ALL或ANY运算符的左侧必须是a NSArray或NSSet。
我应该使用其他上下文来保持谓词吗?
作为 defaultManagedObjectContext 的孩子?
这样的谓词:
NSPrivateQueueConcurrencyType
因此,[NSEntityDescription entityForName:@"NMObject"
inManagedObjectContext:self.managedObjectContext];
self.selectedTypes = [[NSArray alloc] initWithObjects:@"музей", nil];
_predicate = [NSPredicate predicateWithFormat:@"ANY types.typeObjValue IN %@", self.selectedTypes];
与NMObject
的关联NMTypeObj
答案 0 :(得分:0)
谢谢大家!
问题在于谓词格式。如果关系是NMObject types <<--Many to One--> NMTypeObj objects
,可能会使用ANY。例如,ANY的正确关系是NMObject types <--One to Many-->> NMTypeObj objects
所以,就我而言,我将谓词改为:
_predicate = [NSPredicate predicateWithFormat:@"types.typeObjValue IN %@", self.selectedTypes];