Kamu ingin:
-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID
error:(NSError **)error
Mengambil objek dari penyimpanan yang memiliki ID tersebut, atau nihil jika tidak ada.
(Perhatikan: ada dua metode di NSManagedObjectContext dengan nama yang tampak serupa yang membuat saya tersandung. Untuk membantu menjaganya tetap lurus, inilah yang dilakukan dua metode lainnya:
-(NSManagedObject *)objectWithID:(NSManagedObjectID *)objectID
... akan membuat objek kesalahan dengan objectID yang disediakan, apakah objek tersebut benar-benar ada di toko atau tidak. Jika tidak ada, apa pun yang mengaktifkan kesalahan akan gagal kecuali Anda memasukkan objek terlebih dahulu dengan NSManagedObjectContext's insertObject:
. Satu-satunya kegunaan yang saya temukan untuk ini adalah menyalin objek dari toko ke toko sambil mempertahankan ObjectID.
-(NSManagedObject *)objectRegisteredForID:(NSManagedObjectID *)objectID
... akan mengembalikan objek yang memiliki ID tersebut, jika telah diambil dari penyimpanan oleh managedObjectContext ini. Jika ada yang tahu untuk apa metode ini berguna, silakan beri komentar.)
[eta .: Perbedaan penting lainnya antara metode pertama dan dua metode lainnya adalah existingObjectWithID:error:
tidak pernah mengembalikan kesalahan; itu selalu mengambil seluruh objek untuk Anda. Jika Anda mencoba menghindarinya (misalnya bekerja dengan objek yang mahal untuk diambil dengan properti gumpalan besar), Anda harus pandai dengan objectWithID:
atau objectRegisteredForID:
, yang tidak menembakkan kesalahan; atau gunakan permintaan pengambilan yang dikonfigurasi dengan benar.]