如何过滤一系列Structs?

时间:2015-07-18 13:17:47

标签: arrays swift struct filter

我正在尝试创建一个函数,它将从“courseInfo”数组中找到最高的“voteScores”值以及它的“courseName”并将它呈现在我的viewController上(只是通过一个普通的UILabel - 我可以自己做)

我如何找到最高的“voteScores”值并且还有“courseName”。

有没有办法在当前数组中对其进行排序?所以我可以简单地做一些事情;

highestScoreLabel.text = courseInfo [x] .voteScores

还是我必须创建单独的变量?

 var courseInfo = [  winningCourseInfo(voteScores: 22, courseName: "Course 1"),
                     winningCourseInfo(voteScores: 34, courseName: "Course 2"),
                     winningCourseInfo(voteScores: 67, courseName: "Course 3"),
                     winningCourseInfo(voteScores: 12, courseName: "Course 4")]

1 个答案:

答案 0 :(得分:4)

斯威夫特1:

func ==(lhs: winningCourseInfo, rhs: winningCourseInfo) -> Bool {
    return lhs.voteScores == rhs.voteScores
}
func <(lhs: winningCourseInfo, rhs: winningCourseInfo) -> Bool {
    return lhs.voteScores < rhs.voteScores
}

extension winningCourseInfo : Comparable {}

let bestCourse = maxElement(courseInfo)

print(bestCourse.courseName) // "Course 3"

斯威夫特2:

let bestCourse = courseInfo.maxElement { $0.0.voteScores < $0.1.voteScores }

bestCourse?.courseName // "Course 3"