Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-如何对自定义类数组进行排序?_Ios_Arrays_Iphone_Swift_Sorting - Fatal编程技术网

Ios Swift-如何对自定义类数组进行排序?

Ios Swift-如何对自定义类数组进行排序?,ios,arrays,iphone,swift,sorting,Ios,Arrays,Iphone,Swift,Sorting,这是我的密码。如您所见,我正在使用一个自定义类。我创建了一个学生数组,并对其进行排序。我知道我必须使用排序功能,但我不知道如何使用它。我知道我需要创建一个函数,它接受两个学生并返回一个布尔值 尽管我知道代码不是100%正确,但我知道我想集中精力调用排序函数。 class Subject{ var id:Int var name: String init(id:Int, name:String){ self.id = id self

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

尽管我知道代码不是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]

我需要根据helper静态函数对students数组进行排序。

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)})