У меня есть функция для загрузки некоторых изображений и строк в классе.
func uploadPhoto(serviceName:String,parameters: [String:Any]?, completionHandler: @escaping (clsResponsePostPhotoID?, NSError?) -> ()) {
Alamofire.upload(multipartFormData: { (multipartFormData:MultipartFormData) in
for (key, value) in parameters! {
if key == "id_image" {
multipartFormData.append(
value as! Data,
withName: key,
fileName: "id.jpg",
mimeType: "image/jpg"
)
} else if key == "selfie_image" {
multipartFormData.append(
value as! Data,
withName: key,
fileName: "selfie.jpg",
mimeType: "image/jpg"
)
} else {
//Data other than image
multipartFormData.append((value as! String).data(using: .utf8)!, withName: key)
}
}
}, usingThreshold: 1, to: serviceName, method: .post) { (encodingResult:SessionManager.MultipartFormDataEncodingResult) in
switch encodingResult {
case .success(let upload, _, _):
upload.responseObject{(response: DataResponse<clsResponsePostFotoID>) in
let reqLoginResponse = response.result.value
completionHandler(reqLoginResponse, nil)
}
break
case .failure(let encodingError):
print(encodingError)
// completionHandler(nil,encodingError as NSError?)
break
}
}
}
Этот код без проблем компилируется, когда я создаю автономный проект (используя Swift 4 и Alamofire 4.7.2)
Но когда я пытаюсь применить его к другому проекту, я получаю сообщение об ошибке в multipartFormData.append
(этот проект использует Swift 3 и Alamofire 4.7.0)
Я уже заменяю value as! Data
на (value as! String).data(using: .utf8)!
или (value as AnyObject).data(using: String.Encoding.utf8.rawValue)!
, но это приводит меня к другой ошибке, такой как SIGABRT
и could not cast value of type_os_dispatch data to nsstring
Вот описание ошибки
Cannot invoke 'append' with an argument list of type '(Data, withName: String, fileName: String, mimeType: String)'
и
1. Overloads for 'append' exist with these partially matching parameter lists: (Data, withName: String, fileName: String, mimeType: String), (URL, withName: String, fileName: String, mimeType: String)
В чем причина этой проблемы?И как я могу это исправить?Спасибо