2011-10-14 150 views
3

據我所知,CoreData不會在添加記錄時保留記錄的順序。所以如果我們想在CoreData中存儲對象的數組,我們應該添加像orderId這樣的字段到對象中並手動填充它。但它看起來下墊的SQLite基地商店索引的記錄,所以可能有一種方法來存儲有序的對象,而不增加額外的領域?已訂購核心數據記錄

回答

8

簡答題:否。 長答案:

  • 爲了保存順序,訂單信息必須存儲。可以隱式地使用ShiShi建議的現有屬性上的排序描述符。或者你可以添加一個新的屬性來明確維護實例的排序順序。

  • 如果客戶端代碼沒有定義SQLite,SQLite會保留隱式主鍵rowId。但是如果客戶端代碼定義了一個整數主鍵,SQLite將使用它作爲它的rowId。換句話說,在空間和時間上沒有優勢來嘗試聰明並使用SQLite的rowId。請注意,您可以告訴Core Data您的屬性應該被編入索引。核心數據可能或可能不定義另一個主鍵。

  • 試圖依靠核心數據如何實現其持久性存儲是一個** BAAAAD **想法:你的代碼會破壞兼容性與其他賣場,過去現在還是將來,並可能會與未來的突破更新。

  • 您可能已經注意到Core Data現在支持與Mac OS X Lion或iOS 5的有序關係。底層實現最可能使用特定的附加列來存儲排序信息。