【发布时间】:2020-01-04 21:34:23
【问题描述】:
我有一个 iOS 应用程序,它有一个用于新闻的核心数据数据库。每个新闻实体都有一个 ID 属性,它应该是一个 Integer,但到目前为止,它是一个 String,我想将其更改为 Integer。
到目前为止我尝试过的步骤:
- 创建了新的模型版本并将 ID 属性的类型从 String 更改为 Int 32
- 创建了一个映射模型,其中 ID 具有值表达式 FUNCTION($entityPolicy, "idToInt:" , $source.id)
- 定义了 NSEntityMigrationPolicy 的子类,其中我定义了上面提到的 idToInt 函数:
import CoreData
class ModelV2MigrationPolicy: NSEntityMigrationPolicy {
func idToInt(old: String) -> Int32 {
return Int32(old)!
}
}
- 通过将 Custom Policy 设置为 myapp.ModelV2MigrationPolicy 将迁移策略链接到映射模型
但如果我现在尝试运行我的应用程序,它会崩溃并出现以下错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用,原因:'-[myapp.ModelV2MigrationPolicy idToInt]:无法识别的选择器已发送到实例
任何想法如何解决这个问题?
【问题讨论】: