Sub*_*ash 2 core-data objective-c nsset nspredicate ios
我有一个ManagedPhoto coredata对象,它包含一个名为tags的NSSet属性.标记集中的每个对象都是NSString.
我需要获取所有具有特定值标签的ManagedPhoto对象,比如'party'.这就是我正在做的 -
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ManagedPhoto"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF.tags == 'party'"];
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];
Run Code Online (Sandbox Code Playgroud)
但是我总是得到一个空的结果数组,即使我确定有ManagedPhotos标签包含'party'.我也尝试过这个 -
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF.tags IN %@", @[@"party"]];
Run Code Online (Sandbox Code Playgroud)
我也尝试了很多其他的东西,但到目前为止还没有任何工作!任何想法?
要获取至少具有指定值的一个标记的对象,以下谓词应该起作用
[NSPredicate predicateWithFormat:@"ANY tags == 'party'"]
Run Code Online (Sandbox Code Playgroud)
或更好
[NSPredicate predicateWithFormat:@"ANY tags == %@", @"party"]
Run Code Online (Sandbox Code Playgroud)
但我假设该集合被定义为可转换属性,这意味着它被存储为SQLite文件中的二进制存档.然后,上述查询最多可用于已加载到托管对象上下文中的对象,但不适用于存储文件.
您可能应该定义tags
为具有String属性(例如"name")的另一个实体的to-many关系,然后使用谓词进行查询
[NSPredicate predicateWithFormat:@"ANY tags.name == %@", @"party"]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4155 次 |
最近记录: |