自定义迁移策略,用于更改无效的属性类型

时间:2017-08-10 11:35:57

标签: ios swift core-data-migration

我想应用自定义迁移策略来更改给定核心数据实体的属性类型。在我的特定情况下,我有一个名为Location的实体,其共同属性为latitudelongitude。在我的数据模型的第1版中,两个属性都是String类型。在版本2中,我将类型更改为Double

接下来,我创建了一个包含实体映射LocationToLocation的映射模型。在相应的值表达式中,我添加了FUNCTION($entityPolicy, "stringToDoubleWithString:" , $source.latitude)。作为自定义策略,我已将MyApp.LocationToLocationMigrationPolicy1to2添加到映射模型中。

相应的自定义迁移策略文件如下所示:

import Foundation
import CoreData

class LocationToLocationMigrationPolicy1to2: NSEntityMigrationPolicy {
    func stringToDouble(value: String?) -> Double {
        return Double(value ?? "") ?? 0.0
    }
}

但是,在运行我的应用程序时,我收到以下错误消息:

  

MyApp.sqlite选项:{       NSInferMappingModelAutomaticallyOption = 1;       NSMigratePersistentStoresAutomaticallyOption = 1; } ...返回错误错误Domain = NSCocoaErrorDomain Code = 134140“(null)”   [...]   错误域= NSCocoaErrorDomain代码= 134190“(null)”   UserInfo = {entity = Location,property = altitude,reason = Source and   目标属性类型不兼容}]

我花了几个小时在堆栈溢出和互联网上搜索解决方案。

有人对我有什么建议吗?

非常感谢!

0 个答案:

没有答案