【问题标题】:Trying to replace this block-based NSSortDescriptor with a Core Data-friendly one试图用一个对核心数据友好的 NSSortDescriptor 替换这个基于块的 NSSortDescriptor
【发布时间】:2014-07-19 12:27:27
【问题描述】:

我有一个实体类型,作为它的属性之一,它有一个字符。我想检索与谓词匹配的所有此类实体,并且我希望它们首先按该字符排序,然后按索引号(这是它的另一个属性)。

如果我只使用内置的排序描述符,这很简单......但是,单个字符可以是任何东西,从字母到数字,从标点符号到表情符号。当我使用内置排序时,我会先得到标点符号,然后是数字,然后以此类推。我想要的是首先是 A-Z,然后是数字,然后是标点符号,最后是表情符号或其他非字母数字和非标点符号(我并不真正关心它们的顺序)。

这很容易实现为基于块的 NSSortDescriptor,但我不知道如何以一种可以将其作为获取请求的一部分发送到 Core Data 的方式来实现(即,没有块允许)。如果这是唯一的方法,我可以将它分成几个不同的请求,然后加入生成的数组;但如果可能的话,我更愿意一次性完成。

谢谢!

【问题讨论】:

    标签: ios objective-c core-data nssortdescriptor


    【解决方案1】:

    当您首先创建对象时,运行您的排序逻辑并将生成的“characterType”保存到另一个属性中。现在,在您的 fetch 请求中,使用 3 个排序描述符,首先使用此字符类型标识符,然后是字符,然后是另一个索引。

    【讨论】:

    • 这在我的情况下不太适用,因为每次添加或修改实体时都需要重新排序......但是,它在很多情况下都可以使用,而且它也给了我一个不是添加索引本身,而是添加更广泛的“字符类型”数字字段的想法,其中 1 表示字母,2 表示数字,3 表示标点符号/其他。
    • 这正是我所说的“索引”的意思,但你的命名更好:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    相关资源
    最近更新 更多