簡體   English   中英

我應該使用NSFetchedResultController還是Dictionary覆蓋CoreData領域?

[英]Realm over CoreData should I use NSFetchedResultController or a Dictionary?

我正在使用Core Data和NSFetchedResultController開發一個應用程序,但是由於許多原因,我想將其切換為使用Realm。 我在github上看到了NSFetchedResultController的“領域版本”,但它與我當前使用Core Data的代碼不兼容。

視圖控制器正在顯示來自同一學校的人員列表,例如通訊錄。 此列表是在同一城市學習的人的子列表。

因此,我正在考慮向數據庫發出1個唯一請求,以檢索所有人員的列表,然后在每個學校的1個詞典中對該列表進行本地過濾[String:AnyObject],其中tableView中的String為Section名稱,AnyObject為人員數組。

  1. 第一個解決方案是,為每個學校創建一個NSFetchedResultController,並用謂詞過濾位置。 然后所有刪除操作等都由委托人處理->與Realm不兼容

  2. 創建這些字典並為每個操作更新它們...->這與Realm一起使用,但是編寫代碼很煩人。

有更好的解決方案嗎?

編輯:

我需要闡明我的要求:我想編寫一個繼承UITableViewController的類。

  • 本課程有按字母順序排列的人員列表
  • tableview的部分帶有其名字的首字母
  • tableview控制器需要處理數據模型的更新(插入,更新,刪除)

當我們可能從CoreData轉到Realm時,我想編寫與兩者兼容的代碼,這樣我以后就不需要再次修改它了。 到目前為止,我發現唯一做到這一點的“智能”方法就是忘記NSFetchedResultController和RBQFetchedResultsController,因為它們分別鏈接到CoreData和Realm,然后使用字典等數據結構。

為了澄清起見,您正在創建一個包含多個節的UITableView 每個學校1個,並且您想根據他們的學校將Realm數據庫中的人的簡單列表排序到表中,對嗎?

如果您提到的Realm獲取的結果控制器(我猜是RBQFetchedResultsController )不適合您應用的體系結構,那么是的,詞典是您的理想之選,但不希望它像您所期望的那樣“手動”認為。

關於Realm Results對象的好處是,它們是“活動的”,即如果在執行Results查詢之后將新項目添加到Realm,則會追溯更新該項目以包括新項目。 在這種情況下,只要您管理一個Results對象字典,每個字典都與為每個特定學校招募人員有關,則唯一的手動方面就是管理表部分本身。

唯一需要注意的是,當一個新的人被添加到特定學校時,您需要一種通知機制(以便知道刷新表格視圖的該部分),但是就目前而言,這是最好是按照自己的邏輯(通過回調塊或委托調用)進行。

在旁注中,我們正在添加一組新的API,以使在Realm中實現本機獲取的結果控制器行為成為可能(即,在添加新對象時自動發布通知)。 我們尚未確定適當的發布日期,但應該在2016年第一季度之內! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM