Не удается обновить данные в API с помощью запроса .PUT в Alamofire - PullRequest
0 голосов
/ 14 сентября 2018

Я создаю приложение Event, в котором пользователь должен нажать Кнопка регистрации , чтобы зарегистрироваться на событие. registered_flag : false будет true и registered_type: 0 будет 1, как только пользователь нажмет кнопку. Но когда я собирал и запускал приложение, появилась ошибка, которая говорит

responseSerializationFailed (Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed (ошибка Domain = NSCocoaErrorDomain Code = 3840 "Недопустимое значение вокруг символа 0. "UserInfo = {NSDebugDescription = Недопустимое значение вокруг символа 0.})).

Я не совсем уверен относительно содержания моих кодов в моем APIService. Надеюсь, кто-нибудь поможет мне исправить мои коды, чтобы я мог успешно построить и запустить свое приложение. Большое вам спасибо.

приложение / JSON, которое необходимо обновить, которое внутри event_participant

{
   "registered_flag": false,
    "registration_type": 0
}

event_participant

"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": "Department",
        "position_name": "Developer",
        "registered_flag": false,
        "registered_datetime": "2018-09-13T08:54:40.150",
        "registration_type": 0,
        "delete_flag": false,
        "manual_reg_flag": false,
        "out_flag": false,
        "out_datetime": null,
        "classification": 6,
        "others": "Guest"
      }
    }

API Сервис с использованием запроса PUT в Alamofire

func updateParticipant(updateType: UpdateParticipantType,
                       participantID: String,
                       completionHandler: @escaping(([Attendee]?, Error?) -> Void)) {

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

    let headers: HTTPHeaders = [
        "Content-Type": "application/json"
    ]

    let parameters: Parameters = [
        "registered_flag": false,
        "registration_type": 0
    ]

    Alamofire.request(updateParticipantURL!, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in

        switch response.result {
        case .success:
            print("Done")

            if let jsonArray = response.result.value as? [[String : Any]] {
                for anItem in jsonArray {
                    if let eventparticipant = anItem["event_participants"] as? [[String : Any]] {
                        var extractedAttendee = [Attendee]()
                        for participant in eventparticipant{
                            print(participant)
                            let success = Attendee.init(JSON: participant)
                            extractedAttendee.append(success!)
                        }
                        completionHandler(extractedAttendee, nil)
                    }
                }
            }

        case .failure(let error):
            completionHandler(nil, error)
        }
    }
}

Структура для участников

struct Attendee: Decodable {

let id: String
let employeeNumber: String?
let lastName: String
let firstName: String
let middleName: String
let displayName: String
let department: String
let position: String
let registeredFlag: Bool
let registeredDateTime: Date?
let registrationType: Int
let deleteFlag: Bool
let manualFlag: Bool
let outFlag: Bool
let outDateTime: Date?
let classification: Int?
let others: String?

ответ почтальона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...