как добавить String Array для формирования данных - PullRequest
0 голосов
/ 11 июля 2019

Я хочу отправить файл с другими параметрами. Я смог отправить это с помощью alamofire upload.but вопрос в моих параметрах, у меня есть строковые массивы. Я не знаю, как добавить их в данные формы.

let parameters = ["comments":comments!,
                      "title":title!,
                      "publish_date":publish_date,
                      "expiry_date":expiry_date,
                      "visibility[staff]":"N",
                       "visibility[students][Forms]":["1","2"]

        ]
        ]
        as [String : Any]
    let headers = [

        "Content-type": "multipart/form-data"
    ]

    let URL_head = try! URLRequest(url: STAFF_SERVICE_URL + "staff/2/news?api_key=\(api_key)", method: .post, headers: headers)


    Alamofire.upload(multipartFormData: { (multipartFormData) in


        if let url = fileUrl{
            multipartFormData.append(url, withName: "file")
        }
        for (key, value) in parameters {
   multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)

        }
        print(multipartFormData)
    }, with:URL_head)
    { (result) in
        switch result {
        case .success(let upload, _, _):


            upload.responseJSON { response in
                NSLog("Upload  response \(response)")
                if let jsonValue = response.result.value {
                    _ = JSON(jsonValue)
                    completion(true ,"Suucess")


                }else{
                    completion(false ,"Error")
                }

            }

        case .failure(let encodingError):
            print("fail \(encodingError)")
            NSLog("Error \(result)")
            completion(false ,"No Internet")
        }

    }
}

Я пытался кодировать массив отдельно, как это. Но не сработало.

 let data = try! JSONSerialization.data(withJSONObject: array, 
 options:.prettyPrinted)
 let jsonString = String(data: data, encoding: .utf8)!

1 Ответ

0 голосов
/ 11 июля 2019

Вы можете напрямую передать объект данных, который вам не нужно преобразовывать, обратно в строку

например

 for (key, value) in parameters {
        if checkIfItIsArray {
            // Make sure you handle error here
            let data = try! JSONSerialization.data(withJSONObject: array,  options:nil)
           multipartFormData.append(data, withName: key as String)

        } else {
          multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
          }

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