我有一个可可项目正处于开发的后期阶段。我使用Core Data和绑定。
最近我想测试magicalRecord,因为它似乎可以帮助我减少很多麻烦的coredata代码甚至是子类化实体。
这似乎是使用cocapods的直接实现。
问题
将magicalRecord实现到现有的CoreData项目是否是一个好主意,如果是这样,它最好如何完成?我主要考虑的是我现有的商店和代码。
由于
答案 0 :(得分:17)
是。神奇的记录简化了你的生活!在已经创建的项目中没有什么难以使用它们。
对上下文非常小心。 MR自动管理,创建,合并上下文。 当你开始使用它们时 - 你应该通过魔法记录 MR _ 方法进行任何上下文操作。
pod 'MagicalRecord'
pod install
)AppDelegate.m
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[MagicalRecord setupCoreDataStack];
_managedObjectContext = [NSManagedObjectContext MR_defaultContext];
//other your code
}
当你想要将JSON解析为实体时 - 写下这个:
[Item MR_importFromObject:JSONToImport];
MR_importFromObject 方法将自动创建新实体或更新现有实体。
每个实体的特定ID是您的实体名称加上“ID”的属性。 (例如,如果名为“Item”的实体 - 唯一属性名称为 “ItemID” ),或者您可以指定名为“mappedKeyName”的特殊键并设置您的唯一ID。
3. 保存更改:
[_managedObjectContext MR_saveToPersistentStoreAndWait];
4. 获取数据:
NSArray items = [Item MR_findByAttribute:@"itemID"
withValue:"SomeValue"
andOrderBy:sortTerm
ascending:YES
inContext:[NSManagedObjectContext MR_defaultContext]];
5. 最后,在您的应用退出之前,您应该使用清理方法:
[MagicalRecord cleanUp];
要在非主线程中使用上下文 - 必须在每个线程中创建localContext
。
像这样:
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
//do thing with localContext - fetch, import, etc.
以下是MR使用的非常好的教程:cimgf: importing-data-made-easy