如何使用Core Data将magicalRecord添加到现有项目?

时间:2013-08-29 16:11:16

标签: cocoa core-data magicalrecord

我有一个可可项目正处于开发的后期阶段。我使用Core Data和绑定。

最近我想测试magicalRecord,因为它似乎可以帮助我减少很多麻烦的coredata代码甚至是子类化实体。

这似乎是使用cocapods的直接实现。

问题

将magicalRecord实现到现有的CoreData项目是否是一个好主意,如果是这样,它最好如何完成?我主要考虑的是我现有的商店和代码。

由于

1 个答案:

答案 0 :(得分:17)

是。神奇的记录简化了你的生活!在已经创建的项目中没有什么难以使用它们。

对上下文非常小心。 MR自动管理,创建,合并上下文。 当你开始使用它们时 - 你应该通过魔法记录 MR _ 方法进行任何上下文操作。


这是配置魔法记录的主要步骤:

  1. 通过CocoaPods添加魔法记录:添加到Podfile行:pod 'MagicalRecord'
    (别忘了运行pod install
  2. 在启动应用程序中设置managedObjectContext:
  3. 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