Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Swift中使用目标C/C_Swift - Fatal编程技术网

在Swift中使用目标C/C

在Swift中使用目标C/C,swift,Swift,我在swift中使用客观的c/c库时遇到问题 for i in results { print(i.interface.index) } 当我尝试访问对象的属性“接口”时,我从Swift获得以下错误: “AnyObject”类型的值没有成员接口 但是“i”是一个midbusinterface对象,我可以在这里检查: 有线索吗 非常感谢 结果是否为客观的C收集?您需要将结果强制转换为MIDIBuseInterface类型,例如: for i in results

我在swift中使用客观的c/c库时遇到问题

    for i in results {
        print(i.interface.index)
    }
当我尝试访问对象的属性“接口”时,我从Swift获得以下错误:

“AnyObject”类型的值没有成员接口

但是“i”是一个midbusinterface对象,我可以在这里检查:

有线索吗


非常感谢

结果是否为客观的C收集?您需要将结果强制转换为MIDIBuseInterface类型,例如:

for i in results as? [MidiBusInterface] {
        print(i.interface.index)
    }

稍微详细一点,但更容易分析:

for i in results {
    if let midibus = i as! MidiBusInterface {
        if let iface = midibus.interface {
            print(iface.index)
        }
    }
}

Typecasting给了我一个->无法将类型“[AnyObject]”的值转换为类型“[MidiBusInterface]”检查这是否有帮助:它允许我将NSArray转换为Array,但我仍然无法访问对象属性,现在我在调试程序中看不到I的任何属性如果您在print语句处设置断点,是否命中该行?是的,i对象看起来如此->i MIDIBUSERFACE 0x79ef5ae0 0x79ef5ae0 NSObject NSObject isa MIDIBUSERFACE*0x79ef5ae0 0x79ef5ae0第二行中的广播无效,因为任何对象都不能转换为MidiBusInterface@AlexVazquez试试强制演员“as!”相反Swift现在对可能失败的施法需要此选项。使用as!->条件绑定的初始值设定项必须具有可选值。如果我删除第一个条件绑定,我会得到'Value of type'midbusinterface'没有成员'interface',当它确实有成员'interface',因此我可以签入调试程序请显示
midbus\u interface
的声明?它是C型的吗?是的。我将用声明更新问题
for i in results {
    if let midibus = i as! MidiBusInterface {
        if let iface = midibus.interface {
            print(iface.index)
        }
    }
}