【问题标题】:iPhone - Core Data crash on migrationiPhone - 迁移时核心数据崩溃
【发布时间】:2010-12-24 20:09:29
【问题描述】:

我有问题,当我从 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

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

【问题讨论】:

  • 这是您询问的关于stackoverflow.com/questions/1848901/…this previous question的500,000+记录数据库吗?
  • 是的,但是这个版本只存储34000 :)
  • 只有当我有新版本的 coredata 模型时,我才会遇到此错误,该模型将新字段添加到实体。如果我用户预览模型一切正常。
  • 对标签感到抱歉。这是习惯。
  • 你有没有想过这个问题?我的一些 beta 测试人员遇到了这个错误。此后我离开了 Core Data,但很想知道发生了什么以供将来参考。

标签: iphone sqlite core-data


【解决方案1】:

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

【讨论】:

  • 我尝试这样做 NSString path = [self applicationDocumentsDirectory]; path = [路径 stringByAppendingPathComponent:kDatabaseName]; path = [path stringByAppendingPathExtension:@"sqlite"]; NSFileManager fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:path]) { NSString pathResource = (NSString)[[NSBundle mainBundle] pathForResource:kDatabaseName ofType:@"sqlite"]; [fileManager copyItemAtPath:pathResource toPath:path error:nil]; } 但也有错误。
【解决方案2】:

您确定这是“崩溃”而不是 xxx failed to launch in time 错误吗?迁移通常需要几秒钟,并且可能比 Apple 为您提供的初始化时间更长。您可能必须在后台迁移。

【讨论】:

猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
相关资源
最近更新 更多