2016-07-25 26 views
1

讓說,我有一些球隊不同的球員在他們每個人:數組/詞典在陣列的isEmpty shotrcut

var PlayersShowByTeams:[String:[String]]=[:] 

現在..我想要做的東西在我的代碼,如果這個數組爲空

我的問題是..我可以檢查是否數組是空的快捷方式?而不是.. 讓所有的球隊一樣,名字的另一個數組:

var teams:[String] = [] 

然後檢查是否每一支球隊是空的從玩家的符號和(& &)這樣的:

if(playersShowByTeam[teams[0].count=0 && playersShowByTeam[teams[1].count=0 && playersShowByTeam[teams[2].count=0 //.. and so on 
{ 
//do something 
} 

如果我試圖用.isEmpty這樣的:

if (playerShowByTeam.isEmpty){//do something} 

即使有在這些球隊沒有更多的玩家數組它顯示我虛假(當我打印時)..因爲球隊的名字仍然在裏面。

  1. 使用.isEmpty或使用.count = 0有什麼不同?
  2. 如何讓代碼更短?

在此先感謝!

回答

0
func allTeamsEmpty(teams: [String : [String]]) -> Bool { 
    return teams.filter{teamName, teamMembers in !teamMembers.isEmpty}.isEmpty 
} 

此函數過濾字典,以便保留非空團隊。如果在過濾之後字典是空的,那麼所有的隊伍都必須被過濾掉,因爲它們不是空的。

+0

問題..我試圖複製FUNC和它的節目我錯了:「元組類型的值沒有成員isEmpty」 –

+0

已修復,請參閱我的編輯 – Alexander

+0

哇!這真的很棒..謝謝 –

0

檢查至少1隊存在

var hasTeams: Bool { 
    return PlayersShowByTeams.keys.count > 0 
} 

檢查至少1隊有球員

var hasTeamWithPlayers: Bool { 
    return PlayersShowByTeams.contains{ !$1.isEmpty } 
}