将NSMutableArray保存到核心数据

gbu*_*oon 20 iphone core-data nsmutablearray

我想将NSStrings的NSMutableArray添加到我的核心数据模型中的一个实体中.问题是这不是Core Data中支持的类型.

我尝试制作一个转换属性,但问题是我看不到将NSMutableArray转换为NSData,然后从NSData转回NSMutableArray.有没有人知道如何解决这个问题?

(我知道我可以存档数组,但我不想这样做,我希望它存在于我的模型中).

jbr*_*nan 32

您可以在建模对象中具有二进制数据属性,将数组存档为数据,然后将其移交给对象.

但我认为更好的方法是建立一个多对多关系,而不是直接使用数组.

****编辑:以下是如何将数组存档到NSData中以便可以在托管对象中使用***

NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:[NSArray arrayWithObjects:@"1",@"2", nil]];
Run Code Online (Sandbox Code Playgroud)

基本上,任何符合NSCoding协议的类都可以这种方式存档.NSArray/NSMutableArray已经符合它.他们告诉他们所有的对象都要自己存档,所以他们也必须遵守.所有这些对象的成员必须符合,等等.它就像一棵树.

既然你的数组符合,并且它是一个NSString数组(也符合),那么你就是金色的.

  • 相反的是`NSArray*array = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData];` (9认同)