我正在尝试创建一个函数,它将从“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")]
答案 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"