2010-06-10 36 views
6

Çalıştığım şey:ManagedObjectID nasıl doğru şekilde kullanılır?

1) Yeni bir yönetilen nesne yarat

2) [myMO objectID];

ile geçici bir kimlik al 3) Bu kimliği bir NSURL'ye dönüştürün, böylece kaydedebilirim Gelecekte başvurmak için:

NSManagedObjectID *moID = [myMO objectID]; 
NSURL *url = [moID URIRepresentation]; 

4) Yönetilen nesne içeriğini kaydet

5) Bir süre sonra NSURL kullanarak kimliği

NSManagedObjectID *moID = [[context persistentStoreCoordinator] managedObjectIDForURIRepresentation:url]; 

kullanarak getirin ve tahmin edin: iş. Xzx59

NSManagedObject *myOldMo = [context existingObjectWithID: moID error:&error]; 

'dan boş aptal bir nesne alıyorum Ama ... dediğim gibi ... yönetilen bir nesne oluştururken kimlik geçicidir. Yani bunun neden hiç işe yaramadığı anlamlıdır. İlk önce bağlamı kaydetmeliyim ve sonra bir kalıcı kimlik alıyorum. Gerçek olanı. Sağ?

Öyleyse yol bu mu?

1) Yönetilen nesneyi yarat

2) İçeriği kaydet

3) NSURL

şeklindeki kimliği alın 4) istediğiniz zaman, örneğin bir sonraki doğum gününüzde, yönetilen NSURL ;-) ile

nesnesi NSManagedObjectID gibi bir sarı ekran üzerine yazdırabilen bir DB id gibi rüyalar görmeye çalışıyorum ve monitörümün ortasına yapıştırın, bu yüzden öğle yemeğinden sonra ona geri dönün. Biliyorsun ... en azından eski günlerde olduğu gibi telnet üzerinden veritabanları kullandık ve SQL komutlarını sipariş bilgilerini ve bunun gibi şeyleri sorgulamak için elle çalıştırdık. Kimlik her zaman en önemli ve önemli şeydi.

Ancak Çekirdek Veriler bu biraz garip NSManagedObjectID şey var.

Gizli stratejileriniz nelerdir? NSManagedObjectID'ye ihtiyacınız olacak birçok kullanım durumunu gerçekten biliyor musunuz? Yoksa daha sonra acı çekmeden kolayca unutabileceğim bir şey mi?

+0

komik seni ikinci ... Hiç okuyun. Bu kimliğe sahip olmak zorunda kalmadan, daha önce kaydetmek zorunda kalmadan, daha fazla kaydetmeniz gerekmediği için birden çok kullanım durumu vardır; –

cevap

11

Bunun büyük bir sır olduğundan emin değilim. dokümantasyon NSManagedObjectContext yönetilen nesneler için kalıcı Kimliğini almak için bir yol tarif eder:

- (BOOL)obtainPermanentIDsForObjects:(NSArray *)objects error:(NSError **)error 

http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/NSManagedObjectContext.html#//apple_ref/occ/instm/NSManagedObjectContext/obtainPermanentIDsForObjects:error:

İlgili konular