2013-10-08 68 views

回答

1

NSManagedObjects有一個對象id屬性。但是當你創建一個ManagedObject時,會有一個臨時ID,在將對象存入數據庫之後它會得到永久ID。根據我的經驗,最好爲每個數據創建自己的ID。例如,如果它是一個簡單的表格,您可以簡單地使用時間戳作爲唯一的ID,或者如果它是一個具有實時和頻繁更新的複雜表格,則應該使用表格中的一些字段與時間戳的組合(您可以將值轉換爲base64使其成爲一個真正的ID;))。

2

蘋果建議不要訪問由核心創建的SQLite文件數據,因爲它的格式將來可能會改變。遵循此規則,您應該創建自己的ID。

還有一個NSManagedObject - objectID,但我不確定你的用例是否應該使用它。

3

通常不需要創建一個id屬性,因爲每個對象都有一個對象ID(NSManagedObjectID)。如果你有一個託管對象,你可以通過發送-objectID來得到它。雖然有一個問題:

有一個問題:NSManagedObjectID可以是臨時的或永久的。當一個對象被創建時,它有一個臨時ID,直到你獲得該對象的永久ID。當持久存儲對象時,核心數據將自動爲每個仍具有臨時ID的對象獲取一個永久ID。

如果您需要自定義ID屬性,您應該爲每個實體單獨創建它。不要創建具有ID屬性的抽象實體。如果你這樣做,核心數據將爲所有從抽象實體繼承的實體創建一個巨大的(怪獸)表。這不好。

相關問題