2016-11-12 2 views
0

J'ai converti à Swift 3 et recevoir le message d'erreurURLSession Conversion à Swift 3

« Impossible de convertir la valeur de type (UnsafeRawPointer, NSRange, UnsafeMutablePointer) ->() à (UnsafeBufferPointer, données. index, inout Bool) -> Annulation.

Mon code:

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) 
    } } 

Que dois-je adapter pour le faire fonctionner?

+1

Commentaire sur la méthode tout, retapez et utiliser la complétion de code ou de rechercher la nouvelle syntaxe dans la documentation. – vadian

Répondre

1

Vous êtes déjà objet de données obtiennent et que vous souhaitez ajouter les données, alors pourquoi fais-tu toutes ces choses

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

Cela fonctionne très bien.

Pour référence, regardez https://github.com/ankitthakur/SwiftNetwork/tree/master/Sources/Shared

0

Lorsque vous essayez d'écrire méthode, il est vous donne faites allusion

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

    } 
paramètre

avec < # #> vous venir devez juste donner le nom variable locale pour ceux que tous, vous obtiendrez la valeur dans ces variables.

écrire Tout comme ci-dessous:

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

    } 
} 

J'apprends aussi rapide, juste laissez-moi savoir quelqu'un qui fait cette réponse mieux.