2010-05-01 1 views
4

У меня очень сложная проблема, которую я хотел бы поделиться с вами, и, возможно, кто-то может ответить на нее за меня. Прежде чем я начну, я должен сказать, что я очень новичок в этом.перенастроить/обновить приложение для данных ядра без стирания данных пользователя!

Итак, у меня есть приложение iphone coredata (как и приложение рецептов), в котором используется база данных, заполненная до заполнения. Пользователь может добавлять/редактировать свои собственные данные, но данные по умолчанию не могут быть удалены. данные пользователя ВСЕ сохраняются в одной и той же базе данных SQL.

ВОПРОС: что же я должен сделать для того, чтобы: - обновить некоторые (не все) из данных по умолчанию, которые хранятся в базе данных SQL без «трогательные» данные пользователя? (модель останется неизменной - никаких новых объектов и т. д.) (если пользователь удалит приложение, а затем переустановит новую версию, все будет в порядке, но я не хочу этого делать, очевидно).

может кто-нибудь ПОЖАЛУЙСТА, помогите на уровне кодирования?

+0

, кажется, дубликат 2750614, спросил всего несколько минут назад , –

+0

Я думаю, мой вопрос новее на час !!! LOL Интересно и обнадеживающе, что я не единственный, у кого такая же проблема. – treasure

ответ

0

Поскольку вы ввели данные по умолчанию, вы должны знать идентификаторы/ключи для этих записей. Все, что вам нужно - это скрипт обновления, который изменит данные по умолчанию.

+0

Мне удалось обновить без проблем мои данные по умолчанию, заменив старый sql на новый обновленный. однако я потерял все введенные пользователем данные. Я был бы признателен за более подробный (если возможно) ответ/учебник, который поможет мне найти решение. еще раз спасибо за ваше время! – treasure

1

Основные данные явно поддерживают моделирование версий версий и предоставляют средства для переноса данных между версиями. Это должно содержать необходимую информацию. Link to Developer Docs for Migration

+0

спасибо за быстрый ответ. однако моя проблема немного отличается, и я был бы признателен за некоторую ссылку на учебник или какой-то код для начала. Я видел ссылку, которую вы даете автобусу, я должен сказать, что я немного толстый и не знаю, как это сделать. заблаговременно за всю информацию, которую вы можете дать мне ... – treasure

2

Для поддержки добавления новых объектов и т.д. позже, вы хотите использовать управление версиями и автоматическую миграцию облегченную, которая описана здесь:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweight.html#//apple_ref/doc/uid/TP40008426-SW1

В основном вы создаете новую версию данных с помощью пункта меню Design->Data Model в Xcode, затем выполните несколько изменений кода. Это приведет к тому, что Core Data автоматически перенесет более старую модель на более новую. Вы ограничены тем, какие изменения вы можете внести. Вы можете добавлять новые сущности и добавлять дополнительный атрибут к существующим объектам или требуемые атрибуты с установленными значениями по умолчанию.

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

NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil]; 

После того, как вы начнете использовать управление версиями и миграции это необходимо, чтобы изменить что-то вроде этого:

NSString *path = [[NSBundle bundleForClass:self.class] pathForResource:@"DataModelName" 
                   ofType:@"momd"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
NSManagedObjectModel *model = [[[NSManagedObjectModel alloc] initWithContentsOfURL:url] autorelease]; 
Смежные вопросы