gpt4 book ai didi

arrays - 如何快速交换两个日期

转载 作者:行者123 更新时间:2023-11-30 14:17:38 25 4
gpt4 key购买 nike

尝试在 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
}

最佳答案

该函数名为 sort,但它实际上并不对数组进行排序。如果您实际上尝试对数组进行排序,则应该使用内置排序函数:

missions.sort { $0.createdAt.timeIntervalSince1970 > $1.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
}

关于arrays - 如何快速交换两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com