J'ai une classe de validation de reçu qui est obsolète depuis la publication de Swift 3. Je fixe quelques questions, mais je dois encore beaucoup ...UnsafePointer <UInt8> initialiseur dans Swift 3
Voici le code source GitHub je: https://gist.github.com/baileysh9/4386ea92b047d97c7285#file-parsing_productids-swift et https://gist.github.com/baileysh9/eddcba49d544635b3cf5
Première erreur:
var p = UnsafePointer<UInt8>(data.bytes)
compilateur throws: Impossible d'appeler l'initialiseur pour le type UnsafePointer (UInt8) avec une liste d'arguments de type UnsafeRawPointer
Deuxième erreur
while (ptr < end)
Les opérateurs binaires < ne peut pas être appliquée à deux UnsafePointer (Uint8) opérandes
Merci beaucoup à l'avance:)
EDIT
Grâce à la réponse de LinShiwei, j'ai trouvé une solution à la déclaration UnsafePointer. Il compile, mais pas encore testé (parce que d'autres erreurs me évitent de tester):
func getProductIdFromReceipt(_ data:Data) -> String?
{
let tempData: NSMutableData = NSMutableData(length: 26)!
data.withUnsafeBytes {
tempData.replaceBytes(in: NSMakeRange(0, data.count), withBytes: $0)
}
var p: UnsafePointer? = tempData.bytes.assumingMemoryBound(to: UInt8.self)
merci D'accord, cela a aidé :)! Je modifie ma question pour ajouter mon nouveau code parce que c'est un peu plus complexe – GrayFox
@GrayFox Quel est le problème? – LinShiwei
data.bytes.assumingMemoryBound (à: UInt8.self) ne fonctionne pas car 'bytes' génère une erreur de compilation: "doit utiliser UnsafeBytes au lieu de bytes". J'ai ajouté le bloc entier dans la section EDIT;). Maintenant, cela fonctionne mais j'ai d'autres nouvelles erreurs dans device.identifierForVendor.getBytes (UnsafeMutablePointer (mutableData!mutableBytes)) qui est: "Impossible d'invoquer init de type UnsafeMutablePointer avec la liste d'arguments de type UnsafeMutableRawPointer" .... – GrayFox