URLSession转换到夫特3

问题描述:

我已经转换到夫特3和接收错误消息URLSession转换到夫特3

“无法类型的值(UnsafeRawPointer,NSRange, UnsafeMutablePointer)转换 - >()至(UnsafeBufferPointer, 数据。 index,inout Bool) - >无效。

我的代码:

func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, 
didReceive data: Data) { 
     data.enumerateBytes{[weak self] 
     (pointer: UnsafeRawPointer, 
     range: NSRange, 
     stop: UnsafeMutablePointer<ObjCBool>) in 
     let newData = Data(bytes: UnsafePointer<UInt8>(pointer), count: range.length) 
     self!.mutableData.append(newData) 
    } } 

什么我需要去适应,使其工作?

+1

注释掉整个方法,重新键入,并使用代码完成或查找新语法的文件中。 – vadian

你已经得到的数据对象,并要附加数据,那么你为什么这样做所有这些事情

func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data){ 
    responseData?.append(data) 
} 

这将正常工作。

作为参考,看看https://github.com/ankitthakur/SwiftNetwork/tree/master/Sources/Shared

当您尝试编写方法,它是给你暗示

func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, 
        didReceive data: Data) { 
     data.enumerateBytes { (<#UnsafeBufferPointer<UInt8>#>, <#Data.Index#>, <#inout Bool#>) in 
      <#code#> 
     } 

    } 

参数与< ##>未来你只需要为那些所有,所以你会在这些变量中获得的价值给予局部变量名。

只要写象下面这样:

func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, 
       didReceive data: Data) { 
    data.enumerateBytes { (buffer , index, boolvalue) in 

    } 
} 

我也学习迅速,只是让我知道任何一个谁做出这样的回答更好。