【发布时间】:2014-11-08 08:37:37
【问题描述】:
我正在将我的 iOS 项目迁移到 Swift。我正在逐课做这门课。当我从 Swift 调用 Objective C 方法时,很多 Objective C 类型都被转换为对应的 Swift。
在我的例子中,Objective C NSMutableArray 被转换为 Swift 的 Array<AnyObject>。现在我的问题来了。在我的 Swift 类中,我从一个 Objective C 对象中得到了这样一个数组。现在我在 Swift 世界中,我想将此数组转换为特定类型而不是 AnyObject,因为我确定该数组中存在哪些类型的对象。
编译器不允许我这样做!让我通过说我想转换为包含字符串的数组来简化我的问题。这是我尝试过的:
var strings = myObjcObject.getStrings() as [String]
我从编译器收到以下错误:
'String' 与 'AnyObject' 不同
我必须同意编译器,因为 String 确实与 AnyObject 不同。但我不明白为什么这是一个问题。如果我愿意,我可以将 AnyObject 向下转换为 String,对吧?
我也试过了:
var strings = myObjcObject.getStrings() as? [String]
这似乎是朝着正确方向迈出的一步,但 getStrings() 返回一个NSMutableArray,所以我收到以下错误:
'NSArray' 不是'NSMutableArray' 的子类型
有什么办法可以做我想做的事情吗?
【问题讨论】:
标签: ios objective-c swift