如何使用swift在单个数组中使用date属性对多个类对象进行排序?

时间:2015-11-07 06:13:19

标签: ios swift sorting singleton nsdate

我有两个类,我在同一个数组中添加了两个类对象,两个类对象都有属性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属性将其缩短。

任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

将日期属性添加到协议中:

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

然后您可以使用类似于:

的类型对数组进行排序
array.sort { $0.date < $1.date }

或使用

对其进行排序
array.sortInPlace { $0.date < $1.date }

请注意,您使用的字符串格式允许您使用词典排序来实现日期排序顺序,否则您可能希望将日期存储为NSDates。