最佳答案
我正在将我的 iOS 项目迁移到 Swift。我正在一节一节地上这门课。当我从 Swift 调用 Objective C 方法时,许多 Objective C 类型被转换为它们的 Swift 对应方法。
在我的情况下,一个目标 C NSMutableArray
被转换为斯威夫特的 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’的子类型
有什么办法能达到我的目的吗?