【发布时间】:2016-01-27 07:27:23
【问题描述】:
我正在使用 Core Data 和 NSFetchedResultController 开发一个应用程序,但出于多种原因,我想将其切换为使用 Realm。 我看到 github 上有 NSFetchedResultController 的“Realm 版本”,但它与我当前使用 Core Data 的代码不兼容。
视图控制器正在显示来自同一所学校的人员列表,就像地址簿一样。 此列表是在同一城市学习的人员的子列表。
所以我想向数据库发出 1 个唯一请求以检索所有人的列表,然后在每所学校 [String: AnyObject] 的 1 个字典中本地过滤此列表,其中 String 作为 tableView 中的部分名称,AnyObject 是一个数组人。
第一个解决方案,为每个学校制作一个 NSFetchedResultController,并使用谓词过滤位置。然后所有删除操作等都由代表处理 -> 这与 Realm 不兼容
创建这些字典并为每个操作更新它们... -> 这适用于 Realm,但编写代码非常烦人。
有更好的解决方案吗?
编辑:
我需要澄清我的要求: 我想写一个继承 UITableViewController 的类。
- 这个类有一个按字母顺序排列的人员列表
- tableview 的部分包含其名字的第一个字母
- tableview 控制器需要处理数据模型的更新(插入、更新、删除)
由于我们可能会从 CoreData 迁移到 Realm,因此我想编写与两者兼容的代码,以便以后无需再次修改它。到目前为止,我发现这样做的唯一“聪明”方法是忘记 NSFetchedResultController 和 RBQFetchedResultsController,因为它们分别链接到 CoreData 和 Realm,然后使用像字典这样的数据结构。
【问题讨论】:
-
也许我没有完全理解这个问题,但是如何编写一个函数来接收您想要的学校并从该学校的核心数据中获取人员? (或者这对你不起作用?)
-
我想要一个 NSFetchedResultController 但在字典上,而不是数据库上。然后我可以从任何来源加载数据并在我的 ViewController 中发出本地请求。
标签: ios objective-c swift core-data realm