如何从字典中提取数据

时间:2016-02-26 10:10:10

标签: ios swift

我试图弄清楚如何基本上创建一个if语句,该语句能够找出巴塞罗那参加的足球比赛上半场得分的数量。统计数据是所有那里都有数字,然后表示目标得分的分钟。那么我将如何编写我的if语句。我知道如何使用一个简单的变量,只需要一个字符串或数字,但是如何在字典中找到具有特定数字值和我想要的特定数字值的值?

var barcelonavsRealMadrid1 = [[String : Int]]()  // if you want this globally
var barcelonavsRealMadrid1goals : [String : Int] = ["barcelonaGoal":21,"RealMadridGoal":23]
var barcelonavsRealMadrid1penaltys  : [String : Int] = ["RealMadridPenalty":21,"barcelonaPenalty":23]


if barcelonavsRealMadrid1goals == ["barcelonaGoal":21] {
        print("Fond it")
    }

2 个答案:

答案 0 :(得分:3)

您可以轻松地在词典中检索数据:

barcelonavsRealMadrid1goals["barcelonaGoal"]

但我必须告诉你,我认为你的数据结构不会按照你想要的方式运行。例如,您不能将一个团队的多个目标放入字典中。

为您的数据构建类并正确封装。不要把“所有东西都扔进去”并建立一些魔法元素名称。了解您正在使用的概念。

我认为可能需要阅读一个好的编程介绍,然后想到Swift编程指南。

修改

以下是游戏数据结构外观的非常简化示例:

class Game {
    var team1 : String
    var team2 : String

    var minutesOfGoalsTeam1: [Int]
    var minutesOfGoalsTeam2: [Int]

    init(team1 t1 : String, team2 t2: String) {
        team1 = t1
        team2 = t2
        minutesOfGoalsTeam1 = []
        minutesOfGoalsTeam2 = []
    }

    func goalsTeam1() -> Int {
        return minutesOfGoalsTeam1.count
    }

    func goalsTeam2() -> Int {
        return minutesOfGoalsTeam2.count
    }

    func addGoal(team : String, minute : Int) {
        if team == team1 {
            minutesOfGoalsTeam1.append(minute)
        }
        if team == team2 {
            minutesOfGoalsTeam2.append(minute)
        }
    }

    func winner() -> String {
        if goalsTeam1() > goalsTeam2() {
            return team1
        }
        if goalsTeam2() > goalsTeam1() {
            return team2
        }
        return "DRAW"
    }
}

let game = Game(team1: "Barcelona", team2: "Madrid")
game.addGoal("Barcelona", minute: 5)
game.winner()

添加惩罚是一项练习。这真的只是冰山的一角。有数百种方法可以做到,我不认为这是最好的方法。例如,人们可以考虑一个专门的团队类。或者使用一些带有子类的游戏事件类来实现目标和惩罚,并将它们添加到数组中并在其上循环以获取具体数据。

答案 1 :(得分:1)

var goalCount=0
for (goal,numbers) in barcelonavsRealMadrid1{
for(var number in numbers){
if(number < 45)
    goalCount++

  }
}

我认为它会起作用