我试图从Swift调用一个旧的Objective-C函数。桥接头文件没问题
这是Objective-C函数;
- (void) writeBytes:(const UInt8 *)bytes length:(int)length {
for(int i = 0; i<length; i++){
byteQueue->put((char)*bytes++);
}
}
我的快捷代码;
var generator: FSKSerialGenerator = FSKSerialGenerator()
@IBOutlet weak var txtf: UITextField!
@IBOutlet weak var btn: UIButton!
@IBAction func btnyaz(sender: UIButton) {
generator.writeBytes(txtf, UTF8Char)
}
错误是:
无法使用类型为'(UITextField!,UTF8Char.Type)'的参数列表调用'writeBytes'
答案 0 :(得分:0)
txtf
是UITextField
。您可能想要的是将此字段的文本内容作为UTF-8字节数组传递给
writeBytes()
方法。
这可以通过
来实现let utf8 = Array(txtf.text.utf8)
generator.writeBytes(utf8, length: Int32(utf8.count))
(Int32()
转换是必要的,因为映射了C类型int
在Swift中Int32
,而不是Int
。)
如果writeBytes()
需要一个以NUL结尾的UTF-8字节数组
你可以用
let utf8 = Array(txtf.text.nulTerminatedUTF8)
代替。