ReactiveCoreData 0.0.2

ReactiveCoreData 0.0.2

测试已测试
语言语言 Obj-CObjective C
许可证 BSD
发布最新发布2014年12月

未指定维护。



  • 作者
  • Jacob Gorban

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进行后端存储。

头文件也提供了各种方法的相关文档。

它还未完成特性,但会根据实际使用和您的贡献进行添加。

话虽如此,它应该可以与直方图和基于文档的应用程序一起工作,其中有许多对象上下文。

完成

  • 开始代表并修改NSFetchRequests (findAll, findOne) 的NSManagedObject中的信号。
  • -[RACSignal where:args:] 方法,该方法使用给定格式的谓词设置,这些格式可以使用信号作为其参数。这将NSFetchRequests的执行带入Reactive域。作为一个信号谓词变化,查询被修改并发送下一个 - 例如,以进行检索。
  • 几个针对常见谓词情况(例如CONTAINS谓词和相等)的信号感知便利方法
  • [RACSignal limit:] 接受一个值或一个信号。
  • [RACSignal sortBy:] 接受一个“键”字符串、一个“-键”(用于降序排序)、一个排序描述符、一组排序描述符或一个包含这些中任一项的信号。
  • 在RACSignal上执行NSFetchRequest的fetchcount方法,将当前NSManagedObjectContext中传递给它们的值作为“next”发送。
  • fetchWithTrigger: 如果触发器激活任何值,将重新运行检索。
  • 检索objectID并将objectID转换为当前上下文中的对象
  • 在后台上下文中运行
  • 非主上下文存档时合并到主上下文。
  • 在上下文存档时发射的信号(包装NSManagedObjectContextDidSaveNotification)。
  • 合并后发射的信号。
  • 不仅支持具有一个主托管对象上下文的直方图应用程序,也支持基于文档的应用程序,其中每个文档都有自己的上下文。