Как обновить JSON с помощью того же API-запроса функции .PUT в Alamofire - PullRequest
0 голосов
/ 24 сентября 2018

Я уже собрал решение относительно моего предыдущего SO вопроса относительно Как использовать запрос PUT в ALamofire с этим решением ниже.

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
    ]

Участник автоматически извлекается, после регистрации.Что не так, потому что в фактическом событии участник должен сначала зарегистрироваться и зарегистрироваться. Он проверяет, закончилось ли событие.Надеюсь, вы могли бы помочь мне в этом вопросе.Я новичок в быстрой и довольно озадаченный в вещах, с которыми я столкнулся впервые.Большое вам спасибо.

1 Ответ

0 голосов
/ 24 сентября 2018

Основываясь на 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...