如何在 swift 中调用 Objective-C 函数
How to call Objective-C function in swift
我正在尝试从 Swift 调用一个旧的 Objective-C 函数。桥接头文件可以
这是 Objective-C 函数;
- (void) writeBytes:(const UInt8 *)bytes length:(int)length {
for(int i = 0; i<length; i++){
byteQueue->put((char)*bytes++);
}
}
还有我的 swift 代码 ;
var generator: FSKSerialGenerator = FSKSerialGenerator()
@IBOutlet weak var txtf: UITextField!
@IBOutlet weak var btn: UIButton!
@IBAction func btnyaz(sender: UIButton) {
generator.writeBytes(txtf, UTF8Char)
}
错误是:
Cannot invoke 'writeBytes' with an argument list of type '(UITextField!, UTF8Char.Type)'
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)
相反。
我正在尝试从 Swift 调用一个旧的 Objective-C 函数。桥接头文件可以
这是 Objective-C 函数;
- (void) writeBytes:(const UInt8 *)bytes length:(int)length {
for(int i = 0; i<length; i++){
byteQueue->put((char)*bytes++);
}
}
还有我的 swift 代码 ;
var generator: FSKSerialGenerator = FSKSerialGenerator()
@IBOutlet weak var txtf: UITextField!
@IBOutlet weak var btn: UIButton!
@IBAction func btnyaz(sender: UIButton) {
generator.writeBytes(txtf, UTF8Char)
}
错误是:
Cannot invoke 'writeBytes' with an argument list of type '(UITextField!, UTF8Char.Type)'
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)
相反。