SQLite 是不是创建一个我可以排序/获取的数字索引?

Posted

技术标签:

【中文标题】SQLite 是不是创建一个我可以排序/获取的数字索引?【英文标题】: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 中的静态数量的项目。这些项目用于设置菜单。 【参考方案1】:

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

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

public override func awakeFromInsert() 
    createdAt = NSDate()

然后排序:

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

【讨论】:

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

以上是关于SQLite 是不是创建一个我可以排序/获取的数字索引?的主要内容,如果未能解决你的问题,请参考以下文章

使用android对sqlite中的字母数字值进行自然排序

如何从 Sqlite ( android ) 中的 datetime 字段获取日期

SQLite 按日期排序1530019888000

我可以从节点中的 sqlite3 数据库中获取数组而不是 JSON 数组的结果吗?

如何在数字中插入小数

使用 sqlite 查找连续重复的数量