如何在 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
}
正在尝试交换 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
}