2009-12-09 3 views
1

У меня проблемы, когда я устанавливаю приложение из Xcode, все работает, но если я создам приложение и устанавливаю его из iTunes, у меня есть ошибка с базой данных при запуске. Это происходит только в том случае, если у меня есть изменения в базовой модели данных и вам необходимо перейти на новую версию. При первом запуске в аварии с сообщением:iPhone - Core Data Crash при миграции

Thread 0: 
0 libSystem.B.dylib    0x00034588 pwrite + 20 
1 libsqlite3.dylib    0x000505ec _sqlite3_purgeEligiblePagerCacheMemory + 2808 
2 libsqlite3.dylib    0x000243d8 sqlite3_backup_init + 7712 
3 libsqlite3.dylib    0x000244ac sqlite3_backup_init + 7924 
4 libsqlite3.dylib    0x0000d418 sqlite3_file_control + 4028 
5 libsqlite3.dylib    0x000228b4 sqlite3_backup_init + 764 
6 libsqlite3.dylib    0x00022dd0 sqlite3_backup_init + 2072 
7 libsqlite3.dylib    0x000249a8 sqlite3_backup_init + 9200 
8 libsqlite3.dylib    0x00029800 sqlite3_open16 + 11360 
9 libsqlite3.dylib    0x0002a200 sqlite3_open16 + 13920 
10 libsqlite3.dylib    0x0002ab84 sqlite3_open16 + 16356 
11 libsqlite3.dylib    0x00049418 sqlite3_prepare16 + 54056 
12 libsqlite3.dylib    0x00002940 sqlite3_step + 44 
13 CoreData      0x00011958 _execute + 44 
14 CoreData      0x000113e0 -[NSSQLiteConnection execute] + 696 
15 CoreData      0x000994be -[NSSQLConnection prepareAndExecuteSQLStatement:] + 26 
16 CoreData      0x000be14c -[_NSSQLiteStoreMigrator performMigration:] + 244 
17 CoreData      0x000b6c60 -[NSSQLiteInPlaceMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 1040 
18 CoreData      0x000aceb0 -[NSStoreMigrationPolicy(InternalMethods) migrateStoreAtURL:toURL:storeType:options:withManager:error:] + 92 
19 CoreData      0x000ad6f0 -[NSStoreMigrationPolicy migrateStoreAtURL:withManager:metadata:options:error:] + 72 
20 CoreData      0x000ac9ee -[NSStoreMigrationPolicy(InternalMethods) _gatherDataAndPerformMigration:] + 880 
21 CoreData      0x0000965c -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] + 1328 

В следующем запускает приложение не загружает данные из базы данных.

+0

Это база данных с 500 000+ записей, которую вы задали о in this previous question? TechZen

+0

да, но эта версия хранится только в 34000 :) –

+0

У меня есть эта ошибка только после этого у меня появилась новая версия модели coredata, которая добавляет новое поле в объект. если пользовательская модель предвидения все работает. –

ответ

0

Вы копируете файл database.sqlite из папки «Ресурсы» в папку «Документы приложений»? Вы должны сделать это в первом запуске приложений (и после этого убедитесь, что есть файл на месте, чтобы вы не перезаписывали его).

+0

Я пытаюсь это сделать NSString * path = [self applicationDocumentsDirectory]; \t path = [path stringByAppendingPathComponent: kDatabaseName]; \t path = [path stringByAppendingPathExtension: @ "sqlite"]; \t NSFileManager * fileManager = [NSFileManager defaultManager]; \t если: { \t \t NSString * pathResource = (NSString *) [[NSBundle mainBundle] pathForResource: kDatabaseName OfType: @ "SQLite"] ([FileManager fileExistsAtPath путь]!); \t \t [fileManager copyItemAtPath: pathResource toPath: ошибка пути: nil]; \t} Но также имеют ошибку. –

0

Уверены ли вы, что это «авария», а не ошибка xxx failed to launch in time? Миграция часто занимает несколько секунд, и это может быть больше, чем время, которое Apple дает вам для инициализации. Возможно, вам придется мигрировать в фоновом режиме.

+0

Также см. Этот пост, который описывает облегченную миграцию, которая занимает намного меньше времени: http://stackoverflow.com/questions/2310216/implementation-of-automatic-lightweight-migration-for-core-data-iphone – sehugg

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