2015-09-19 35 views
1

下面是我感興趣的場景:我應該使用[NSManagedObject]作爲UITableView的數據嗎?

1)我使用CoreData存儲我的數據我的應用程序 2)我使用一個UITableView到的數據顯示,以我的用戶

我的問題是我是否應該使用[NSManagedObject]作爲UITableView的數據。

很明顯,這樣做可以很好地工作,但是make的一部分感覺這不是最好的做法。我可以使用字典或數組或其他來存儲數據,然後當需要保存時,我可以將該數組保存到CoreData中。

是否有任何理由認爲其中一種方法比另一種更好?

回答

1

你幾乎應該使用NSManagedObject S作爲你的表視圖中的數據,如果僅僅是爲了保存自己,以節省/負載從CoreData轉化數組和字典進/出NSManagedObject S的麻煩。

如果按[NSManagedObject]您的意思是array of NSManagedObject s,這當然是可行的。但使用CoreData與UITableView s時的最佳做法是使用NSFetchedResultsController。這兩個主要優點是:

  1. 輕鬆處理表格視圖部分。指定sectionNameKeyPath和相應的排序描述符,並且FRC將確定每個對象應出現在哪個節中,從而相應地將對象分配給indexPath。
  2. 自動處理插入/更新/刪除。有樣板代碼可以使FRC在每次添加,修改或刪除對象時更新表格視圖。

另一個優點,使用NSManagedObject小號直接的,而不是數組和字典,是存儲器管理:NSManagedObject s爲取爲「故障」最初和它們的屬性將僅根據需要填充,相比陣列減少存儲器需求以及大概從一開始就必須充分填充的字典。

+0

frak。我從來沒有聽說過NSFetchedRsultsController ...在那裏有CoreData的體面的文檔缺乏。謝謝。 – Greg

+0

Mmm Apple提供的示例Master-Detail應用程序使用NSFetchedResultsController及其文檔描述了它的使用https://developer.apple.com/library/prerelease/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/index.html –

相關問題