我正在循环一个包含名为1,2,3等字典的NSDictionary。我遇到的问题是,在循环浏览它们时,它们不会保持顺序。有没有办法在循环时保持数字顺序?感谢。
代码:
NSDictionary *theDict = [thePreviousKey objectForKey:@"stayInLine"];
for(NSString *key in theDict) {
[self doThis:key];
// expected result (do 1, 2, 3, etc.)
// actual result (1, 3, 2, etc.)
}
plist中:
<dict>
<key>randomStuff</key>
<dict>
<key>specificStuff</key>
<dict>
<key>stayInLine</key>
<dict>
<key>1</key>
<dict>
<key>thing</key>
<data>
data==
</data>
</dict>
<key>2</key>
<dict>
<key>thing</key>
<data>
data==
</data>
</dict>
</dict>
</dict>
</dict>
</dict>
答案 0 :(得分:6)
NSDictionary
不维护有序的键列表。枚举字典中的键时,枚举键的顺序是未定义的。
解决方案是首先自己对键进行排序。像这样:
NSArray *keys = [[theDict allKeys] sortedArrayUsingSelector:@selector(compare:)];
for (NSString *key in keys) {
[self doThis:key];
}