Как быстро отсортировать несколько объектов класса со свойством даты в одном массиве?

У меня есть два класса, и я добавил оба объекта класса в один и тот же массив, и оба объекта класса имеют свойство date, и ниже приведен мой код:

protocol MyType {

}


class A: MyType {

    var type: Int?
    var date: String?

    init(type: Int, date: String) {
        self.type = type
        self.date = date
    }
}

class B: MyType {

    var name: String?
    var date: String?

    init(name:String, date: String) {
        self.name = name
        self.date = date
    }
}

var array = [MyType]()

let AObject1 = A(type: 1, date: "2015-11-04")
let AObject2 = A(type: 2, date: "2015-11-05")
let BObject1 = B(name: "Birthday", date: "2015-11-03")
let BObject2 = B(name: "Events", date: "2015-11-12")

array.append(AObject1)
array.append(AObject2)
array.append(BObject1)
array.append(BObject2)

Все объекты успешно добавлены в array, но я понятия не имею, как я могу сократить его с помощью свойства date.

Любая помощь будет оценена.


person Dharmesh Kheni    schedule 07.11.2015    source источник
comment
см. эту link1 и link2 , если вы не поняли ответ здесь, мы поддержим вас   -  person Anbu.Karthik    schedule 07.11.2015
comment
окончательный массив, который вы можете отсортировать по дате, используя array.sort { $0.yourdate < $1.yourdate }, иначе вы можете отсортировать array.sortInPlace { $0.yourdate < $1.yourdate }, не беспокоясь о массиве экземпляров   -  person Anbu.Karthik    schedule 07.11.2015


Ответы (1)


Добавьте свойство даты в свой протокол:

protocol MyType {
    var date: String? { get }
}

Затем вы можете отсортировать массив чем-то вроде:

array.sort { $0.date < $1.date }

или отсортируйте его на месте с помощью

array.sortInPlace { $0.date < $1.date }

Обратите внимание, что формат строки, который вы используете, позволяет вам использовать лексикографические сортировки для достижения порядка сортировки по дате, в противном случае вы можете захотеть сохранить даты как NSDates.

person David Berry    schedule 07.11.2015