Добавить строковый атрибут в CoreDataBooks - PullRequest
0 голосов
/ 04 марта 2011

Я возился с CoreDataBooks и пытался добавить еще одно поле в файл sqlite в дополнение к текущим трем. Я добавил строку атрибута в .xcdatamodel и объявил ее в book.h, book.m и локализованном файле (все без изменения файла sqlite). Однако эти изменения никогда не добавляют поля в sqlite, и приложение никогда не загружается. Каждый раз я удаляю приложение в симуляторе и выполняю сборку -> очистить, но безрезультатно. Я также попытался изменить файл sqlite, чтобы он соответствовал .xcdatamodel, но приложение по-прежнему не загружается.

Это проблема с CoreDataBooks или со мной? Нужно ли делать версию приложения перед этим? Не похоже, что мне нужно, пока я удаляю приложение в симуляторе.

Кто-нибудь знает, как я могу добавить этот атрибут четвертой строки (поле sqlite) в CoreDataBooks?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 04 марта 2011

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

И вы должны решить, хотите ли вы использовать sqlite или core-data.Если вы хотите отслеживать изменения в файлах sqlite или добавлять поля в файлы sqlite, вам следует использовать sqlite, а не данные ядра.

Если вы хотите использовать core-data, вы должны игнорировать файл sqlite.

1 голос
/ 04 марта 2011

Я нашел такой хороший кусок кода в CoreDataBooks

NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"CoreDataBooks.sqlite"];
/*
 Set up the store.
 For the sake of illustration, provide a pre-populated default store.
 */
NSFileManager *fileManager = [NSFileManager defaultManager];
// If the expected store doesn't exist, copy the default store.
if (![fileManager fileExistsAtPath:storePath]) {
    NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"CoreDataBooks" ofType:@"sqlite"];
    if (defaultStorePath) {
        [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
    }
}

в CoreDataBooksAppDelegate.m: 154 , для меня это означает, что каждый раз, когда приложения не находят файл sqlite, он копируется из пакета, где он не был изменен путем изменения CoreDataBooks.xcdatamodel .

Попробуйте использовать другой подход или просто измените файл sqlite в комплекте.

0 голосов
/ 05 марта 2011

Разобрался.Приложение создавало новый файл sqlite, мне просто нужно было найти его в файлах симулятора.Грррр, так много времени было потрачено впустую, когда я все делал правильно.Извлеченные уроки, я думаю:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...