如何在 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)

相反。