答案 0 :(得分:1)
这是使用协议的经典案例,尽可能避免声明为[AnyObject]
或[Any]
的数组。
创建协议,采用该协议的所有结构必须实现timestamp
protocol TimeStampable {
var timestamp : TimeInterval { get }
}
创建三个类
struct NotificationCard : TimeStampable {
var timestamp : TimeInterval = 34837465928
}
struct YouCard : TimeStampable {
var timestamp : TimeInterval = 67837465928
}
struct WelcomeCard : TimeStampable {
var timestamp : TimeInterval = 92837465928
}
而不是未指定的[AnyObject]
将数组声明为[TimeStampable]
let unsortedArray : [TimeStampable] = [YouCard(), WelcomeCard(), NotificationCard()]
现在您可以对数组进行排序
let res = unsortedArray.sorted{ $0.timestamp < $1.timestamp }
如果必须使用其他通用成员或函数,请将它们添加到协议声明中,并在结构中实现它们和/或使用协议扩展。