2012-10-22 38 views
1

這有點奇怪,但我想在Core Data之外存儲一個NSManagedObjects的數組。堅持核心數據對象的一個​​子集

核心數據管理着我所有模型的屬性和關係。一個這樣的關係是對所有的AuthorBooks。有時候以特定順序知道同一列表是有用的,因此我已將booksByDate(例如)添加到NSManagedObject作者。

因爲排序描述符證明是昂貴的,所以我實現了一個緩存,使用Author上的iVar。這對我遇到的一些滯後的UI問題有很大的幫助。但緩存僅在第一次加載後纔有用,所以當我的應用程序啓動時,我現在去告訴每個Author緩存它的booksByDate。這爲我的發佈時間增加了幾秒鐘,但在應用程序運行後大幅提高性能。

我想縮短髮布時間。我正在試驗的一個區域是以某種方式存儲每個Author的緩存的booksByDate。在發佈時,我不會告訴每個Author使用昂貴的排序描述符來生成它的緩存,而只是將每個存儲的緩存傳遞給它正確的Author

我該如何存儲這些緩存,以便它們在執行之間持續存在?

回答

0

我認爲最好的選擇是每個書都有一個索引成員。 當您插入新書時,只需循環瀏覽書籍的書籍作者列表併爲該書籍的索引設置適當的值即可。 這樣,每次你要求書籍時,都可以根據該索引進行排序。 這比按日期進行比較要快得多。

+0

這很有趣 - 我沒有考慮到它是日期部分有影響 - 我認爲它是任何排序描述符。我會試一試。不過,知道我在我的問題中提出的建議是否可行仍然很有意思。 –

+0

我正在調查XCode的核心數據編輯器中的'索引'選項 - 在http://stackoverflow.com/questions/13022065/indexing-a-core-data-property-to-improve-nssortdescriptor-performance –

+0

索引是一個改進,但我想你不是按照時間順序添加書籍。所以你還是要訂購它們。當然,Date比較比簡單的int比較貴得多。 – George