0

嘿所有,真的很感謝一些幫助 - 我的目標是高效率數據提取和內存使用。最有效的方式來處理可變大小的UITableView單元格,並有效地檢索相關數據

我有一個核心數據存儲,存儲內容項目表(tocEntity):文章標題,頁碼。一個頁面可以有多個文章,並且頁碼可以存在或不存在,即如果你有一個從第3頁開始的5頁文章,你將不會有任何t.o.c.第4-7頁的條目。

當我在表視圖中顯示上面,每個單元格顯示一個頁面的所有文章的名字,所以一些細胞會產生單篇文章的名字,而其他人可能有10個(或以上)

沒問題越來越單元格佈局良好,但我有興趣有效地提取數據僅用於表視圖(NSFetchedResultsController工作方式)當前所需的數據 - 問題是,每個單元不存在1個核心數據條目,而是數量不等。因此,如果NSFetvhedResultsController會說(讓我獲得單元格12-17的數據) - 這不會導致單個核心數據檢索。

任何想法如何去實現這個?

回答

0

viewDidLoad檢索所有數據到NSArray然後使用此數組的UITableView數據源方法,而不是實時調用。如果要刷新數據,請從數據重新填充數組,然後在tableview上調用reloadData

+0

這就是我如何做的,但它不是一個高效的內存解決方案,而且不是可擴展的 - 有可能只有1%的總數據可以在屏幕上一次顯示...... – brucem 2011-06-06 13:25:24

+0

不幸的是,蘋果代碼的工作方式(就像你發現的那樣)就是它在渲染時調用了相同的方法。你唯一能做的就是限制行數,然後在表格中檢測滾動和插入行等,但我不會推薦它。 – 2011-06-06 13:27:01

+0

值得指出的是,CoreData存在錯誤,這意味着即使數組中存在覈心數據對象,當您訪問某個對象的屬性時,也不會將WHOLE對象圖保存在內存中,這會導致CoreData獲取數據,這是非常有效的。 – 2011-06-06 13:27:52

0

如果可能,我建議將所有這些鏈接分組在一個表視圖部分,而不是將它們分組在一個表視圖行。這是因爲高度可變的單元可以降低滾動性能。

+0

我考慮過這個問題 - 但它會產生一個包含許多單細胞部分(比多行細胞更常見)的表格,這看起來相當笨拙?有沒有辦法讓每一部分與前一部分合並,即部分之間沒有差距? – brucem 2011-06-06 15:50:17

+0

我不清楚你指的是哪裏。如果部分出現問題,您可以嘗試使用不顯示的行代表頁面,然後使用代表頁面鏈接的縮進行。 – 2011-06-06 16:23:59

+0

您是否遍歷整個結果數組以按頁分組文章名稱?如果是這樣,當數組的屬性被訪問時,數組中的每個對象都會被拒絕。爲了提高性能,您需要確定一種方法來返回已排序和分組以供顯示的實體。關於部分,您還可以返回表格部分的自定義視圖,其中可以包含顯示三角形等。 – 2011-06-06 20:35:55

相關問題