En Obj-C, ce code est utilisé pour convertir un NSData en un caractère non signé:
unsigned char *dataToSentToPrinter = (unsigned char *)malloc(commandSize);
Dans Swift unsigned char est soi-disant appelé CUnsignedChar, mais comment puis-je convertir un object NSData à CUnsignedChar dans Swift?
Cela pourrait être ce que vous cherchez:
let commandsToPrint: NSData = ... // Create char array with the required size: var dataToSentToPrinter = [CUnsignedChar](count: commandsToPrint.length, repeatedValue: 0) // Fill with bytes from NSData object: commandsToPrint.getBytes(&dataToSentToPrinter, length: sizeofValue(dataToSentToPrinter))
Mise à jour: En fait, vous n'avez pas du tout besoin de copyr datatables (ni dans le code Objective-C ni dans Swift). Il suffit d'avoir un pointeur sur datatables. Donc, votre code pourrait ressembler à ceci (comparez Error ("'()' n'est pas identique à 'UInt8'") écrire NSData octets à NSOutputStream en utilisant la fonction d'écriture dans Swift pour un problème similaire):
let dataToSentToPrinter = UnsafePointer<CUnsignedChar>(commandsToPrint.bytes) let commandSize = commandsToPrint.length var totalAmountWritten = 0 while totalAmountWritten < commandSize { let remaining = commandSize - totalAmountWritten let amountWritten = starPort.writePort(dataToSentToPrinter, totalAmountWritten, remaining) totalAmountWritten += amountWritten // ... }