ios - 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 迁移,但现在似乎是个好时机。
提前致谢!
解决方案
尝试这个:
newItem.code = Int16(structItem.code)
代替:
newItem.code = structItem.code as! Int16
推荐阅读
- scala - Scala:如何在案例类构造函数中使用类型作为一等值?
- java - 试图在一个小游戏JAVA中缩短这个if-else语句
- javascript - 如何解决具有两个值的承诺?
- android - 服务器(AndroidWebServer)无法从 PC 访问
- entity-framework-core - 如何在 Auto-mapper ProjectTo 中处理空值
- php - 我可以从另一个 cron 作业执行的 php 脚本修改 cron 作业的计划吗?
- angular - 如何向控制器发布值以接收数据以查看 Angular 5+?
- regex - 在字符串之后拉取值
- node.js - Node-Postgres:将事务语句合并为一个以提高速度?
- java - Scala:线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/log4j/LogManager