Как добавить magicRecord в существующий проект с Core Data?

У меня есть проект какао, который находится на поздних стадиях разработки. Я использую Core Data и привязки.

В последнее время я хотел протестировать magicRecord просто потому, что мне кажется, что это поможет мне свести к минимуму громоздкий код основных данных и даже подклассы сущностей.

Это похоже на прямую реализацию с использованием кокаподов.

Вопрос

Стоит ли внедрять magicRecord в существующий проект CoreData, и если да, то как это лучше всего сделать? Я думаю в основном о моем существующем магазине и коде.

Спасибо


person Mikael    schedule 29.08.2013    source источник


Ответы (1)


да. Magical Record упростит вашу жизнь! Нет ничего сложного в том, чтобы использовать их в уже созданном проекте.

Только будьте очень осторожны с контекстами. MR автоматически управляется, создает, объединяет контекст. И когда вы начнете их использовать - любые действия с контекстом вы должны делать с помощью методов Magical Record MR_.


Вот основной шаг для настройки Magical Record:

  1. Добавьте Magical Record через CocoaPods: добавьте в Podfile строку: pod 'MagicalRecord'
    (не забудьте запустить pod install)
  2. настроить manageObjectContext в стартовом приложении:

AppDelegate.m

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

И когда вы хотите разобрать JSON на Entity — напишите это:

    [Item MR_importFromObject:JSONToImport];

А метод MR_importFromObject автоматически создаст новую сущность или обновит существующую.

Конкретный идентификатор для каждой сущности - это атрибут имени вашей сущности плюс «ID». (например, если сущность называется "Элемент" - уникальным именем атрибута будет "ItemID") или вы можете указать специальный ключ с именем "mappedKeyName" и установить свой уникальный идентификатор.

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< /а>

person skywinder    schedule 02.09.2013
comment
Спасибо за ваш ответ! Значит, MR не будет мешать моим привязкам какао или что-то в этом роде? - person Mikael; 02.09.2013