Mai*_*r00 1 objective-c for-in-loop ios
我试图通过for循环迭代NSDictionary.但我希望它从这个集合的结尾开始迭代到它的开始.我该如何实现这种回归?
NSDictionary是一种无序的数据结构.没有前向迭代或后向迭代的概念.
当您在foreach循环中调用NSDictionary时,您将迭代无序的键列表.在迭代无序列表时,订单未定义,因此正在颠倒顺序.它类似于在地板上散布一副牌,然后要求某人改变顺序.
假设您的密钥有一些顺序层次结构(数字,字母等),您可以改为获取密钥集合,并将其排序为特定顺序,然后迭代密钥集合,或反向迭代.但是,如果这是您经常进行的操作,那么我怀疑这NSDictionary不是您的问题的数据结构的最佳选择.
嗯......问题是NSDictionary本质上是无序的.
因此,一个可能的解决方案是使用键生成NSArray,使用"reverseObjectEnumerator"反转该数组,然后在数组上循环并使用字典上的键.
像这样的东西:
NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"firstValue",@"firstKey",
@"secondValue",@"secondKey",
@"thirdValue",@"thirdKey",
nil];
NSArray *keysNormal = [_dict allKeys];
NSArray *keysReversed = [[[_dict allKeys] reverseObjectEnumerator] allObjects];
for(NSString *str in keysNormal)
{
NSLog(@"%@", [_dict objectForKey:str]);
}
for(NSString *str in keysReversed)
{
NSLog(@"%@", [_dict objectForKey:str]);
}
Run Code Online (Sandbox Code Playgroud)
日志是:
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |