Dou*_*ith 13 objective-c nsdictionary fast-enumeration for-in-loop ios
我正在与一个API进行通信,该API将我的应用程序所需的数据作为响应发送回NSDictionary(数据基本上是一个提要).此数据按最新到最旧排序,最新项目位于NSDictionary的前面.
当我快速枚举它们时for (NSString *key in articles) { ... },顺序似乎是随机的,因此我操作它们的顺序不是从最新到最旧,就像我想要的那样,而是完全随机的.
我已经读过了,当使用NSDictionary的快速枚举时,不保证按顺序迭代通过数组.
但是,我需要它.如何按NSDictionary所在的顺序迭代NSDictionary?
Mar*_*rio 22
一种方法是将所有密钥放在一个可变数组中:
NSMutableArray *allKeys = [[dictionary allKeys] mutableCopy];
Run Code Online (Sandbox Code Playgroud)
然后根据您的需要对数组进行排序:
[allKeys sortUsingComparator: ....,]; //or another sorting method
Run Code Online (Sandbox Code Playgroud)
然后你可以迭代数组(我认为使用快速枚举保持顺序),并获取当前键的字典值:
for (NSString *key in allKeys) {
id object = [dictionary objectForKey: key];
//do your thing with the object
}
Run Code Online (Sandbox Code Playgroud)
根据定义,词典是无序的.如果要对键应用订单,则需要对键进行排序.
NSArray *keys = [articles allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compare:)];
for (NSString *key in sortedKeys) {
// process key
}
Run Code Online (Sandbox Code Playgroud)
更新密钥的排序方式以满足您的需求.
| 归档时间: |
|
| 查看次数: |
24360 次 |
| 最近记录: |