“NSSet allObjects”是否随机排序?

时间:2011-09-09 23:21:45

标签: objective-c ios cocoa-touch sorting nsset

我有以下代码:

self.temporaryImageArray = [(NSSet *)[[array objectAtIndex:0] images] allObjects]

Array从我的CoreData模型中保存Band个对象。它有NSSet作为名为“images”的属性。

现在我使用此temporaryImageArray通过时间戳确定是否需要更新图像。我遇到了一些非常随意的行为,现在我的问题是:

[NSSet allObjects]是否以无顺序随机返回集合中的对象?

有没有办法防止这种情况或让它按顺序归还?它会大大降低我的代码的复杂性。

3 个答案:

答案 0 :(得分:11)

NSSet是一个无序集合。它不知道它的对象的“顺序”是什么。因此,当您致电-allObjects时,它会将它们无序返回。

请注意-allObjects上的文档说明:

  

包含集合成员的数组,如果集合没有成员,则为空数组。 未定义数组中对象的顺序。

(强调我的)

答案 1 :(得分:4)

一套没有订单。但是,在10.7(Lion)中,有一个NSOrderedSet类。这在iOS 4.0中不可用。

答案 2 :(得分:3)

NSOrderedSet和NSMutableOrderedSet现在可以在iOS 5中使用,因此您可以随时了解。

这是link