Невозможно вызвать 'append' со списком аргументов типа '(Data, withName: String, fileName: String, mimeType: String)' - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть функция для загрузки некоторых изображений и строк в классе.

 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)

В чем причина этой проблемы?И как я могу это исправить?Спасибо

...