2009-12-09 164 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