xcode – 核心数据从Integer 16更改为Integer 32的属性
发布时间:2020-12-15 01:50:34 所属栏目:百科 来源:网络整理
导读:我有一个非常严重的问题.该应用程序是实时的,但不幸的是它在iOS 5上失败了,我需要发布更新. 事情是少数实体的ID列在Integer 16中,但我需要更改为Integer 32. 这显然是我的错,这个模型是很久以前创建的,它只是被重用了.令我惊讶的是(现在)在iOS 4上,核心数据
我有一个非常严重的问题.该应用程序是实时的,但不幸的是它在iOS 5上失败了,我需要发布更新.
事情是少数实体的ID列在Integer 16中,但我需要更改为Integer 32. 这显然是我的错,这个模型是很久以前创建的,它只是被重用了.令我惊讶的是(现在)在iOS 4上,核心数据中的整数16可以很容易地保持数字大到500 000(错误?),但它现在不能正常工作 – 它给了我无效的数字. 应用程序是实时的,它是成功的,Core Data也用于保持用户的分数,成就等等,我不想删除,迫使他们重新安装应用程序.简单地将不同实体中的十个属性从Integer 16更改为Integer 32的最佳方法是什么? 当然,我知道这些属性的名称和实体. 如果我只是更改xcdatamodeld文件中这些属性的Type列,那么对于新用户来说,它会起作用,但现有用户的文档文件夹中已经有sqlite文件.我相信我需要以某种方式更改持久性存储协调器. 而且你对性能有什么看法,有大约10个属性,新闻要从16改为32,但Core Data在通常情况下有超过10万个对象. 问候 解决方法
在NSPersistentStore中打开NSMigratePersistentStoresAutomaticallyOption’和’NSInferMappingModelAutomaticallyOption,然后使用更改创建模型的第二个版本.只进行整数更改以保持迁移简单.这将允许安装升级的用户从损坏的模型迁移到更正的模型.
注意:这必须是自动迁移;使用映射模型的手动迁移将不起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |