我已经在下面的解决方案中收集了关于我以前的SO Question关于如何在ALamofire中使用PUT请求的解决方案。
func updateParticipant(updateType: UpdateParticipantType,
participantID: String,
completionHandler: @escaping ( (_ result:Any?, _ error:Error?) -> Void)) {
let updateParticipantURL = URL(string: "\(REGISTER_PARTICIPANT_URL)/\(participantID)")
let headers: HTTPHeaders = [
"Content-Type": "application/json",
"accept": "application/json"
]
let parameters: [String : Any] = [
"registered_flag": true,
"registration_type": 1
// "out_flag": true
]
Alamofire.request(updateParticipantURL!, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: headers).validate().responseJSON { (response) in
print(response)
switch response.result {
case .success:
print("Done")
if let success = response.result.value as? [[String : Any]]{
completionHandler(success, nil)
}
case .failure(let error):
completionHandler(nil, error)
}
}
}
我现在的问题是,如果活动参与者将使用下面的json
签出,该如何更新记录。
{
"out_flag": true
}
使用相同的API函数updateParticipant
,因为尝试插入为
let parameters: [String : Any] = [
"registered_flag": true,
"registration_type": 1
"out_flag": true
]
注册后,参与者将自动签出。这是错误的,因为在实际事件中,参与者应首先注册并签入。它签出事件是否结束。希望您能在这个问题上对我有所帮助。我是新手,对第一次遇到的事情很困惑。非常感谢。
答案 0 :(得分:0)
基于updateType
,您可以按以下方式处理参数,
首先将let
更改为var
,以便您可以基于updateType
添加/删除参数。然后使用以下通用属性初始化parameters
,
var parameters: [String : Any] = ["registered_flag": true, "registration_type": 1]
现在您可以基于updateType
添加可选参数。
if updateType == .checkOut {
parameters["out_flag"] = true
}
类似地,如果您必须发送一些与checkIn
相关的参数,您也可以用相同的方式来处理它,
if updateType == .checkIn {
parameters["someCheckInParameterName"] = true
}