swift - 使用不需要的对象初始化结构对象
问题描述
我有以下教室结构
struct ClassRoom: Codable {
let name: String
let classId: String
let date: String
}
当我形成一个ClassRoom
对象时,我不需要date
对象。// 这里不需要日期对象!,
let classRoom = ClassRoom(name: "Math", classId: "12343")
Missing argument for parameter 'date' in call
但是date
当我解码ClassRoom
.
解决方案
你需要让你date
成为可选的。
两种方法:
您可以继续使用编译器合成的成员初始化程序。要将其nil
用作默认值,您需要使date
变量可变:
struct ClassRoom: Codable {
let name: String
let classId: String
var date: String? = nil
}
如果你想让它保持可变,你必须添加你自己的初始化器,并带有一个默认参数,如下所示:
struct ClassRoom: Codable {
let name: String
let classId: String
let date: String?
init(name: String, classId: String, date: String? = nil) {
self.name = name
self.classId = classId
self.date = date
}
}
推荐阅读
- html - 隐藏后保持复选框选中
- android - 当 TexInput 聚焦时如何处理后退按钮
- python - 如何删除数据框中完成率较低的某些特征(Python)
- sql-server - 获取一年前的今天日期
- python-3.x - python tkinter在打开文件时更新标签的内容
- asp.net-core-2.1 - 在 asp.net core 2.1 中的服务器端捕获会话超时
- r - 尝试通过“lines”命令将断点行从 strucchange 添加到绘图
- firebase - 在 firebase 中使用多个数据库是否会使它们中的每一个都有自己的用途?
- datatable - Flutter DataTable - 点击行
- android-studio-3.0 - 当我滚动 recyclerview 时,我发现了一个问题