Как сказал Барри Уарк, всегда помните, что Базовые Данные не являются формой. Сведения о чистом SQL не предоставляются пользователю, и каждая строка является просто объектом. Кстати, иногда вам нужно получить доступ к «первичному ключу», например, когда вам нужно синхронизировать базу данных coredata с внешними базами данных sql (в моем случае она понадобилась мне в функции обратного вызова для изменения состояния объекта после INSERT это с успехом в удаленном БД). В этом случае вы можете использовать:
objectId=[[[myCoredataObject objectID] URIRepresentation] absoluteString]
, которая будет возвращать строку типа: x-coredata: // 76BA122F-0BF5-4D9D-AE3F-BD321271B004 / Object / p521, которая является уникальным идентификатором, используемым coredata для идентификации этого объекта.
Если вы хотите вернуть объект с таким уникальным идентификатором:
NSManagedObject *managedObject= [managedObjectContext objectWithID:[persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:objectId]]];
Примечание: помните, что если получатель еще не был сохранен в контексте CoreData, идентификатор объекта является временным значением, которое изменится при сохранении объекта.