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

Mik*_*ael 4 cocoa core-data magicalrecord

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

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

这似乎是一个使用cocapods的直接实现.

将magicalRecord实现到现有的CoreData项目是一个好主意,如果是这样,它最好怎么做?我主要考虑的是我现有的商店和代码.

谢谢

sky*_*der 17

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

只是要小心上下文.MR自动管理,创建,合并上下文.当你开始使用它们时 - 任何带有上下文的动作都应该通过Magical Record MR_方法来完成.


以下是配置Magical Record的主要步骤:

  1. 通过CocoaPods添加魔法记录:添加到Podfile行:( pod 'MagicalRecord'
    不要忘记运行pod install)
  2. 在启动应用程序中设置managedObjectContext:

AppDelegate.m

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [MagicalRecord setupCoreDataStack];
        _managedObjectContext = [NSManagedObjectContext MR_defaultContext];
        //other your code
    }
Run Code Online (Sandbox Code Playgroud)

当你想要将JSON解析为实体时 - 写下:

    [Item MR_importFromObject:JSONToImport];
Run Code Online (Sandbox Code Playgroud)

并且MR_importFromObject方法将自动创建新实体或更新现有实体.

每个实体的特定ID是您的实体名称加上"ID"的属性.(例如,如果名为"Item"的实体 - 唯一属性名称为"ItemID"),或者您可以指定名为"mappedKeyName"的特殊键并设置您的唯一ID.

3.保存更改:

[_managedObjectContext MR_saveToPersistentStoreAndWait];
Run Code Online (Sandbox Code Playgroud)

4.获取数据:

NSArray items = [Item MR_findByAttribute:@"itemID" 
                               withValue:"SomeValue" 
                              andOrderBy:sortTerm 
                               ascending:YES 
                               inContext:[NSManagedObjectContext MR_defaultContext]];
Run Code Online (Sandbox Code Playgroud)

5.最后,在你的应用程序退出之前,你应该使用清理方法:

[MagicalRecord cleanUp];
Run Code Online (Sandbox Code Playgroud)

关于多线程使用:

要在非主线程中使用上下文 - 您必须localContext在每个线程中创建.

像这样:

NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
//do thing with localContext - fetch, import, etc.
Run Code Online (Sandbox Code Playgroud)

这是一个非常好的MR使用教程:cimgf:imports-data-made-easy