【发布时间】:2018-01-25 01:18:09
【问题描述】:
在 C++ 中,可以在 map 上声明迭代器。 然后迭代器可以被提升和保存,这样以后可以从保存的位置继续迭代。
如何在 Obj-C 中高效地做同样的事情?
【问题讨论】:
-
您已经注意到字典可以变异,但您知道您是not guaranteed the same order of keys when you enumerate a dictionary repeatedly吗?你真正想做什么?您可以制作字典的不可变副本并将其(它是枚举数)保留在某处吗?
-
您可以尝试将键放入数组中,并对其进行迭代。与地图(或者实际上是 Obj-C / Swift 语言中的字典)相比,数组是有序的,因此您可以保存和恢复您的位置。
-
我真的尝试保存迭代器并稍后从保存的点继续。我的目标是在字典上进行迭代,如果字典没有改变,则具有相同的枚举顺序。高效。
-
@choofie,我觉得每次在字典里搜索有点贵。
-
@Boris 您不需要执行搜索。 C++ map 和 Objective-C NSDictionary 的主要区别在于它是无序的。你只需要一个有序的序列来保持你的字典的键是有序的。然后,如果您想遍历您的
NSMutableDictionray,基本上您将改为遍历键NSArray,并使用实际迭代的键来查找您的字典。
标签: objective-c cocoa nsdictionary