一组使 Core Data变得简单易用的对象!
此项目不旨在为您管理上下文,您仍然需要保留上下文。如果您想要一些更自动化的东西,可以看看 Saul Mora(Magical Panda)的 MagicalRecord。
主要重点是非常轻量级的 Core Data 栈实现,不使用单例(我讨厌单例)。
即时 Core Data 栈 - 您不再需要将样板代码污染到 AppDelegate 中。一个类管理所有
单元测试栈 - 预配置的内存中的栈,适用于单元测试。
自动迁移数据存储 - 确保您的版本管理,此栈将为您自动迁移。
保存到根上下文 - 您不确定自己有多深的上下文树,此方法会为您保存到根。
上下文命名 - 当调试时这非常有帮助,所有上下文现在都有一个 contextName 属性可供您设置/读取。(在 iOS8 发布后,这将被弃用。)
-(NSManagedObjectContext *)rootContext
-- 此方法将返回一个已完全初始化并准备使用的 NSManagedObjectContext。
-(NSManagedObjectContext *)unitTestingContext
-- 此方法将返回一个内存中的核心数据存储。
更新:我还公开了 PersistentStoreCoordinator、PersistentStore 和 ManagedObjectModel。有合法的理由需要访问这些内容,我希望让它变得简单。
这个分类有几个简化事务的方法
-(void)saveToRootContext
-- 将遍历父->子上下文直到根,并对它们全部调用 -save
。
-(void)rootContext
-- 返回最顶层的 managedObjectContext。
-(NSString *)contextName
-- 是一个属性,允许你为上下文分配字符串,这对于在多个上下文中调试非常有帮助。
+(NSManagedObjectContext *)appRootContext
-- 允许你从应用的任何部分访问 appDelegate.rootContext。
这个分类添加了一个帮助清除一些 fetch 请求样板代码的方法
+(NSArray *)fetchWithPredicate...
-- 该方法接受一个条件/排序键/上下文,并返回所有匹配的对象的 NSArray。这种方法在检索时可以消除每条检索 4 行代码。