コアデータオブジェクトでNSManagedObjectIDをアーカイブ/アーカイブ解除しようとしています。これにより、次回アプリを起動したときに、これらのIDを取得し、それらを使用して特定のオブジェクトをフェッチできます。
次のようにIDを「アーカイブ」してみました。
//defaultConfiguration is an NSManagedObject defined elsewhere and it works just fine...
// and newObject is also properly initialized, bound to a context,etc...
ArchivedID* newID = [NSEntityDescription insertNewObjectForEntityForName:@"ArchivedID" inManagedObjectContext:managedObjectContext];
[self.defaultConfiguration addArchiveIDObject:newID];
newID.idURI = [[newObject objectID] URIRepresentation];
[managedObjectContext save:&error];
そして、このようにアーカイブを解除します([anyObject]をテストしているので、この時点で1つしかありません):
NSManagedObjectID* ID = [managedObjectContext.persistentStoreCoordinator managedObjectIDForURIRepresentation:[defaultConfiguration.archiveID anyObject]];
しかし、上記のようにURLを取得しようとすると、次の例外が発生します。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ArchivedID relativeString]: unrecognized selector sent to instance 0x7f59f20'
エンティティの属性はXcodeを介して「変換可能」に設定され、コアデータのドキュメントは空の場合はデフォルトのトランスフォーマーを使用することを示唆しているように見えるため、Xcodeのトランスフォーマー値フィールドを空のままにしました。
私は何が間違っているのですか?