【问题标题】:Swift - How to sort an array of custom class?Swift - 如何对自定义类数组进行排序?
【发布时间】:2015-09-10 23:18:47
【问题描述】:

这是我的代码。如您所见,我正在使用自定义类。我创建了一组学生,我想对其进行排序。我知道我必须使用sort 函数,但我不知道如何使用它。我知道我需要创建一个函数来接收两个学生并返回一个布尔值。

尽管我知道代码不是 100% 正确,但我知道我想专注于调用排序函数。

class Subject{

    var id:Int

    var name: String

    init(id:Int, name:String){

        self.id = id

        self.name = name

    }

}



class Helper{

    static func isFirstStudentBetterThanTheSecondStudent(student1: Student, student2: Student) -> Bool{

        if student1.subjects == nil{

            return false

        }

        var student1Marks: Double = 0

        for index in student1.marks!{

            student1Marks += index

        }



        var student2Marks :Double = 0

        for index in student2.marks!{

            student2Marks += index

        }



        return student1Marks > student2Marks

    }

}



let subject1 = Subject(id: 1, name: "subject 1")

let subject2 = Subject(id: 2, name: "subject 2")

let subject3 = Subject(id: 3, name: "subject 3")



let student1 = Student(number: 1, fullName: "student 1")

student1.addSubject(subject1, result: 10)

student1.addSubject(subject2, result: 20)

student1.addSubject(subject3, result: 30)



let student2 = Student(number: 2, fullName: "student 2")

student2.addSubject(subject1, result: 100)

student2.addSubject(subject2, result: 200)

student2.addSubject(subject3, result: 300)



let students = [student1, student2]

我需要根据我的辅助静态函数对学生数组进行排序。

【问题讨论】:

    标签: ios arrays iphone swift sorting


    【解决方案1】:

    sort 函数接受一个闭包,因为它是参数

    let sortedStudent = students.sort({ Helper.isFirstStudentBetterThanTheSecondStudent ($0, student2: $1 ) } )
    

    和完整语法的相同结果:

    let sortedSudents2 = students.sort({(s1: Student, s2:Student) -> Bool in return Helper.isFirstStudentBetterThanTheSecondStudent(student1, student2: student2)})
    

    More details

    【讨论】:

      猜你喜欢
      • 2021-01-28
      • 1970-01-01
      • 2011-01-29
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多