Swift 只需使用结构中的一个属性
我正在尝试构建一个AddPeople对象来发布到端点。有人接受或拒绝这个请求。以下实现适用于Accept工作流 现在,我想知道如何在以下简化版本的实现中集成拒绝工作流。info对象只能有let userInfo=InformationAccept:请接受他或let userInfo=InformationReject:请接受他 我目前的执行情况如下:Swift 只需使用结构中的一个属性,swift,Swift,我正在尝试构建一个AddPeople对象来发布到端点。有人接受或拒绝这个请求。以下实现适用于Accept工作流 现在,我想知道如何在以下简化版本的实现中集成拒绝工作流。info对象只能有let userInfo=InformationAccept:请接受他或let userInfo=InformationReject:请接受他 我目前的执行情况如下: struct AddPeople: Codable { let id: String let info: Information
struct AddPeople: Codable {
let id: String
let info: Information
}
struct Information: Codable {
let Accept: String
//let Reject: String ?????
}
if isAcceptBtnClicked{
let userInfo = Information(Accept:"Please accept him")
}else
{
// let userInfo = Information(Reject:"Please reject him") ????
}
let addPeople = AddPeople(id : userId, info: userInfo)
您可以尝试使用选项:
struct Information: Codable {
let accept: String?
let reject: String?
init(accept: String? = nil, reject: String? = nil) {
self.accept = accept
self.reject = reject
}
}
然后,您可以通过以下任一方式调用您的信息:
let userInfoAccept = Information(accept: "Please accept him")
let userInfoReject = Information(reject: "Please reject him")
请注意,将信息编码为JSON时,将跳过nil属性:
let data = try! JSONEncoder().encode(userInfoReject)
let jsonStr = String(data: data, encoding: .utf8)!
print(jsonStr) // prints {"reject":"Please reject him"}
你是否建议如下:让userInfo=InformationAccept:请接受他,拒绝:nil???@casillas我误解了你的问题。查看更新后的答案。但是当前的方法仍然将Reject作为参数发送,但它是nil。我只想发送其中一个,要么接受,要么拒绝。因为我正在形成一个要发布的json数据。端点只检查接受或拒绝。@casillas我看不出这个问题。我添加了编码代码-它只编码非nil属性。