2016-09-21 80 views
2

我更新了Alamofire到4.0为迅速3(在我使用AFNetworking之前)。分段错误:11,当使用Alamofire.upload

我的代码:

func uploadImage(_ image: Data, withURLRequrest urlRequest: URLRequestConvertible, responseCallback: ((NetworkResponse) ->())? = nil) { 


    Alamofire.upload(multipartFormData: { multipartFormData in 

     _ = multipartFormData.appendBodyPart(data: image, name: "imagefile", fileName: "image.jpg", mimeType: "image/jpeg") 

     }, with: urlRequest) { encodingResult in 
      switch encodingResult { 
      case .success(let upload, _, _): 
       upload.responseJSON { response in 
        switch response.result { 
        case .success(let json): 

         if let responseCallback = responseCallback { 
          responseCallback(.success(Response(response: json))) 
         } 

        case .failure(_): break 

        } 

       } 
      case .failure(let encodingError): break 
      } 

    } 

} 

我得到一个编译错误:

Command failed due to signal: Segmentation fault: 11.

,是细节我得到了很多的垃圾道和堆栈跟踪(而不是从我的代码)

并最终:

  1. While emitting SIL for 'uploadImage' at */Network/APIManager.swift:64:5

这在指出上面的功能。

有什么建议吗? 任何其他REST请求正在工作(不是多部分)。

谢谢

回答

2

multipartFormData的API已经改变。

append方法现在看起来是这样(请注意,它不返回任何值):

func append(_ data: Data, withName name: String, fileName: String, mimeType: String)

下面是来自Alamofire的README的例子:

Alamofire.upload(
    multipartFormData: { multipartFormData in 
     multipartFormData.append(unicornImageURL, withName: "unicorn") 
     multipartFormData.append(rainbowImageURL, withName: "rainbow") 
    }, 
    to: "https://httpbin.org/post", 
    encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .success(let upload, _, _): 
      upload.responseJSON { response in 
       debugPrint(response) 
      } 
     case .failure(let encodingError): 
      print(encodingError) 
     } 
    } 
) 
0

更新CocoaPods。不

pod update 

我的意思是更新整个的CocoaPods 1.0.0

+0

我做 - 没有工作 $ sudo gem update cocoapods 密码: 正在更新已安装的宝石 没有更新 $ pod --version 1.0.1 – ilan