2011-03-04 4 views
0

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

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

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

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

ответ

0

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

1

Я нашел такой хороший кусок кода в 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

good catch ..... –

+0

Спасибо за ваш ответ! Поэтому я могу просто изменить файл sqlite вместо добавления атрибута через .xcdatamodel? – Benjamin

+0

Я попытался удалить (или переименовать) файл sqlite, но приложение не воссоздает sqlite-файл «CoreDataBooks.sqlite» с изменениями, как я ожидал. – Benjamin

1

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

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

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

Смежные вопросы