У меня есть подкласс NSManagedObject, который хранит URI дочерних объектов. Первоначально он сохраняет временный URI при первом создании дочернего объекта и реализует -willSave
для вызова -obtainPermanentIDsForObjects
в своем NSManagedObjectContext перед сохранением, так что сохраняется только постоянный идентификатор.
Проблема, с которой я сталкиваюсь, заключается в том, что другие экземпляры также хранят временный URI. Когда кто-то получает сообщение -willSave
вскоре после того, как это делает другой объект с тем же потомком, он также вызывает -obtainPermanentIDsForObjects
и получает другой, неправильный постоянный URI, вызывая последующую ошибку Core Data ошибки как:
CoreData could not fulfill a fault for '0x102e4c110 <x-coredata://E17EE19B-E7F3-4102-ACFF-3E6F8BE8B104/MyEntityName/p2>'
Я хотел бы получить способ перейти от старого временного представления URIRepretation NSManagedObject к его новому постоянному представлению URIR, которое уже было сгенерировано.
Моя первоначальная мысль - сохранить свой собственный словарь <temporary URI,permanent URI>
и проверить его перед использованием -obtainPermanentIDsForObjects
- есть ли более простой (более надежный или встроенный) способ, который я пропускаю? Ничто из того, что я нашел в документации, ничего не предлагало.