如何在swift中调用Objective-C函数

时间:2015-05-28 19:56:13

标签: objective-c swift interop

我试图从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'

1 个答案:

答案 0 :(得分:0)

txtfUITextField。您可能想要的是将此字段的文本内容作为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)

代替。