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 是不是创建一个我可以排序/获取的数字索引?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Sqlite ( android ) 中的 datetime 字段获取日期