Saving an NSMutableArray to Core Data

无人久伴 提交于 2019-12-28 09:18:24

问题


I want to add an NSMutableArray of NSStrings to one of my Entities in my core data model. The problem is that this isn't a supported type in Core Data.

I tried making a tranformable attribute, but the problem is that I see no way of turning a NSMutableArray to NSData, and then going from NSData, back to an NSMutableArray. Does anyone have an idea as to how this issue can be solved?

(I know I can archive the array, but I don't want to do that, I want it to be present in my model).


回答1:


You could have a binary data attribute in your modeled object, archive the array to data, and hand it off to the object.

But I think the better way would be to have a to-many relationship, instead of using an array directly.

****Edit: Here's how to archive the array into NSData so that it can be used in your managed object***

NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:[NSArray arrayWithObjects:@"1",@"2", nil]];

Basically, any class you have which conforms to the NSCoding protocol can be archived in this way. NSArray/NSMutableArray already conform to it. They tell all of their objects to archive themselves, so they must conform too. And all of those objects' members must conform, etc. It's like a tree.

Since your array conforms, and it's an array of NSString (which also conforms), then you're golden.



来源:https://stackoverflow.com/questions/1104075/saving-an-nsmutablearray-to-core-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!