ReactiveCoreData (RCD)试图将Core Data带入ReactiveCocoa (RAC)的世界。
目前有几个源代码文件,Specta规范以及一个用于Mac的示例应用程序。
要使用,将从ReactiveCoreData文件夹中复制源文件到您的项目。当然,您的项目中还应包含ReactiveCocoa。
来自Mac示例的代码
// This part refetches data for the table and puts it into filteredParents
// It either fetches all Parents or filters by name, if there's something in the search field
// It will also refetch, if objectsChanged send a next
RAC(self.filteredParents) = [[[[Parent findAll]
where:@"name" contains:filterText options:@"cd"]
sortBy:@"name"]
fetchWithTrigger:objectsChanged];
另一个后台处理的示例
[[[[triggerSignal
performInBackgroundContext:^(NSManagedObjectContext *context) {
[Parent insert];
}]
saveContext]
deliverOn:RACScheduler.mainThreadScheduler]
subscribeNext:^(id _) {
// Update UI
}];
// We can also react to main context's merge notifications to update the UI
[mainContext.rcd_merged
subscribeNext:^(NSNotification *note){
// Update UI
}];
查看Specs以获取一些粗略的用法示例。
还可以查看项目中的示例应用程序。它展示了一个简单的表视图,其中使用ReactiveCoreData和ReactiveCocoa连接了东西,并使用Core Data进行后端存储。
头文件也提供了各种方法的相关文档。
它还未完成特性,但会根据实际使用和您的贡献进行添加。
话虽如此,它应该可以与直方图和基于文档的应用程序一起工作,其中有许多对象上下文。
-[RACSignal where:args:]
方法,该方法使用给定格式的谓词设置,这些格式可以使用信号作为其参数。这将NSFetchRequests的执行带入Reactive域。作为一个信号谓词变化,查询被修改并发送下一个 - 例如,以进行检索。[RACSignal limit:]
接受一个值或一个信号。[RACSignal sortBy:]
接受一个“键”字符串、一个“-键”(用于降序排序)、一个排序描述符、一组排序描述符或一个包含这些中任一项的信号。fetch
和count
方法,将当前NSManagedObjectContext中传递给它们的值作为“next”发送。fetchWithTrigger:
如果触发器激活任何值,将重新运行检索。