我正在研究一個應用程序,其中的大部分將是一個類似電子表格的視圖(數字值儘管是列和行的名稱)。在這種情況下使用Core Data是否有意義?我擔心效率問題,因爲我知道Core Data本身並不支持數組,並且我不覺得這種關係適合我的情況。但也許我錯了?使用核心數據的類似電子表格的應用程序?
回答
儘管核心數據對於使用SQLite存儲類型的提取請求非常快,但有一件事會讓你放慢速度,這就是所有-valueForKey/Path:
調用一旦實現對象就會獲取數據點(您的單元格)的值(即,查詢數據庫的速度非常快,但是一旦它們進入後,查詢它們的屬性的錯誤對象在和中慢得多)。
不要低估這些電話的五萬個重量,特別是在排序和顯示方面。在託管對象模型中有幾種不同的方式來表示它們,但它們都遭受同樣的問題,並且在性能方面有各種折衷,等於「不夠快」以跟蹤任意大小的矩陣中的單個單元。如果你一直知道你的電子表格會有30列,這個問題就大大簡化了......但這將是一個相當差的電子表格。 :-)
即使您使用了大量緩存(例如文檔中提到的「預先計算的獲取」方法),您只會將負擔轉移到內存上,這可能無法挺起來以及在不同的機器上。
我的建議是讓Core Data離開這個。
雖然沒有在Core-Data中特別實現,但我在基於Web的應用程序中使用了Java和Hibernate。
如果你能預測你需要顯示哪些數據(這也算冬眠),核心數據是相當快的。因此,您應該從模型和背景數據庫中分離出視圖以緩存可用數據並使用粗粒度操作來獲取重用的單元。
如果模型中存在很多依賴關係,則對數據庫的粗粒度訪問可能導致將整個信息網絡提取到模型中。目前我使用的是多級公司餘額,只要將任何對應用程序的訪問簡單地將整個數據結構提取到內存中即可。
我做了(相當天真的實現)核心數據電子表格的使用Cocoa綁定到一個NSTableView應用程序,並發現表現不可接受的,一旦它得到了高達約20行和20列。但這是我的第一個Cocoa項目,並沒有(在很大程度上仍然不知道)優化Core Data的第一件事。
你可以在這裏下載和試用應用程序:
http://frankschmitt.org/projects/checkpoint
,如果你有興趣(聯繫在該網站上的信息),我可以送你的來源。
- 1. 沒有核心數據的僞數據表/電子表格
- 2. 在覈心數據的應用程序
- 3. 使用谷歌電子表格作爲核心數據對象的數據源
- 4. 我應該使用核心數據的實時應用程序
- 5. 使用XCode的iOS 8.0應用程序的核心數據
- 6. 使用核心電話的通用應用程序
- 7. 設計使用核心數據的聊天應用程序
- 8. 使用核心數據的應用程序崩潰
- 9. iPhone應用程序更新(在sqlite的使用核心數據)
- 10. 核心數據詳細視圖像默認電子郵件應用程序
- 11. Android應用程序將數據推到谷歌電子表格
- 12. 轉化編程數據應用爲核心的數據應用
- 13. 使用核心數據更新Iphone應用程序內容
- 14. 使用核心數據中的新數據升級應用程序
- 15. 如何在.NET核心應用程序中使用.NET核心類庫?
- 16. 使用多線程核心數據應用程序設計的幫助
- 17. 核心數據遷移問題 - 它使應用程序崩潰
- 18. 保存數據時核心數據應用程序崩潰
- 19. 如何解析XML數據到應用程序核心數據
- 20. 爲核心數據應用程序提供基礎數據?
- 21. 核心數據財務應用程序數據模型
- 22. 核心數據實用程序崩潰
- 23. Mac/iPhone應用程序 - 將核心數據同步到iCloud和設備(使用核心數據)
- 24. iPhone應用程序的核心數據,升級到App Store後?
- 25. 簡單的核心數據示例應用程序?
- 26. 核心數據未保存圖像的iPhone應用程序
- 27. 核心數據iPhone應用程序的設計模式
- 28. 具有核心數據的iPad分割視圖應用程序
- 29. 關於核心數據應用程序的建議
- 30. iPhone應用程序中的核心數據錯誤。 「_OBJC_CLASS _ $ _ NSFetchedResultsController」
謝謝,弗蘭克,但我很害怕我的應用程序必須處理順利,絕對超過20行和列......目前,我並不需要編寫代碼的幫助(但?:))但而如果在這種類型的應用程序中使用核心數據可能是一個很好的選擇或不是一些一般線索。 – dzolanta 2010-02-04 20:49:32