CompoundFetchedResultsController
这是一个类集合,最终允许您将多个数据源如静态的 Array
和 NSFetchedResultsController
合并到一个大的 NSFetchedResultsController 中。
示例
要尝试示例项目,只需运行以下命令
pod try CompoundFetchedResultsController
需求
需要 Swift 4 和 iOS 8 或更高版本。
安装
从 CocoaPods 安装
CompoundFetchedResultsController 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "CompoundFetchedResultsController"
手动操作
- 将
CompoundFetchedResultsController/Source
文件夹拖入您的项目中。
使用方法
创建 FRC
首先,使用您喜欢的方法创建自己的 FRC,您最终想要组合。然后,只需按照以下方式调用初始化器
let controllers = [
myController1,
myController2,
myController3
]
let frc = CompoundFetchedResultsController(controllers: controllers)
新创建的 FRC 可以像在 UITableViewController、UICollectionViewController 等中使用的任何其他 FRC 一样使用。只需注意,您可能会混合获取结果类型,并相应地处理这些情况。
重要提示:如果在同一时间混合可能通知多个并行导入的 FRC,可能会遇到问题。在这种情况下,建议仅对您的表格/集合视图使用 reloadData()
,以避免在 UIKit 中崩溃。
静态 FRCs
此库提供了一个用于创建使用静态数据创建 FRC 的类,简单地称为 StaticFetchedResultsController
。使用它如下
let objects = [
myObject1,
myObject2,
myObject3
]
let frc = StaticFetchedResultsController(items: objects, sectionTitle: "My Static Section")
如果您修改了项目属性,将为 FRC 的代理触发一个 更新部分
事件。
重要提示:提供的对象必须是 NSObject 子类的实例。
静态 FRCs 与值类型
如果您想使用 Swift 值类型,还有一个泛型 ValueFetchedResultsController
let values: [MyValueType] = [
myValue1,
myValue2,
myValue3
]
let frc = ValueFetchedResultsController(values: values, sectionTitle: "My Static Section")
值将被自动包装到简单的通用ValueWrapper
对象中。稍后您可以使用以下方法检索值:
if let wrapper = frc.object(at: indexPath) as? ValueWrapper<MyValueType> {
let value = wrapper.value
...
}
致谢
CompoundFetchedResultsController 由 David Jennes 提供。
许可证
CompoundFetchedResultsController 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。