首页 > 解决方案 > 使用不需要的对象初始化结构对象

问题描述

我有以下教室结构

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.

标签: swiftstruct

解决方案


你需要让你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
    }
}

推荐阅读