繁体   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