2017-09-25 73 views
0

這是我的代碼設置按鈕的標題從洗牌陣列 - 斯威夫特

func shuffle() { 
    let footballClubsInPoland = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: self.footballClubsInPoland) 
    option1.setTitle((footballClubsInPoland[0] as AnyObject).name, for: .normal) 
    option2.setTitle((footballClubsInPoland[1] as AnyObject).name, for: .normal) 
    print(footballClubsInPoland[0]) 
    print(footballClubsInPoland[1]) 
} 

我的問題是,我可以在控制檯中看到的對象,被打亂的是,但我的按鈕的標題是不是在裝一個模擬器。我該怎麼辦?

+1

什麼'footballClubsInPoland'陣列的類型? –

+0

代碼lokks這樣的: VAR footballClubsInPoland:[footballClubs] = [] 和典型對象有看起來像這樣 VAR羅切霍茹夫足球俱樂部:footballClubs = footballClubs(名稱: 「羅切霍茹夫足球俱樂部」,獎盃:29) –

+0

你爲什麼將它投射到AnyObject? –

回答

0

在做(footballClubsInPoland[0] as AnyObject時,您正在將元素轉換爲AnyObject,並且在調用.name時,實際上並不指的name屬性。

所以,你應該寧願做:

func shuffle() { 
    let footballClubsInPoland = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: self.footballClubsInPoland) as! [footballClubs] 
    option1.setTitle(footballClubsInPoland[0].name, for: .normal) 
    option2.setTitle(footballClubsInPoland[1].name, for: .normal) 
    print(footballClubsInPoland[0]) 
    print(footballClubsInPoland[1]) 
+1

特雷弗 - 感謝您的耐心等待,現在一切正常:) –

+0

@MaciejGieparda歡迎您! :) –