xcode - Core Data Migration 自定义迁移
问题描述
我正在尝试按照此处找到的说明进行自定义迁移,更改属性名称和类型,但它似乎没有运行映射。
旧模型有一个属性名称“roundDrill”,它是一个布尔值。新模型删除了这个,并添加了一个名为“drillType”的新属性,它是一个字符串。
我有一个名为“V2V3.xcmapingmodel”的映射模型,其中实体有一个自定义策略集“Diamond_Painting_Logbok.V2V3”。新属性的值为 "FUNCTION($entityPolicy, "roundToType:" , $source.roundDrill)"
在“V2V3.swift”中,我有以下代码
import UIKit
import CoreData
class V2V3: NSEntityMigrationPolicy {
func roundToType(isRound:NSNumber) -> String {
NSLog("Round: \(isRound)")
if isRound.boolValue {
return "Round"
} else {
return "Square"
}
}
}
当我打印出 DrillType 的值时,我得到了 nil。该函数上的 NSLog 根本没有被打印出来。如果我更改自定义策略名称,它不会给我一个错误,所以看起来好像它被完全忽略了
解决方案
所以我在与苹果交谈后找到了问题的原因,因为我没有 V1 到 V2 的模型,只有 V2 到 V3。没有它,所有的映射模型都会被忽略,
他们还说映射运行不正确,因为它与“发送到实例的无法识别的选择器”崩溃,即使它是正确的,这是一个错误。
他们建议使用 createDestinationInstances 作为解决方法,因此需要弄清楚
推荐阅读
- javascript - 用 Jest 测试 ES6 类会抛出“不是构造函数”错误
- mongodb - 无法使用 inMemory 存储引擎在 3 节点副本集中创建用户和分配角色 - MongoDB
- c - 在 C 中打印字符串
- laravel - Laravel Mix 构建成功但没有变化
- java - 套接字编程 - 服务器是否对请求进行排队?
- mysql - 如何计算 varchar 列中的不同值
- javascript - 在momentjs中每5天查找连续日期
- kubernetes - 你如何连接两个 Istio 集群?
- java - 使用 Heroku 临时文件系统作为 Ehcache 磁盘存储
- asp.net - 如果解决方案文件放错地方并且没有解决方案文件的备份,是否有任何方法/工具可以将构建文件更改为 asp.net 中的解决方案文件?