Core Data Primary Key
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.
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.