2009-12-09 163 views
1

我有問題,當我從Xcode安裝應用程序的所有作品,但如果我建立的應用程序,並從iTunes安裝它我在啓動數據庫時出現錯誤。 這種情況只會發生在我有核心數據模型的變化,並需要遷移到新版本。 在在崩潰首先啓動與消息:iPhone - 核心數據遷移崩潰

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 2009-12-09 14:41:31

+0

是的,但此版本商店只有34000 :) – 2009-12-09 15:02:17

+0

我有這個錯誤只有當我有新版本的coredata模型,即添加新字段到實體。如果我用戶prevision模型的所有工作。 – 2009-12-09 15:05:30

回答

0

您是否將您的database.sqlite文件從Resources文件夾複製到apps Documents文件夾?您應該在首次啓動應用程序時執行該操作(之後,請檢查是否有文件,以免覆蓋它)。

+0

我試着去做 NSString * path = [self applicationDocumentsDirectory]; \t path = [path stringByAppendingPathComponent:kDatabaseName]; \t path = [path stringByAppendingPathExtension:@「sqlite」]; \t NSFileManager * fileManager = [NSFileManager defaultManager];如果(![fileManager fileExistsAtPath:path]){ \t \t NSString * pathResource =(NSString *)[[NSBundle mainBundle] pathForResource:kDatabaseName ofType:@「sqlite」]; \t \t [fileManager copyItemAtPath:pathResource toPath:path error:nil]; \t} 但也有錯誤。 – 2009-12-09 14:52:51

0

你確定它是一個「崩潰」,而不是xxx failed to launch in time錯誤?遷移通常需要幾秒鐘,並且可能比Apple爲初始化提供的時間長。您可能必須在後臺遷移。

+0

另見這篇文章,它描述了輕量級遷移,這需要很少的時間:http://stackoverflow.com/questions/2310216/implementation-of-automatic-lightweight-migration-for-core-data-iphone – sehugg 2010-05-18 19:16:00