CompoundFetchedResultsController 2.2.0

CompoundFetchedResultsController 2.2.0

David Jennes 维护。



  • 作者
  • David Jennes

CompoundFetchedResultsController

Version License Platform Swift version

这是一个类集合,最终允许您将多个数据源如静态的 ArrayNSFetchedResultsController 合并到一个大的 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文件。