7

我有以下代码:

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

Array 包含Band来自我的 CoreData 模型的对象。它有一个NSSet称为“图像”的属性。

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

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

有什么方法可以防止这种情况或让它按顺序返回吗?它会大大降低我的代码的复杂性。

4

3 回答 3

13

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

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

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

(强调我的)

于 2011-09-09T23:26:53.910 回答
4

一个集合没有顺序。但是,在 10.7 (Lion) 中,有一个NSOrderedSet类。这在 iOS 4.0 中不可用。

于 2011-09-09T23:25:32.110 回答
3

NSOrderedSet 和 NSMutableOrderedSet 现在可以在 iOS 5 中使用,以便您随时了解最新信息。

这是链接

于 2012-01-11T20:03:35.687 回答