有序集和核心数据(NSOrderedSet)

时间:2013-04-25 14:46:39

标签: objective-c ios5 core-data nsset

我有一个包含属性dateTimevalue的股价列表。

目前,我在使用排序描述符获取股票价格时对其进行排序。

现在,我想更改我的代码并将其存储在已排序的顺序中,以便更快地检索最新的股价(dateTime = max)。

我使用

逐个插入股价

SharePrice *priceItem= [NSEntityDescription insertNewObjectForEntityForName:@"SharePrice" inManagedObjectContext:context];

如何在dateTime上使用排序描述符插入股票价格之后立即对股价进行排序?

或者我需要将其转换为NSMutableOrderedSet并使用sortUsingComparator:吗?

谢谢!

3 个答案:

答案 0 :(得分:22)

Ordered property on CoreData

在CoreData模型中标记属性的Ordered复选框。

还要确保在AppDelegate中设置CoreData自动迁移(创建PersistentStore时选项字典)。这样,CoreData将能够在不丢失数据的情况下进行此更改。

答案 1 :(得分:4)

我想添加到已接受的答案中,如果您有NSSet,则必须在选择有序复选框后将其更改为NSOrderedSet

答案 2 :(得分:0)

我不确定使用NSMutableOrderedSet会如何影响底层的sqlite数据库。很高兴认为它会以集合的顺序存储它,但底层实现是一个黑盒子,我认为没有任何保证它能够始终如一地工作,如果它完全有效。

如果这是您正在寻找的性能提升,我认为为该属性添加索引将是最佳方法。