如何附加字符串数组以形成数据



我想发送带有其他参数的文件。我能够使用 alamofire 上传发送它,但问题是在我的参数中我有字符串数组。我不知道如何将它们附加到表单数据中。

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)!

可以直接传递不需要转换回字符串的数据对象

例如

 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)
          }
    }

最新更新