2011-10-23 57 views
3

我有一個iPhone應用程序使用核心數據,但我似乎無法弄清楚一個特定實體的固體唯一標識符。這是的情況:iOS核心數據對象的唯一標識符?

我有一個配置文件實體,與其他實體的關係。在應用程序開始時,用戶選擇要「登錄」的配置文件。我需要在整個應用程序的使用過程中跟蹤特定的配置文件,以便獲取正確的相關對象。

如果我使用普通的sql數據庫,我只是將profileID(主鍵)作爲屬性存儲在App Delegate中。但是,在覈心數據中,沒有主鍵。

我知道有一個託管對象的objectID,但從我讀的內容可以改變(用戶可以在使用應用程序時更改他們的個人資料信息,這意味着它必須被提取然後重新保存)。有沒有最好的做法來處理這種我不知道的情況?

+0

如果用戶更改他們的個人資料信息,是不是應該更新現有的託管對象而不是重新保存它? – millimoose

回答

1

重新保存不會更改唯一對象ID,除非您重新創建(=複製)該對象並保存它 - 唯一的ID將是非常沒有意義的,否則。

如果是這種情況,您可以始終擁有自己的ID字段,您可以在第一次創建配置文件時使用objectID填充;如果你自己不改變它,這個領域永遠不會改變:-)。

7

user1007895,

有堅持永久objectID的機制。 -[NSManagedObjectID URIRepresentation]-[NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:]。這些保證永遠不會改變。

Andrew

+4

對於任何想知道如何從管理對象獲取此URI的人,都可以這樣做:'object.objectID.URIRepresentation'。 –

+2

請注意,如果尚未保存相應的託管對象,則對象標識(以及URI)是一個臨時值,將在保存相應的託管對象時更改。 –

+0

=>所以上面的答案是錯誤的。 URIR表示不保證永遠不會改變,導致它在對象被保存時改變。 – Martin