我正在开发基于Core Data
的iOS应用程序,其中我将数据字符串存储在coredata中作为NSData
(二进制数据)。
在获取数据时,如何编写NSPredicate
,只检索NSData
值包含给定字符串的结果。
如果name
属性是一个字符串,那么我可以编写如下的谓词。
NSString *inputName = @"bbb";
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name = %@",inputName];
我的问题是
如果name
为NSData
且此NSData
来自
NSArray *anArray = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",nil];
NSData *arrayData = [NSArchiver archivedDataWithRootObject:anArray];
arrayData
在核心数据中存储为name
属性。
我希望这些信息足以理解我的问题。 提前谢谢。
答案 0 :(得分:1)
我找到了答案..将NSArray
转换为NSSet
并将其存储在实体中
答案 1 :(得分:0)
如果我正确理解您的问题和后续评论,并且您使用存储为数据的数组来表示层次关系,那么您显然没有按照设计使用Core Data。
相反,我建议您创建一个单独的实体来代表员工,然后在他们和主管之间建立关系?
虽然它不是特定于iOS的,但tutorial by Apple证明了这一概念。
答案 2 :(得分:0)
根据您的评论,我认为您需要重新审视您的架构。如果你在Supervisor&amp ;;之间有一对多的关系员工(许多员工可以拥有相同的主管),您应该创建一个实体Employee
,并为其添加属性supervisorID。然后,您可以使用类似于where supervisorID="123"
。
如果无法重新设计架构,可以将NSData转换为NSString&使用-initWithData:encoding:
将其保存在CoreData中。
HTH,
阿克沙伊