2016-10-26 3 views
0

Я пытаюсь преобразовать мою программу загрузки изображений. но в застое с произошедшим несколько вопросов.
Мне нужны какие-либо советы по этой проблеме.
ниже предварительно код с Alamofire 3.Невозможно преобразовать Alamofire 3 в Alamofire 4, с некоторыми сообщениями об ошибках

Alamofire.upload(
     .POST, 
     "https://uploadURL", 
     multipartFormData: { multipartFormData in 
      multipartFormData.appendBodyPart(data: imageData!, name: "image", fileName: nowString + "To" + receiverString! + ".jpg", mimeType: "image/jpg") 
      for (key, value) in parameters { 
       multipartFormData.appendBodyPart(data: value!.data(using: String.Encoding.utf8)!, name: key) 
      } 
     }, 
     encodingCompletion: { encodingResult in 
      switch encodingResult { 
      case .success(let upload, _, _): 
       upload.responseString(completionHandler: { (response) in 
        debugPrint(response) 
       }) 

      case .failure(let encodingError): 
       print(encodingError) 
      } 
     } 
    ) 

ниже является текущий код, который пишет для Alamofire 4.0.1 и быстры 3. (неполный)

Alamofire.upload(
     multipartFormData: { multipartFormData in 
      multipartFormData.append(data: imageData!, name: "image", fileName: nowString + "To" + receiverString! + ".jpg", mimeType: "image/jpg") 
      for (key, value) in parameters { 
       multipartFormData.append(data: value!.data(using: String.Encoding.utf8)!, name: key) 
      } 
     },to:"https://uploadURL", 
     encodingCompletion: { encodingResult in 
      switch encodingResult { 
      case .success(let upload, _, _): 
       upload.responseString(completionHandler: { (response) in 
        debugPrint(response) 
       }) 

      case .failure(let encodingError): 
       print(encodingError) 
      } 
     } 
    ) 

вокруг " multipartFormData "генерирует сообщение об ошибке thees.

Перегрузки для 'добавить' существует с этими частично совпадающими параметрами списками: (Data, withName: String, FileName: String, тип_mime: String), (URL, withName: String, FileName: String, тип_mime: String)

Внести 'Any' в 'AnyObject' или использовать 'as!' чтобы заставить опущенные к более определенному типу для доступа пользователей

Я ищу решение этой проблемы ...

ответ

0

Дописывать метод подписи изменилась. Вы используете следующее:

append(data:name:fileName:mimeType:) 

Они переименовали name аргумент withName быть совместима с рекомендациями Swift 3 дизайна API. Поэтому вы должны использовать:

append(_:withName:fileName:mimeType:) 

Изменить код, как показано ниже, и все должно работать.

Alamofire.upload(
    multipartFormData: { multipartFormData in 
     multipartFormData.append(imageData!, withName: "image", fileName: nowString + "To" + receiverString! + ".jpg", mimeType: "image/jpg") 
     for (key, value) in parameters { 
      multipartFormData.append(data: value!.data(using: String.Encoding.utf8)!, name: key) 
     } 
    },to:"https://uploadURL", 
     encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .success(let upload, _, _): 
      upload.responseString(completionHandler: { (response) in 
       debugPrint(response) 
      }) 

     case .failure(let encodingError): 
      print(encodingError) 
     } 
    } 
) 

Примечание: Единственное, что я изменил это name аргумент, так что это withName вместо этого. И я удалил лейбл data.

+0

Благодарю вас за советы. после изменения выше, все равно получите это сообщение об ошибке -> Ярлыки аргументов '(data :, withName :, fileName :, mimeType :)' не соответствуют никаким доступным перегрузкам –

+0

Я пропустил деталь, они также изменили аргумент данных. Вы не должны явно указывать его в своем вызове. Я обновил исправленный код для вас. – donnywals

+0

благодарим вас за кодирование! исправлена ​​ошибка в методах Argument :), но, по-прежнему не исправлена ​​эта ошибка -> «Невозможно принудительно развернуть значение необязательного типа« Any »вокруг« multipartFormData.append »(data: value! .data (используя: String.Encoding.utf8)) !, name: key) " –

Смежные вопросы