【问题标题】:Does SQLite create a numeric index that I can sort/fetch on?SQLite 是否创建一个我可以排序/获取的数字索引?
【发布时间】:2015-04-14 22:49:03
【问题描述】:

我正在开发我的第一个 CoreData 应用程序,我想根据数据插入数据库的方式对数据进行排序。

我的问题是我是否需要为我的实体创建一个“id”属性,或者是否有一个可以排序的计算索引?

【问题讨论】:

  • 是的,您需要创建自己的 id 并根据上次保存的记录增加它。我会采用不同的方法并添加一个您可以排序的createdAt 属性。如果您使用id,您将始终需要跟踪上次使用的 id 或获取最高的 id,然后才能插入新记录。
  • @Rog,感谢您的推荐,我一定会记住这一点。在这种情况下,我正在处理使用种子方法插入到 sqlLight 中的静态数量的项目。这些项目用于设置菜单。

标签: ios sqlite swift core-data


【解决方案1】:

没有自动创建索引。您应该添加一个NSDate 类型的属性,然后您可以按此排序。

NSManagedObject 子类中实现这一点很方便。

public override func awakeFromInsert() {
    createdAt = NSDate()
}

然后排序:

fetchRequest.sortDescriptors = [NSSortDescriptor(key: "createdAt" ascending: true)]

【讨论】:

  • 考虑到我的应用程序调用我的实体 LogItem 我想我应该提到我将容纳一个静态项目列表,这些项目的值会因每个用户而改变(基本上是应用程序设置)。你仍然推荐 NSDate 还是 NSNumber 就足够了?
  • 是的,坚持使用NSDate。无论如何,它只是在 SQLite 中存储一个数字,因此没有性能差异。但是生成的代码对您的意图更具可读性和明确性。
  • 很高兴知道,我会听从你的建议。谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多