2010-06-10 57 views
6

我想要是這樣的:如何正確使用ManagedObjectID?

1)創建一個新的manged對象

2)得到它的臨時身份標識與[myMO objectID];

3)轉換該ID來一個NSURL,這樣我就可以節省以供日後參考:

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

4)保存被管理對象的上下文

5)一段時間後,獲取該對象使用NSURL作爲ID

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

並猜測什麼:它不起作用。我得到一個空愚蠢的對象返回從

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

但是......我說......創建一個管理對象時的ID是暫時的。所以這是有道理的,爲什麼這根本不起作用。我必須先保存上下文,然後獲得持久ID。真正的。對?

那麼,該走的路?

1)創建管理對象

2)保存上下文

3)獲取的ID作爲NSURL

4)之後任何時間,例如在你的下一個生日,訪問管理對象與NSURL ;-)

我試圖夢想NSManagedObjectID像一個數據庫ID,我可以寫在一些黃色postIt表和粘貼在我的顯示器中間,所以我在午餐後回顧它。你知道......至少在過去我們通過telnet使用數據庫並手動執行SQL命令來查詢訂單信息和類似的東西。 ID始終是最重要和最重要的事情。

但核心數據有這個有點奇怪NSManagedObjectID的東西。

你的祕密策略是什麼?你真的認識到很多用例,你需要NSManagedObjectID嗎?還是那種我可以輕易忘記的事情,事後沒有任何痛苦?

+0

最有趣的閱讀永遠......我秒你。有多種用例可以讓你喜歡擁有這個ID,而不必保存或更好,而不必更改它,因爲猜測別人同時保存了數據庫。 – 2010-08-28 19:22:46

回答