2016-03-05 67 views
3

我有以下类Swift - 如何将swift数组转换为NSArray?

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)") 
     } 
    } 

错误:

Cannot convert value of type '[Player]?' to specified type 'NSArray?'

我已经试过:

if let list:NSArray = playerList as NSArray

我到底做错了什么?

感谢

回答

4

你并不需要强制转换为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 
} 
+0

如果我做'if let list = self.playerOrderList as? NSArray {'它说; '从'[Player]投下'?'到无关的类型'NSArray'总是失败' – zardon

+0

是的,我忘了打开可选的第一个,在我的手机上键入这个,并无法测试代码。更新答案。 – ColGraff

+0

已接受。您的答案按预期工作。非常感谢 – zardon

3

你不能将可选数组转换为NSArray,您必须首先展开数组。你可以通过测试来做到这一点,像这样:

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