具有NSData属性的核心数据

时间:2011-08-18 06:30:59

标签: iphone ios core-data nsarray nspredicate

我正在开发基于Core Data的iOS应用程序,其中我将数据字符串存储在coredata中作为NSData(二进制数据)。 在获取数据时,如何编写NSPredicate,只检索NSData值包含给定字符串的结果。

如果name属性是一个字符串,那么我可以编写如下的谓词。

NSString *inputName = @"bbb";
NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name = %@",inputName];

我的问题是 如果nameNSData且此NSData来自

,则谓词是什么
NSArray *anArray = [NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",nil];
NSData *arrayData = [NSArchiver archivedDataWithRootObject:anArray];

arrayData在核心数据中存储为name属性。

我希望这些信息足以理解我的问题。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

我找到了答案..将NSArray转换为NSSet并将其存储在实体中

答案 1 :(得分:0)

如果我正确理解您的问题和后续评论,并且您使用存储为数据的数组来表示层次关系,那么您显然没有按照设计使用Core Data。

相反,我建议您创建一个单独的实体来代表员工,然后在他们和主管之间建立关系?

虽然它不是特定于iOS的,但tutorial by Apple证明了这一概念。

答案 2 :(得分:0)

根据您的评论,我认为您需要重新审视您的架构。如果你在Supervisor&amp ;;之间有一对多的关系员工(许多员工可以拥有相同的主管),您应该创建一个实体Employee,并为其添加属性supervisorID。然后,您可以使用类似于where supervisorID="123"

的内容查询您的Employee表

如果无法重新设计架构,可以将NSData转换为NSString&使用-initWithData:encoding:将其保存在CoreData中。

HTH,

阿克沙伊