2016-03-05 69 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 
}