我正在使用 CoreData 来保存保存在 SQLite 数据库中的书籍信息。按标题排序时,我想忽略“A”和“The”前缀。例如,当有书:“The Code Book”和“Fermat's Enigma”时,我希望“Fermat's Enigma”排在“The Code Book”之前,因为“The”应该被忽略。
除了添加一个不带前缀的标题的持久属性之外,我找不到任何方法来做到这一点。 (在上面的例子中,那个属性说'titleNoPrefixes'应该包含“Code Book”字符串)。在 CoreData 中似乎不可能基于计算属性(也称为 transient 属性)进行排序。
添加持久属性显然是一种糟糕的数据库设计,但我看不到其他方法。有什么建议吗?
最佳答案
约书亚
您的问题几乎与作为持久存储的核心数据无关,这是对文本问题进行一般数据库排序。您的问题的传统解决方案是使用一个普通的表单字段作为排序类别。您可能希望将所有内容都小写并去除该字段的干扰词。由于这些只是标题,因此在存储方面并不是特别昂贵。此外,这是一个插入时间操作而不是搜索时间操作。最后, transient 变量只存在于 RAM 中。我相信,它们在数据存储区中是 NULL 值。因此,搜索它们是没有意义的并会引发异常。
安德鲁
关于iphone - 使用 NSFetchedResultsController 排序时如何忽略前缀 "A"和 "The"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947976/