I want to store NoteObjects in Core Data. Normally, a NoteObject has a NSString *mainText and an NSMutableArray *arrayOfTags (an array of NSStrings). I want to now use Core Data, but arrays are a tricky matter with core data. Typically a NoteObject won’t have more than 50 tags in its array. So how should I model this? I have two options:
- Use a
transformableproperty to store the array - Use a to-many relationship, which I’ve read is the more “legit” way to do it.
Which one should I use and why? And how would I implement a to-many relationship with my simple structure? I can’t seem to wrap my fingers around that concept.
Use to-many relationship. Because it’s way better and easier during fetch requests. See the screenshots below. Pay attention to the Relationship manager on the right side, set “To-Many Relationship” from your NoteObject to Tags. Ignore the Player entity.
Oh and pay attention to the “Delete Rule”. You might want to delete all the tags associated with a given NoteObject. So set it to Cascade in that case.
NoteObject entity
Tag entity
–Edit:
To add multiple tags you need to first fetch your NoteObject – I assume there will be some sort of ID parameter which you’ll use to distinguish NoteObjects. CoreData will automatically generate the add/remove methods for Tags. You’ll need to use code similar to the one below: