我是一个分配给巨型项目的新手。我发现了一个需要修复的小错误但我不确切知道如何。
好在这里。 Xcode的核心数据模型中的issueNumber
属性设置为Integer 64
。我需要将其更改为String
,因此错误将被修复,但是当我将属性类型从Integer 64
更改为String
时,我的应用程序会崩溃,并且会以如下所示的巨大输出崩溃:< / p>
CoreData:错误:-addPersistentStoreWithType:SQLite 配置:(空) 网址:文件:///用户/苹果/库/开发商/ CoreSimulator /设备/ 67D17D00-2AF8-4BC4-ABB7-091C95D02F35 /数据/集装箱/数据/应用/ B94B1310-4A63-4F91-AE7B-5F625697B3E2 /库/ iMagDocument .sqlite 选项:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; NSSQLitePragmasOption = { 同步= OFF; }; } ...返回错误错误Domain = NSCocoaErrorDomain Code = 134130&#34;操作无法完成。 (可可错误 134130)&#34。 UserInfo = 0x7f405ef0 {URL = file:/// Users / Apple / Library / Developer / CoreSimulator / Devices / 67D17D00-2AF8-4BC4-ABB7-091C95D02F35 / data / Containers / Data / Application / B94B1310-4A63-4F91-AE7B-5F625697B3E2 /Library/iMagDocument.sqlite, 元数据= { NSPersistenceFrameworkVersion = 519; NSStoreModelVersionHashes = {
它会继续......这就是我所做的:我将数据模型中的类型从Integer 64更改为String:
好的,我做错了什么?必须有一些我明显遗漏的东西,所以每次更改属性类型时应用程序都会崩溃。
答案 0 :(得分:1)
这是一个非常复杂的问题。您不能简单地更改属性的数据类型。您看到的错误意味着核心数据无法将您的数据迁移到新版本。
1)改为创建新的模型版本并在那里设置新的数据类型。见https://developer.apple.com/library/ios/recipes/xcode_help-core_data_modeling_tool/Articles/creating_new_version.html
2)设置要使用的新模型版本。 https://developer.apple.com/library/ios/recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html
3)您必须使用选项NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption添加您的持久存储。
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: [NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption: [NSNumber numberWithBool:YES]
};
答案 1 :(得分:0)
这是正确的方法:
- (NSDictionary *)persistentStoreOptions {
return @{NSInferMappingModelAutomaticallyOption: @YES,
NSMigratePersistentStoresAutomaticallyOption: @YES,
NSSQLitePragmasOption: @{@"synchronous": @"OFF"}};
}