[NSSet allObjects]每次都会以相同的顺序返回一个数组吗?
我有一个从.NET WebService返回的自定义对象的列表,并使用来自父实体与Core Data的To-Many关系存储它们。[NSSet allObjects]每次都会以相同的顺序返回一个数组吗?
我想使用NSSet作为UITableView的数据源,并在选择一行时将新控制器压入堆栈。
使用[NSSet allObjects]
时,返回的数组总是具有相同的顺序吗? (我想不会因为集合是无序的)
如果没有,怎么那么我可以用在cellForRowAtIndexPath
NSArray *myArray = [mySet allObjects];
以获取细胞的textLabel
,然后在didSelectRowAtIndexPath
再次名称,分配对象到ViewController即将推?
我已经在我的UITableViewDelegate
中合成了父对象。我曾经想过,也有一个NSArray
合成,并使用allObjects
只有在viewDidLoad
一次创建,但这是在内存中复制数据
您的解决方案,提取NSArray
一次在viewDidLoad
,是正确的。你实际上不会复制太多内存。你的对象仍然只在内存中一次;只是你的NSSet
和NSArray
都会包含指向这些对象的指针。
有没有保证,他们会以相同的顺序,因为一个NSSet
不(技术上) 维护秩序。如果碰巧对象确实每次都以相同的顺序返回,那么请注意这是一个实现细节,没有记录,并且可能会在将来的框架版本中进行更改。
(
-[NSSet allObjects]
返回)并[a]含N集合的成员,或一个空数组,如果该组中没有成员阵列。 未定义数组中对象的顺序。
(强调)
使用NSOrderedSet而不是NSSet。
此答案实际上有原始问题的答案。 – Gomfucius 2016-06-01 19:52:35