我有一个包含属性dateTime
和value
的股价列表。
目前,我在使用排序描述符获取股票价格时对其进行排序。
现在,我想更改我的代码并将其存储在已排序的顺序中,以便更快地检索最新的股价(dateTime = max)。
我使用
逐个插入股价 SharePrice *priceItem= [NSEntityDescription insertNewObjectForEntityForName:@"SharePrice" inManagedObjectContext:context];
如何在dateTime
上使用排序描述符插入股票价格之后立即对股价进行排序?
或者我需要将其转换为NSMutableOrderedSet
并使用sortUsingComparator:
吗?
谢谢!
答案 0 :(得分:22)
在CoreData模型中标记属性的Ordered复选框。
还要确保在AppDelegate中设置CoreData自动迁移(创建PersistentStore时选项字典)。这样,CoreData将能够在不丢失数据的情况下进行此更改。
答案 1 :(得分:4)
我想添加到已接受的答案中,如果您有NSSet
,则必须在选择有序复选框后将其更改为NSOrderedSet
答案 2 :(得分:0)
我不确定使用NSMutableOrderedSet会如何影响底层的sqlite数据库。很高兴认为它会以集合的顺序存储它,但底层实现是一个黑盒子,我认为没有任何保证它能够始终如一地工作,如果它完全有效。
如果这是您正在寻找的性能提升,我认为为该属性添加索引将是最佳方法。