Swift - 如何将 Swift 数组转换为 NSArray?

7
我有以下类:
class Game {
// An array of player objects
    private var playerList: [Player]?
}

我想要遍历playerList,这需要import Foundation然后将其转换为NSArray; 但它总是抱怨无法转换

 func hasAchievedGoal() {
        if let list:NSArray = playerList {

        }

        for (index,element) in list.enumerate() {
            print("Item \(index): \(element)")
        }
   }

错误:

无法将类型为'[Player]?'的值转换为指定类型'NSArray?'

我的尝试:

if let list:NSArray = playerList as NSArray

我做错了什么?

谢谢

2个回答

7

您无需将对象转换为NSArray即可进行枚举:

if let list = playerList {
  for (index,value) in list.enumerate() {
    // your code here
  }
}

关于您的投掷,应该这样做:
if let playerList = playerList,
    list = playerList as? NSArray {
  // use the NSArray list here
}

如果我执行 if let list = self.playerOrderList as? NSArray {,它会显示:从 '[Player]?' 转换到不相关的类型 'NSArray' 总是失败 - zardon
是的,我忘了先解包可选项,在手机上输入这个代码,无法测试。正在更新答案。 - user887210
已接受。您的答案按预期工作。非常感谢。 - zardon

4

你不能将可选数组转换为NSArray,你必须先解包数组。你可以通过测试来实现,像这样:

if let playerList = playerList{
    let list:NSArray = playerList
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接