0

我是一个被分配到巨大项目的新手。我发现了一个需要修复的小错误,但我不知道如何修复。

好的,就是这样。issueNumberXcode 的核心数据模型中的属性设置为Integer 64. 我需要将其更改为String,因此该错误将得到修复,但是当我将属性类型从 更改Integer 64为 时String,我的应用程序崩溃并出现如下所示的巨大输出:

CoreData:错误:-addPersistentStoreWithType:SQLite 配置:(空) 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 选项:{ NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; NSSQLitePragmasOption = { 同步 = OFF; }; } ...返回错误错误域=NSCocoaErrorDomain代码=134130“操作无法完成。(可可错误134130。)”用户信息=0x7f405ef0 {URL=file:///Users/Apple/Library/Developer/CoreSimulator/设备/67D17D00-2AF8-4BC4-ABB7-091C95D02F35/data/Containers/Data/Application/B94B1310-4A63-4F91-AE7B-5F625697B3E2/Library/iMagDocument.sqlite, 元数据={ NSPersistenceFrameworkVersion = 519; NSStoreModelVersionHashes = {

它去去去......这就是我所做的:我将数据模型中的类型从整数 64 更改为字符串:

好的,我做错了什么?肯定有一些我明显遗漏的东西,所以每次我更改属性类型时应用程序都会崩溃。

4

2 回答 2

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]
                          };
于 2015-06-10T15:03:24.500 回答
0

这是正确的方法:

- (NSDictionary *)persistentStoreOptions {
    return @{NSInferMappingModelAutomaticallyOption: @YES,
             NSMigratePersistentStoresAutomaticallyOption: @YES,
             NSSQLitePragmasOption: @{@"synchronous": @"OFF"}};
}
于 2015-06-11T12:53:20.573 回答