2009-09-28 57 views
2

設計/使用我的模型和NSFetchedResultsController以便我可以使用具有可變高度單元格的表格的最佳方式是什麼?計算高度是很昂貴的(並且需要訪問模型的數據),所以我正在緩存模型中的值。但是,我知道tableview會詢問所有可見單元格的高度。在NSFetchedResultsController中使用變量高度?

我目前的想法是,我會限制結果的數量,並允許用戶自己獲取更大的數字以防止負載過重。

但是,我的擔心是我的行包含大約200個字節的每個相關數據。事實上,錯誤200行將只需要約20k,但如果我想顯示20000呢?我將錯誤的2MB原始數據設置單元高度。

有一個屬性佔用了大約90%的數據。這意味着我可以將主實體保持爲每行20個字節。是否值得將它保存在一個單獨的實體中,以便在不需要的情況下避免錯誤發生?

最後一點:細胞高度完全是動態的,取決於內容。如果只有幾個可能的選擇,這將會簡單得多。

+0

您是否嘗試過實施它?每個細胞的細胞高度也是動態的,還是在許多不同高度之間進行選擇(即細胞高度只能是50,60或75個像素)? – 2009-09-28 19:18:06

+0

完全動態(我更新了問題)。除了查看數據之外沒有其他捷徑。 – 2009-09-29 08:47:08

回答

0

幸運的是,從iPhone SDK 3.1開始,我們可以跟蹤由Core Data使用的sql調用。事實證明,對於少量數據(如每個單元200字節),如果將它全部保存在同一個實體中,性能要好得多。對於上面的示例(使用20000)單元格,Core Data可能會很好地執行2000個附加請求來獲取它所需的數據,並且提取請求開銷變得很麻煩。在那個階段,最好使用批處理來加快速度。

0

如果您可以根據您澆注到單元格中的內容來枚舉單元格類型,並將單元格類型存儲在數據模型中,那麼可以執行一個樹來返回標準的,預先計算的高度基於小區。

+0

沒有標準的高度。每個細胞可以有不同的高度 – 2009-09-29 08:47:39