Cocoa - 枚举可变数组,删除对象
我有一个可变数组,其中包含可变字典,其中包含纬度、经度和 id 键的字符串。一些纬度和经度值是相同的,我想从数组中删除重复项,因此每个位置只有一个对象。
我可以枚举我的数组并使用第二个枚举检查每个对象以查找具有不同 id 但具有相同纬度和经度的对象,但如果我尝试删除该对象,我会在枚举期间使数组静音。
有没有什么方法可以在枚举时从数组中删除对象,这样我只在数组更新时枚举当前的对象集?
希望这个问题有意义。
谢谢, 豪伊
I have a mutable array that contains mutable dictionaries with strings for the keys latitude, longitude and id. Some of the latitude and longitude values are the same and I want to remove the duplicates from the array so I only have one object per location.
I can enumerate my array and using a second enumeration review each object to find objects that have different ids, but the same latitude and longitude, but if I try to remove the object, I'm muting the array during enumeration.
Is there any way to remove objects from an array while enumerating so I only enumerate the current set of objects as the array is updated?
Hope this question makes sense.
Thanks,
Howie
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
枚举时对索引变量进行计数。当您遇到想要删除的字典时,请将其索引添加到 可变索引集。然后,当您完成枚举时,发送数组 一条
removeObjectsAtIndexes:
消息,传递索引集。另一种方法是构建第二个数组,然后向第一个数组发送
setArray:
消息,传递第二个数组,或者释放第一个数组,保留第二个数组,并将第二个数组设置为新数组第一的。在不相关的注释中,您可能会考虑用 模型对象。它往往会使代码更清晰。
Count up an index variable as you enumerate. When you come upon a dictionary you're interested in removing, add its index to a mutable index set. Then, when you finish enumerating, send the array a
removeObjectsAtIndexes:
message, passing the index set.The other way would be to build up a second array, then send the first array a
setArray:
message, passing the second array—or release the first, retain the second, and set the second as the new first.On an unrelated note, you might consider replacing the dictionaries with model objects. It tends to make for cleaner code.
其实你可以。您需要从顶部索引到 0。
试试这个:
Actually you can. You need to go from top index to 0.
Try this: