加快我的排序

时间:2017-01-22 13:40:41

标签: ios swift core-data

我有问题。我的任务是从CoreData中获取用户,并根据他们的总分数对它们进行排序。

结果,我想出了:  1.我从CoreData获取用户。  我用它们对它们进行排序:

users = users?.map({ (user) -> (User, Int) in
     return (user, (user.tasks as! Set<Task>).reduce(0, { $0 + ($1.score!.intValue)})
}).sorted(by: { (e1, e2) -> Bool in
     return e1.1 > e2.1
}).map({ (user, sum) -> User in
     return user
})

这样可行,但整个过程非常缓慢。有没有更好的方法来实现我的目标?

编辑:

好的,我添加了相关的moel:

User enter image description here

我也尝试了NSSortDescriptor,但在抓取请求期间我没有找到任何方法对数据进行排序。

1 个答案:

答案 0 :(得分:1)

对数据进行非规范化。这是将他们的得分总和存储在用户对象中。每次插入,删除或更新分数时都必须小心,还要更新用户对象,因此最好使方法能够更新分数。