加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iOS 7 – CoreData Migration – Xcode 5

发布时间:2020-12-14 17:40:13 所属栏目:百科 来源:网络整理
导读:我在执行CoreData Migration时遇到了一个非常奇怪的问题. 基本上,我有2个实体,其中一个我添加一个属性,另一个,我将属性类型从NSString更改为NSArray(可转换). 到目前为止,它非常好,运行良好,在迁移后进行了测试并且数据完整性完好无损. 如果我在Xcode 5上运
我在执行CoreData Migration时遇到了一个非常奇怪的问题.

基本上,我有2个实体,其中一个我添加一个属性,另一个,我将属性类型从NSString更改为NSArray(可转换).
到目前为止,它非常好,运行良好,在迁移后进行了测试并且数据完整性完好无损.

如果我在Xcode 5上运行完全相同的代码(我不知道它是否与iOS SDK 7.0或Xcode 5相关),则会出现问题,但迁移会运行并破坏数据.

我最终创建了一个简单的项目来演示正在发生的事情.
https://dl.dropboxusercontent.com/u/1393279/CoreDataMigration.zip

重现的步骤是:
– 在Xcode 5(iOS SDK 7.0)上,您可以使用模拟器 –

1 – 打开项目“BeforeMigration”并执行.查看创建的日志和数据,到目前为止没问题;

2 – 停止项目;

3 – 打开项目“AfterMigration”,构建并运行.

4 – 看到迁移已执行,但数据已损坏:

2013-11-13 12:22:29.778 CoreDataMigration[7223:70b] CoreData: error:
exception during fetchRowForObjectID: * -[NSKeyedUnarchiver
initForReadingWithData:]: incomprehensible archive (0x43,0x32,0x0,
0x0,0x0) with userInfo of (null) 2013-11-13
12:22:29.782 CoreDataMigration[7223:70b]
Terminating app due to
uncaught exception ‘NSInvalidArgumentException’,reason: ‘**
-[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x43,0x0)’

AFAIK,难以理解的存档意味着CoreData上的数据损坏.

很难理解的是,之前的代码完全相同,因此,如果它是一个逻辑问题,它应该发生在Xcode 4.5上.我找了CoreData Diffs,但没找到任何相关的东西.

如果有人知道可能是什么问题,我将不胜感激.
谢谢.

解决方法

在iOS 7中,Core Data SQLite存储的默认日记模式已更改为预写日志(WAL)以提高可靠性,性能和并发性.

问题是我没有使用核心数据移动-wal文件.修复它的一种方法是删除-wal使用:

NSDictionary *options = @{NSSQLitePragmasOption:@{@"journal_mode":@"DELETE"}};

或者移动-wal:

- (NSPersistentStore *)migratePersistentStore:(NSPersistentStore *)store toURL:(NSURL *)URL options:(NSDictionary *)options withType:(NSString *)storeType error:(NSError **)error

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读