"NSSet allObjects"是否随机排序?

Oct*_*ape 6 sorting cocoa-touch objective-c nsset ios

我有以下代码:

self.temporaryImageArray = [(NSSet *)[[array objectAtIndex:0] images] allObjects]
Run Code Online (Sandbox Code Playgroud)

Array包含Band我的CoreData模型中的对象.它有一个NSSet称为"图像"的属性.

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

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

有没有办法防止这种情况或让它按顺序返回?它会大大减少代码的复杂性.

Lil*_*ard 12

NSSet是一个无序的集合.它不知道它的对象的"顺序"是什么.因此,当您调用时-allObjects,它会使它们无序返回.

请注意有关-allObjects状态的文档:

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

(强调我的)


Ree*_*sen 4

集合没有顺序。然而,在 10.7 (Lion) 中,有一个NSOrderedSet类。iOS 4.0 中不提供此功能。