如何在 swift 中交换两个日期

How to swap two dates in swift

正在尝试交换 Swift 中的两个日期。它目前给我一个错误说:

Cannot subscript a value of type '[Mission]' with an index of type 'Int'

func sort (mission: [Mission]) -> Bool {
    for (var i = 0; i < mission.count; i++) {
        println(mission[i].createdAt)
        if mission[i].createdAt.timeIntervalSince1970 > mission[i+1].createdAt.timeIntervalSince1970 {
            var temp = mission[i]
            mission[i] = mission[i+1]
            mission[i+1] = temp
        }
    }
    println()
    return true
}

这个函数名为排序,但它实际上并不对数组进行排序。如果你真的想对数组进行排序,你应该只使用内置的排序函数:

missions.sort { [=10=].createdAt.timeIntervalSince1970 > .createdAt.timeIntervalSince1970 }

你写的函数,如果它是可编译的,总是会导致 fatalError 因为你总是试图访问越界索引。 i 从 1 到 count - 1 然后你尝试做 mission[i+1]。要解决此问题,您应该更改 for 循环的范围以停止在 count - 2.

编译器给你的错误实际上是由于默认情况下函数参数是不可变的,所以你的赋值实际上是不可能的。如果您希望您的更改在函数外部可见,则需要标记参数 inout.

此外,要进行交换,您应该使用 swift 的内置 swap 函数而不是自己实现它。将所有这些放在一起:

func sort(inout mission: [Mission]) -> Bool {
    for i in 0..<mission.count-1 {
        println(mission[i].createdAt)
        if mission[i].createdAt.timeIntervalSince1970 > mission[i+1].createdAt.timeIntervalSince1970 {
            swap(&mission[i], &mission[i+1])
        }
    }
    println()
    return true
}