首页 > 解决方案 > Swift 5.3,如何安全地分配“Int”类型的值?键入“Int16”?

问题描述

使用 Swift 5.3 将一些 JSON 导入 CoreData 时遇到问题

这是缩减的结构:

struct MyStruct: Decodable {
    let code: Int?
}

CoreData 类属性:

# MyClass
@NSManaged public var code: Int16
let newItem = MyClass(context: moc)
newItem.code = structItem.code 
// cannot assign value of type 'Int?' to type 'Int16'

或者

if structItem.code != nil {
  newItem.code = structItem.code as! Int16
  // Cast from 'Int?' to unrelated type 'Int16' always fails
}

我正在寻找一种将此类项目导入为 Int16 的安全方法,JSON 数据源不受我的直接控制,并且可能会发生变化。

免责声明:我是 Swift 的新手,一直在推迟从 Objective-C 迁移,但现在似乎是个好时机。

提前致谢!

标签: iosswiftcore-data

解决方案


尝试这个:

newItem.code = Int16(structItem.code)

代替:

newItem.code = structItem.code as! Int16

推荐阅读