测试已测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布最近发布 | 2016年12月 |
由 Adam Fish,Ben Chatelain 维护。
依赖 | |
Realm | >= 1.0.0 |
RBQSafeRealmObject | >= 0 |
RealmUtilities | >= 0 |
NSFetchedResultsController
的替代方案。RBQFetchedResultsController
(FRC) 是 NSFetchedResultsController
的替代方案,与 Realm 一起工作。控制器和委托遵循与 NSFetchedResultsController
相同的范例,并允许开发人员监视 RLMObject
子类的更改。
RBQFetchedResultsController
支持表格视图分区,并实现了用于传递更改以进行分区和行动画的替代委托。
Realm 类需要主键才能与 RBQFetchedResultsController
一起使用。
Swift API 与 Objective-C 相似,以下为类
FetchResultsController
FetchRequest
SafeObject
使用 ABFRealmTableViewController (依赖于 RBQFetchedResultsController
)构建的基本待办事项列表应用程序。
从 v4.0 和 Realm v0.99 开始,RBQFetchedResultsController
可自动与 Realm 的精细粒度通知支持一起工作。除非您需要支持分区,否则建议直接使用 Realm 的 API 而不是 RBQFetchedResultsController
。
Realm 生成的更改将重新处理以计算任何分区的更改。然后,这些更改将传递给委托
Objective-C
-(void)controllerWillChangeContent:(RBQFetchedResultsController *)controller;
-(void)controller:(RBQFetchedResultsController *)controller
didChangeObject:(RBQSafeRealmObject *)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath;
-(void)controller:(RBQFetchedResultsController *)controller
didChangeSection:(RBQFetchedResultsSectionInfo *)sectionInfo
atIndex:(NSUInteger)sectionIndex
forChangeType:(NSFetchedResultsChangeType)type;
-(void)controllerDidChangeContent:(RBQFetchedResultsController *)controller;
Swift
func controllerWillChangeContent<T: Object>(controller: FetchedResultsController<T>)
func controllerDidChangeObject<T: Object>(controller: FetchedResultsController<T>, anObject: SafeObject<T>, indexPath: NSIndexPath?, changeType: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?)
func controllerDidChangeSection<T:Object>(controller: FetchedResultsController<T>, section: FetchResultsSectionInfo<T>, sectionIndex: UInt, changeType: NSFetchedResultsChangeType)
func controllerDidChangeContent<T: Object>(controller: FetchedResultsController<T>)
从 v4.0 开始,RBQFetchedResultsController
现仅使用其内部 Realm 的特定模式进行分区缓存。这意味着不再需要处理缓存的 Realm 迁移!
RBQFetchedResultsController
通过 CocoaPods 或 Carthage 提供。
使用 Xcode 编译并运行/测试 Example 项目的示例,以观察 RBQFetchedResultsController
的实际效果。该项目使用了 CocoaPods。如果您尚未安装 CocoaPods,请使用 [sudo] gem install cocoapods 命令进行安装。
Objective-C
git clone http://github.com/Roobiq/RBQFetchedResultsController
git submodule init
git submodule update
cd Examples/ObjC
pod install
open RBQFetchedResultsControllerExample.xcworkspace
Swift
git clone http://github.com/Roobiq/RBQFetchedResultsController
git submodule init
git submodule update
cd Examples/Swift
pod install
open RBQFRCSwiftExample.xcworkspace
注意:示例项目通过直接包含源文件和使用 CocoaPods 安装 Realm 来安装框架。还有一些示例项目是使用 CocoaPods 和 Carthage 安装框架的测试/演示。对于 CocoaPods 安装示例应用(ObjC-cocoapods
/Swift-cocoapods
),框架作为开发依赖项安装,参照本地 podspec 和源文件。按照上述同样步骤进行,因为执行 pod install 命令会简单包含框架。
对于 Carthage 的示例应用(ObjC-carthage
/Swift-carthage
),在上述步骤执行 git submodule update
后,您必须运行 carthage update
,以确保 Carthage 能够在本地构建 Realm 框架。示例项目随后就像使用 Carthage 生成的结果框架一样使用 RBQFetchedResultsController.xcodeproj
。
示例项目包含了各种功能和单元测试。此外,项目已在我们的Roobiq应用中使用,非常稳定。