ios - 如何在 Swift iOS 中使用 Struct Modal 类中的虚拟值创建数组
问题描述
我正在从我的服务器获取 JSON。为了解析 JSON,我使用解码器并转换模态类对象中的数据。
这是我的解码器模态类:
struct SyncModelRecord : Codable {
var date : String
var shakeState : Int
}
class SyncModel {
var date : Date
var shakeState : Int
init?(record: SyncModelRecord) {
guard let secondsFrom1970 = Double(record.date) else {
return nil
}
date = Date(timeIntervalSince1970: secondsFrom1970)
shakeState = record.shakeState
}
}
我的解析工作正常。
我的问题是现在我必须制作一个“SyncModelRecord”虚拟数组,例如:
var dummySyncModelRecordArray = [SyncModelRecord]()
var syncModelRecord : SyncModelRecord?
syncModelRecord?.shakeState = 0
syncModelRecord?.date = String(Int64(syncTimestamp!))
dummySyncModelRecordArray.append(syncModelRecord!)
但这不起作用。它因错误而崩溃(请参阅下面附加的错误屏幕截图)。
请给我提意见。
解决方案
您强制解开一个值为 nil 的值syncModelRecord
。
声明时需要实例化它。
var syncModelRecord: SyncModelRecord? = SyncModelRecord()
或者,更好的是,不要将它声明为可选的,因为你知道它不会是nil
(当然,如果实例化正确):
var syncModelRecord = SyncModelRecord()
推荐阅读
- typescript - 为什么 TypeScript 在 strictNullChecks 下允许在三元内赋值?
- c - 使用指针在当前记录下方添加新记录
- ocaml - ocaml:为什么特定类型不匹配'签名
- javafx - MVC 中的 JavaFX 更改场景(视图)
- sapui5 - 为什么模型上的刷新不起作用?
- javascript - 云函数返回 NULL
- spring - Spring + Eureka Connection 拒绝注册服务
- mysql - 如何将不同表中的数据添加到 mySQL 中的一个新表中?
- kubernetes - 如何获取 Kubernetes pod 的状态历史/沿袭
- javascript - Webpack 包含用于动态导入的目录