web-dev-qa-db-fra.com

Swift 3 changements pour la méthode getBytes

J'ai essayé d'exécuter le code ci-dessous dans Swift 3

 var values = [UInt8](count:data!.length, repeatedValue:0)
 data!.getBytes(&values, length:data!.length)

où data est le type de données 'Data' (NSData est remplacé par 'Data' selon Swift 3 directives)

Je ne suis pas en mesure d'exécuter le code ci-dessus dans Swift 3. Le compilateur donne une erreur indiquant que "la valeur répétée de l'argument doit précéder l'argument". La même ligne de code fonctionnait dans Swift 2.2

Quelle sera la solution?

15
iDev

Pour Swift3, utilisez simplement ce qui suit:

let array = [UInt8](yourDataObject)

C'est tout, les amis!)

35
sVd

Cela signifie que l'ordre des arguments a été inversé dans Swift 3.

Pour NSData:

var values = [UInt8](repeating:0, count:data!.length)
data.getBytes(&values, length: data!.length)

Pour les données:

var values = [UInt8](repeating:0, count:data!.count)
data.copyBytes(to: &values, count: data!.count)
19
ayaio