3

我有一个支持 SQLite 的核心数据存储,并希望使用NSFetchRequest. 我希望所述列表按可以在数据库级别轻松计算的布尔值进行排序。我知道这一点是因为可以使用 来制定相同的条件NSPredicate,如下所示:

[NSPredicate predicateWithFormat:@"uid = %@", currentUID]

可悲的是,似乎没有办法使用NSSortDescriptor. 我如何最好地解决这个问题?我是否要获取两个列表,一个带有

[NSPredicate predicateWithFormat:@"uid = %@", currentUID]

和一个

[NSPredicate predicateWithFormat:@"uid != %@", currentUID]

并在以后将它们结合起来?那么我还能优雅地使用 aNSFetchedResultsController吗?
或者我应该获取所有项目并稍后在代码中对其进行排序?或者有什么我错过的。

4

2 回答 2

0

只需创建一个数组(即使它只包含一个元素)NSSortDescriptors即可根据需要对结果进行排序。

setSortDescriptors:用来设置它们。

fetch 可以同时处理谓词和排序。

于 2013-03-09T10:46:41.337 回答
-1

你所要求的没有意义。

谓词用于选择应在一组结果中返回哪些对象。这是通过针对每个对象评估谓词以查看谓词是否评估为YESNO(二进制值或两个可能值之一)来确定的。如果计算结果为YES,则包含该对象。如果计算结果为NO,则排除该对象。没有回旋的余地。

相比之下,排序描述符的计算结果为less thanequalgreater than。换句话说,它是一个三元值(它可以是件事之一)。没有办法用谓词来表示三元值(因为谓词是二元的),因此使用谓词作为排序描述符绝对没有意义。API 不允许,因为逻辑不允许。

所以真正的问题是:你想做什么?为什么你认为你的排序描述符中需要一个谓词?

于 2011-02-17T17:30:11.473 回答