iPhone-核心数据迁移崩溃

iPhone-核心数据迁移崩溃,iphone,sqlite,core-data,Iphone,Sqlite,Core Data,我有问题,当我从Xcode安装应用程序时,一切正常,但如果我构建应用程序并从iTunes安装它,则在启动时数据库出现错误。 只有在核心数据模型发生更改并且需要迁移到新版本时,才会发生这种情况。 在第一次启动时,会出现以下消息: Thread 0: 0 libSystem.B.dylib 0x00034588 pwrite + 20 1 libsqlite3.dylib 0x000505ec _sqlite3_purgeEligib

我有问题,当我从Xcode安装应用程序时,一切正常,但如果我构建应用程序并从iTunes安装它,则在启动时数据库出现错误。 只有在核心数据模型发生更改并且需要迁移到新版本时,才会发生这种情况。 在第一次启动时,会出现以下消息:

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

下次启动时,应用程序不会从数据库加载数据。

是否将database.sqlite文件从资源文件夹复制到应用程序文档文件夹?您应该在应用程序首次启动时执行此操作(之后,检查是否有文件,以免覆盖它)。

您确定这是“崩溃”而不是xxx未能及时启动的错误吗?迁移通常需要几秒钟的时间,而且可能比苹果为您提供的初始化时间还要长。您可能必须在后台进行迁移。

这是您就上一个问题询问的500000多条记录数据库吗?是的,但此版本仅存储34000:)我有此错误,然后我才有新版本的coredata模型,它将新字段添加到实体中。如果我使用用户预览模型,所有工作都正常。对于标签,我很抱歉。这是习惯,你有没有想过?我的一些beta测试人员遇到了这个错误。后来我离开了核心数据,但我很想知道未来的参考情况;路径=[path stringByAppendingPathComponent:kDatabaseName];path=[path stringByAppendingPathExtension:@“sqlite”];NSFileManager文件管理器=[NSFileManager defaultManager];如果(![fileManager fileExistsAtPath:path]){NSString pathResource=(NSString)[[NSBundle mainBundle]pathForResource:kDatabaseName of Type:@“sqlite”];[fileManager copyItemAtPath:pathResource toPath:path error:nil];}但也有错误。另请参阅这篇文章,它描述了轻量级迁移,这占用的时间要少得多: