gpt4 book ai didi

arrays - Swift - 通过几个比较对数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 07:01:12 26 4
gpt4 key购买 nike

我的问题很简单:

  • 我的数据库中有很多用户评分(顺便说一句,我正在使用 Firebase)
  • 我想得到这些分数(这很容易)并对它们进行排序(不太容易)

如果用户完成锻炼,他将输入他的时间,如果没有,他将输入次数或重复次数。

简单来说,结果对象是这样的:

Result
|_ resultValue (Int) // It can be time in seconds or number of reps
|_ isFinished (Int) // It can be 0 (not finished) or 1 (finished)

我想像这样对我的结果数组进行排序:

  1. First: All results with isFinished == 1 are higher than the others
  2. Then: Sort results where isFinished == 1 by resultValue DESC
  3. Finally: Sort results where isFinished == 0 by resultValue ASC

我试过类似的东西:

self.results = self.results.sorted {
($0.result.isForTimeFinished!, $0.result.resultValue!) >
($1.result.isForTimeFinished!, $1.result.resultValue!)
}

因此未完成锻炼的结果是在锻炼完成后的结果,但是“按 resultValue DESC 对 isFinished == 1 的结果进行排序”是不正确的...

你知道我如何将所有这些结合起来吗?

最佳答案

试试这个:

self.results = self.results.sorted {
if $0.result.isForTimeFinished != $1.result.isForTimeFinished {
return $0.result.isForTimeFinished > $1.result.isForTimeFinished
}
else if $0.result.isForTimeFinished == 0 {
return $0.result.resultValue > $1.result.resultValue
}
else {
return $0.result.resultValue < $1.result.resultValue
}
}

注意:我可能已经得到了相反的标志,但稍微玩了一下

关于arrays - Swift - 通过几个比较对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51163424/

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