在Swift 2.0中,如何按属性对自定义对象数组进行排序?我知道在Swift 1.2中,这是使用sorted()和sort()完成的.然而,这些方法在Xcode 7 beta 4中不再有效.谢谢

例如:

class MyObject: NSObject {
    var myDate : NSDate
}

...

let myObject1 : MyObject = MyObject() //same thing for myObject2, myObject3

var myArray : [MyObject] = [myObject1, myObject2, myObject3] 

//now, I want to sort myArray by the myDate property of MyObject.

推荐答案

在Swift 2中:

  • 您可以使用sort方法,使用compare来比较这两个日期:

    let sortedArray = myArray.sort { $0.myDate.compare($1.myDate) == .OrderedAscending }  // use `sorted` in Swift 1.2
    
  • 或者,如果要对原始数组进行排序,可以执行以下操作:

    myArray.sortInPlace { $0.myDate.compare($1.myDate) == .OrderedAscending }  // use `sort` in Swift 1.2
    

在Swift 3中:

  • 要返回数组的排序格式副本,请使用sorted,而不是sort

    let sortedArray = myArray.sorted { $0.myDate < $1.myDate }
    
  • 按顺序排列,现在只有sort个:

    myArray.sort { $0.myDate < $1.myDate }
    

对于Swift 3的Date类型,您可以使用<运算符.

Swift相关问答推荐

如何在每天午夜重置布尔值

如何使用变量 Select 哪个向量(?)在我的 struct 中密谋吗?

如何写一个;风格;视图修饰符,它会影响特定类型的所有嵌套视图?

带有可选字符串作为键路径的 SwiftUI iOS16 表

为什么即使 `C` 是一个不是 `Sendable` 的类,Task` 也能工作?

Swift并发:为什么不在其他后台线程上执行任务

在 Swift 5.5 中编写同步和异步函数

单元测试和私有变量

swift中的SequenceType和CollectionType有什么区别?

无法使用锚激活约束

使用 Alamofire 4.0 (Swift 3) 下载文件

Swift - 导入我的 swift 类

如何在 Swift 中将 UILabel 居中?

在 Swift 中将计时器标签格式化为小时:分钟:秒

Swift 2.0 中的 do { } catch 不处理从这里抛出的错误

类型myViewController不符合 Swift 中的协议 UIPIckerDataSource

如何停止 NSTimer.scheduledTimerWithTimeInterval

为什么枚举具有计算(computed)属性但在 Swift 中没有存储属性?

如何在 Swift 中从字符串创建类的实例

iPhone 纵向和 iPad 横向的通用应用程序