我想在我的Core Data模型中的一个实体中添加一个NSStrings的NSMutableArray。但问题是这不是Core Data支持的类型。
我尝试创建一个可转换的属性,但问题在于我没有找到将NSMutableArray转换为NSData,再从NSData转换回NSMutableArray的方法。是否有人有解决此问题的想法?
(我知道我可以对数组进行归档,但我不想这样做,我希望它存在于我的模型中)。
我想在我的Core Data模型中的一个实体中添加一个NSStrings的NSMutableArray。但问题是这不是Core Data支持的类型。
我尝试创建一个可转换的属性,但问题在于我没有找到将NSMutableArray转换为NSData,再从NSData转换回NSMutableArray的方法。是否有人有解决此问题的想法?
(我知道我可以对数组进行归档,但我不想这样做,我希望它存在于我的模型中)。
您可以在建模对象中使用二进制数据属性,将数组存档为数据,然后将其交给对象。
但我认为更好的方法是使用一对多关系,而不是直接使用数组。
****编辑:以下是将数组存档到NSData中以便在托管对象中使用的方法***
NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:[NSArray arrayWithObjects:@"1",@"2", nil]];
基本上,任何符合 NSCoding 协议的类都可以以这种方式进行归档。NSArray/NSMutableArray 已经符合该协议。它们告诉它们所有的对象去归档自己,所以它们也必须符合。而且所有这些对象的成员都必须符合,以此类推。就像一棵树。
由于您的数组符合要求,并且它是一个包含 NSString 的数组(NSString 也符合要求),所以您非常幸运。
NSArray* array = [NSKeyedUnarchiver unarchiveObjectWithData:arrayData];
。 - Resh32