Last Updated: January 28, 2019
·
65.06K
· jfsagasti

How to save a NSArray/NSMutableArray in Core Data

Any class you have which conforms to the NSCoding protocol can be serialized and archived in this way. NSArray/NSMutableArray already conform this protocol. Its important to say that all of objects of the array must conform too.

If you have in your model an entity with a property of type 'Binary Data', you can store in it the array data by doing:

[...]
NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:TheArray];
myEntity.arrayProperty = arrayData;
[self saveContext]; //Self if we are in the model class
[...]

Then you can retrieve all the original array info by doing the opposite operation:

[...]
NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:anEntity.arrayProperty];
[...]

8 Responses
Add your response

Thanks !! This post saved my life!

over 1 year ago ·

I'm glad to hear that! :)

over 1 year ago ·

Why would you do that? Create new model for the NSArray entries?

over 1 year ago ·

Awesome..

over 1 year ago ·

Thanks dude, this was really helpful.

over 1 year ago ·

thanks a lot..precise and great.. saved lot of my time

over 1 year ago ·

Great! Thanks for your contribution simonschellaert :)

over 1 year ago ·

Yes, Its works for storing array of NSObject in transformable field.
but Is is possible to store array of NSManagedObject in transformable field?
i tried it but its giving an error.
please help me.
Thanks in advance.

over 1 year ago ·