我正在将iOS项目迁移到Swift。我正在上课。当我从Swift调用Objective C方法时,很多Objective C类型都转换为它们的Swift对应类型。
在我的情况下,目标CNSMutableArray
转换为Swift的Array<AnyObject>
。现在是我的问题了。在我的Swift类中,我从Objective C对象获得了这样的数组。现在我处于Swift世界中,我想将此数组转换为特定类型而不是AnyObject
,因为我确定知道该数组中存在哪种对象。
编译器不允许我这样做!让我通过说要转换为包含字符串的数组来简化我的问题。这是我尝试的:
var strings = myObjcObject.getStrings() as [String]
我从编译器收到以下错误:
“字符串”与“ AnyObject”不同
我必须同意编译器,因为String确实与AnyObject不同。但是我不明白为什么这是一个问题。如果需要,我可以将AnyObject转换为String,对吗?
我也尝试过:
var strings = myObjcObject.getStrings() as? [String]
这似乎是朝着正确方向迈出的一步,但是getStrings()返回,NSMutableArray
因此出现以下错误:
“ NSArray”不是“ NSMutableArray”的子类型
有什么办法可以做我想在这里做的事情吗?