在Obj-C中,此代码用于将NSData转换为unsigned char:
unsigned char *dataToSentToPrinter = (unsigned char *)malloc(commandSize);
Run Code Online (Sandbox Code Playgroud)
在Swift中,unsigned char被称为CUnsignedChar,但是我如何在Swift中将NSData对象转换为CUnsignedChar?
Mar*_*n R 14
这可能是你正在寻找的:
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))
Run Code Online (Sandbox Code Playgroud)
更新:实际上你根本不需要复制数据(既不在Objective-C代码也不在Swift中).有一个指向数据的指针就足够了.所以你的代码看起来像这样(比较 Error("'()'与'UInt8'不相同")使用Swift中的write函数将NSData字节写入NSOutputStream以 解决类似的问题):
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
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8793 次 |
| 最近记录: |