Миграция основных данных - это простая миграция, как это сделать? - PullRequest
0 голосов
/ 29 октября 2011

Что я делаю:

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

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

Итак, я решил, что это лучший способ (и, вероятно, как я долженя сделал это изначально) это использовать XCode для создания класса для этой сущности - для этого есть много онлайн-уроков.Таким образом, я мог бы просто передать экземпляры этого класса - намного чище, чем использовать массивы!


Где я застрял:

Есть ли легкийспособ перехода с моей текущей базовой модели данных на модель с добавленными свойствами и соответствующим классом?Я также хочу разделить одну из существующих строк на две в процессе миграции (имя на имя + фамилия).

Должен ли я использовать встроенные инструменты миграции?Или я должен просто создать новую модель базы данных с нуля и создать собственный класс, который проверяет старую базу данных, преобразует каждый объект и сохраняет его в более новой?Что было бы лучшим способом для этого - поскольку я новичок в базах данных / основных данных, я не хочу начинать с того, чтобы выяснить, есть ли более простой или лучший способ сделать это.

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Необходимо создать пакет управляемой объектной модели и включить миграцию.По сути, это позволяет загружать более одной модели базы данных для извлечения данных одного типа.Затем вы можете указать контексту управляемого объекта скопировать все.Для получения дополнительной информации: http://www.timisted.net/blog/archive/core-data-migration/.

0 голосов
/ 29 октября 2011

Похоже, наша модель довольно проста.Если все, что вы делаете - это добавляете еще пару атрибутов к существующей модели, вы можете выполнить облегченную миграцию.Это означает, что CoreData выполнит миграцию за вас.

Выполните следующие действия:
1. В Xcode нажмите на свою модель.он должен иметь расширение .xcdatamodeld.2. Перейдите в Editor-> Model Version и добавьте новую модель, стараясь изменить версию.3. Добавьте новые атрибуты.4. Убедитесь, что вы добавили новые атрибуты в соответствующие подклассы управляемого объекта.5. в вашей реализации Координатора постоянного хранилища, скорее всего, в делегате вашего приложения.Убедитесь, что вы добавили параметр NSMigratePersistentStoresAutomaticsOption.Ваш код должен выглядеть примерно так:

NSPersistentStoreCoordinator *psc=persistentStoreCoordinator;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,nil];
    NSError *error=nil;
    if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
            // handle errors
    }

Вот документы Apple по упрощенной миграции http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html

Удачи1

...