Если вы хотите сохранить идентификатор объекта на постоянной основе, вам необходимо:
- Сохранить объект в контексте, чтобы идентификатор изменился с временного на постоянный идентификатор.
- Извлеките версию URI постоянного идентификатора с помощью
-[NSManagedObjectID URIRepresentation]
.Это возвращает NSURL, который вы можете сохранить как преобразуемый атрибут в другом управляемом объекте. - Вы можете получить объект, используя
-[NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:]
, чтобы сгенерировать новый NSManagedObjectID
объект, а затем использовать -[NSManagedObjectContext objectWithID:]
, чтобы получить фактическую ссылкууправляемый объект.
Предполагается, что URI идентифицирует конкретный объект в определенном хранилище на определенном компьютере, но он может измениться, если вы внесете какие-либо структурные изменения в хранилище, например перенесете его в новую версию модели.
Однако вам, вероятно, не нужно ничего этого делать.ObjectID играют гораздо меньшую роль в базовых данных, чем в других системах моделей данных.Базовые данные поддерживают граф объектов, который однозначно идентифицирует объекты по их расположению на графике.Простая прогулка по графику отношений приведет вас к определенному уникальному объекту.
Единственный раз, когда вам действительно нужен ObjectID, это когда вы обращаетесь к объекту через два или более постоянных хранилища.Тогда они вам нужны, потому что отношения не пересекают магазины.