测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可协议 | MIT |
发布上次发布 | 2016年12月 |
SwiftSwift 版本 | 3.0.1 |
SPM支持 SPM | ✗ |
由 Adam Fish,Ben Chatelain 维护。
依赖 | |
RealmSwift | >= 2.1.1 |
RBQFetchedResultsController | >= 5.0.2 |
SafeRealmObject | >= 0 |
NSFetchedResultsController
的直接替代品。RBQFetchedResultsController
(FRC)是 NSFetchedResultsController
的替代品,与 Realm 一起使用。控制器和代理遵循与 NSFetchedResultsController
相同的模式,并允许开发者监视 RLMObject
子类的更改。
RBQFetchedResultsController
支持表格视图分区,并实现了一个直接替代代理,将更改传递给表格视图以进行分区和行动画。
Realm 类需要主键才能与 RBQFetchedResultsController
一起工作。
Swift API 与 Objective-C 相似,具有以下类
FetchedResultsController
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中构建并运行/测试示例项目以查看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
),框架作为开发pod安装,引用本地podspec和源文件。按照上述相同说明操作,因为“pod install”将仅包含框架。
对于Carthage示例应用(ObjC-carthage
/Swift-carthage
),您必须在上述步骤中执行“git submodule update”之后运行carthage update
,以便Carthage可以在本地构建Realm框架。然后,示例项目直接使用同一方法使用RBQFetchedResultsController.xcodeproj
,就像使用Carthage生成的框架一样。
示例项目包括各种功能测试和单元测试。此外,该项目在我们的Roobiq应用中使用,相当稳定。