Core Data Primary Key
This may seem stupid, but I still couldn't figure out how to mark a attribute as a primary key in the xcdatamodel file. My persistent storage is sqlite file. Can anyone help me?
In that case, how can I "validate" a ID to be unique? Should I write a validation method or something?
Your options are:
- Use
-[NSManagedObject objectID]
. Note that this ID is temporary until either the object is saved for the first time or you call-[NSManagedObjectContext obtainPermanentIDsForObjects:error:]
- Use the
CFUUID
family of functions to generate a UUID for each object in your-awakeFromInsert
method - Create your own primary key-like system that stores an integer in your model and increments it with the creation of each object
There is no good way to validate that a property is unique. The closest you'll get is to ensure it is unique at creation time, and then implement a custom setter method that stops anyone ever changing the ID.
Keep in mind that Core Data is an object-graph persistence framework, not a database. Things like primary keys are abstracted away because they depend on the implementation of the persistent store.