0

在 using 中有没有使用CASE语句的SQL SELECT方法NSFetchRequest

        @[
        [NSString stringWithFormat:@"CASE %@ WHEN %@ THEN 1 WHEN %@ THEN 2 WHEN %@ THEN 3 WHEN %@ THEN 4 ELSE 0 END",
         COLUMN_ENUM,
         INTEGER_ENUM1,
         INTEGER_ENUM2,
         INTEGER_ENUM3,
         INTEGER_ENUM4]
    ]

其中 enums 包含列名和整数。

我需要这个,因为一列包含字符串,但我必须按此列排序(不是按字母顺序),而且我不能SortDescriptor与比较器一起使用(NSFetechedResultsController不支持它)。

知道如何实现这一目标吗?

4

1 回答 1

1

(基于 SQL 的)Core Data 获取请求的排序描述符只能使用实体的持久属性和一组有限的排序选择器(compare:caseInsensitiveCompare:localizedCompare:localizedCaseInsensitiveCompare:localizedStandardCompare:)。您不能使用基于 Objective-C 的比较器或任意 SQL 表达式。

localizedStandardCompare:如果您有包含应根据其数值排序的数字的字符串,这将很有用。

(有关 更多信息,请参阅“核心数据编程指南”中的“获取谓词和排序描述符” 。)

因此,如果所有受支持的排序选择器都没有提供您想要的排序,您将不得不添加一个附加属性,仅用于对对象进行排序。

于 2013-06-04T09:00:07.260 回答