我已经声明了Swift协议:
protocol Option {
var name: String { get }
}
我声明了该协议的多种实现-一些类,一些枚举。
我有一个视图控制器,其属性声明为:
var options: [Option] = []
当我尝试将此属性设置为Option
在另一个VC 中实现协议的对象数组prepareForSegue
时,出现运行时错误:
fatal error: array cannot be bridged from Objective-C
为什么不起作用?编译器拥有所需的所有信息,而我根本不了解Objective-C与它有什么关系-我的项目仅包含Swift文件,并且这些数组不会进出任何框架方法,必须将它们桥接到NSArray
。
我找到了解决方案。相当…… 不令人满意,但是有效。我在目标视图控制器上设置数组的位置:
destinationViewController.options = options.map({$0 as Option})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句