我正在使用CoreData来保存保存在SQLite数据库中的书籍信息.按标题排序时,我想忽略“A”和“The”前缀.例如,在拥有书籍:“The Code Book”和“Fermat’s Enigma”时,我希望“Fermat’s Enigma”在“The Code Book”之前出现,因为“The”应该被忽略.
除了添加一个持有没有前缀的标题的持久属性之外,我找不到任何方法. (在上面的示例中,该属性说’titleNoPrefixes’应该包含“Code Book”字符串).在CoreData中,基于计算属性(也称为瞬态属性)的排序似乎是不可能的.
添加持久属性显然是一个糟糕的数据库设计,但我看不到另一种方式.有什么建议?
最佳答案 约书亚
您的问题几乎与Core Data作为持久存储无关,这是对文本问题的一般数据库排序.您问题的传统解决方案是使用常规表单字段作为排序类别.您可能希望小写所有内容并删除此字段的干扰词.由于这些只是标题,因此存储方式不是特别昂贵.此外,这是插入时间操作而不是搜索时间操作.最后,瞬态变量仅存在于RAM中.我认为,它们是数据存储区中的NULL值.因此,搜索它们毫无意义,并引发异常.
安德鲁