我有以下代码:
self.temporaryImageArray = [(NSSet *)[[array objectAtIndex:0] images] allObjects]
Array从我的CoreData模型中保存Band
个对象。它有NSSet
作为名为“images”的属性。
现在我使用此temporaryImageArray
通过时间戳确定是否需要更新图像。我遇到了一些非常随意的行为,现在我的问题是:
[NSSet allObjects]
是否以无顺序随机返回集合中的对象?
有没有办法防止这种情况或让它按顺序归还?它会大大降低我的代码的复杂性。
答案 0 :(得分:11)
NSSet
是一个无序集合。它不知道它的对象的“顺序”是什么。因此,当您致电-allObjects
时,它会将它们无序返回。
请注意-allObjects
上的文档说明:
包含集合成员的数组,如果集合没有成员,则为空数组。 未定义数组中对象的顺序。
(强调我的)
答案 1 :(得分:4)
一套没有订单。但是,在10.7(Lion)中,有一个NSOrderedSet类。这在iOS 4.0中不可用。
答案 2 :(得分:3)
NSOrderedSet和NSMutableOrderedSet现在可以在iOS 5中使用,因此您可以随时了解。
这是link