在Swift中使用目标C/C
我在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
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)
}
}
}