Как использовать запрос PUT в Alamofire

Я новичок в Swift, и я также пытаюсь использовать Alamofire для вызова данных из API. Я весьма озадачен тем, как я буду использовать запрос PUT для обновления данных. Я прочитал некоторые решения здесь, в SO, но я не знаю, как я буду применять их в своем приложении. Я создаю приложение Event, сценарий должен быть таким: когда участник нажимает кнопку Отметиться, он обновляет registered_flag до true, что означает, что участник будет помечен как Зарегистрированный и кнопка изменится на Check Out. Я действительно не знаю, правильна ли моя служба API или нет. Надеюсь, вы могли бы мне помочь. Большое спасибо.

JSON участника мероприятия Где в register_flag следует обновить один раз checkInOutButton

{
    "event_name": "Q & A",
    "event_participants": [
        {
            "participant_id": "70984656-92bc-4c36-9314-2c741f068523",
            "employee_number": null,
            "last_name": "Surname",
            "first_name": "FirstName",
            "middle_name": null,
            "display_name": "Surname, FirstName ",
            "department_name": "Medical Informatics",
            "position_name": "Application Developer",
            "registered_flag": true,
            "registered_datetime": "2018-09-13T08:54:40.150",
            "registration_type": 1,
            "delete_flag": false,
            "manual_reg_flag": false,
            "out_flag": false,
            "out_datetime": null,
            "classification": 6,
            "others": "Guest"
          }
        }

JSON для обновления для регистрации

{
   "registered_flag": true,
   "registration_type": 1
}

тип обновления

enum UpdateParticipantType: String {

case checkIn = "Check In"
case checkOut = "Check Out"
}

APIService для UpdateParticipant

 func updateParticipant(updateType: UpdateParticipantType,
                       participantID: String,
                       successBlock: @escaping ([Attendee]) -> Void,
                       failureBlock: @escaping (Error) -> Void)

{

   let updateParticipantURL = URL(string: "\(REGISTER_PARTICIPANT_URL)/\(updateType)/\(participantID)")

    Alamofire.request(updateParticipantURL!, method: .put).responseJSON { (response) in
        print(response)

        if let error = response.error
        {
            failureBlock(error)
            print(error)
            return
        }

        if let jsonArray = response.result.value as? [[String : Any]] {
            for anItem in jsonArray {
                if let eventparticipants = anItem["event_participants"] as? [[String : Any]] {
                    var extractedAttendees = [Attendee]()
                    for participants in eventparticipants{
                        let success = Attendee.init(JSON: participants)
                        extractedAttendees.append(success!)
                    }
                    successBlock(extractedAttendees)
                }
            }
        }
    }
}

person Titus    schedule 13.09.2018    source источник
comment
Вам нужно отправить JSON to update for check in на сервер через запрос на размещение?   -  person inokey    schedule 13.09.2018
comment
@inokey yes по умолчанию registered_flag : false в json, и как только пользователь нажмет кнопку регистрации, registered_flag станет истинным.   -  person Titus    schedule 13.09.2018
comment
вам нужно передать это в свой аргумент .request в parameters   -  person inokey    schedule 13.09.2018
comment
@inokey у вас есть какие-нибудь ссылки на код, чтобы я мог легко понять это?   -  person Titus    schedule 13.09.2018
comment
Добавлен пример в качестве ответа   -  person inokey    schedule 13.09.2018


Ответы (1)


Согласно документации Alamofire:

let parameters: Parameters = [
    "foo": "bar",
    "baz": ["a", 1],
    "qux": [
        "x": 1,
        "y": 2,
        "z": 3
    ]
 ]

Alamofire.request("https://httpbin.org/post", method: .post, parameters: parameters)

Для данного json

 {
    "registered_flag": true,
    "registration_type": 1
 }

let parameters: Parameters = [
     "registered_flag": true
     "registration_type": 1
 ]
person inokey    schedule 13.09.2018
comment
Спасибо. Я просто добавлю эти параметры в свои коды? Никаких изменений в моем jsonArray ? - person Titus; 14.09.2018
comment
Никаких изменений в вашем коде сериализации. Это связано с получением ответа от сервера и отправкой параметров на сервер. Так что никаких изменений. - person inokey; 14.09.2018