我的问题很简单:
我的数据库中有很多用户得分(顺便说一下,我正在使用firebase)
我想得到这些分数(很容易)然后分类(不太容易)
如果用户完成了训练,他将输入他的时间,如果没有,他将输入数字或重复次数。
简单地说,result对象如下:
Result
|_ resultValue (Int) // It can be time in seconds or number of reps
|_ isFinished (Int) // It can be 0 (not finished) or 1 (finished)
我想对我的结果数组进行如下排序:
第一:isfinished==1的所有结果都高于其他结果
然后:按resultvalue desc将结果排序,其中isfinished==1
最后:按resultvalue asc对结果进行排序,其中isfinished==0
我试过这样的方法:
self.results = self.results.sorted {
($0.result.isForTimeFinished!, $0.result.resultValue!) >
($1.result.isForTimeFinished!, $1.result.resultValue!)
}
所以,未完成的训练结果是在完成的训练结果之后,但是“sort results where is finished==1 by resultvalue desc”是不正确的…
你知道我怎么把这些结合起来吗?
最佳答案
试试这个:
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
}
}
注:我可能有相反的迹象,但发挥了一点