我有一组名为NSString
的{{1}}值,每个值都是sortedRefs
NSDictionary
的关键。
我要做的是,如果满足条件,则将该密钥传递给具有相关值的新quotes
。
NSDictionary
问题是for (NSString *key in sortedRefs) {
NSLog(@"%@", key);
if ([[self.quotesManager.quotes[key] valueForKey:@"active"] boolValue]) {
[self.activeQuotes setObject:self.quotesManager.quotes[key] forKey:key];
NSLog(@"%@", [self.activeQuotes allKeys]);
}
}
字典没有按照我插入值的顺序填充。更具体地说,我在前三个循环之后的输出是
activeQuotes
正如您所看到的,当我插入2016-05-26 23:10:59.939 Project[2553:94502] DE2109D0C637CBD755E91ED18F85C17E
2016-05-26 23:10:59.940 Project[2553:94502] (
DE2109D0C637CBD755E91ED18F85C17E
)
2016-05-26 23:10:59.940 Project[2553:94502] 309FFEB2DEC0F938D3E5FFD39112F9F6
2016-05-26 23:10:59.940 Project[2553:94502] (
DE2109D0C637CBD755E91ED18F85C17E,
309FFEB2DEC0F938D3E5FFD39112F9F6
)
2016-05-26 23:10:59.940 Project[2553:94502] 925DEC6CFB3FDF87530677FE93E97A46
2016-05-26 23:10:59.940 Project[2553:94502] (
925DEC6CFB3FDF87530677FE93E97A46,
DE2109D0C637CBD755E91ED18F85C17E,
309FFEB2DEC0F938D3E5FFD39112F9F6
)
而不是追踪925DEC6CFB3FDF87530677FE93E97A46
键时,它会显示在顶部。随着循环的继续,这种情况发生得更频繁,最终得到的顺序与我在309FFEB2DEC0F938D3E5FFD39112F9F6
数组中的顺序完全不同。
在字典中插入新条目时是否有办法保留订单?
答案 0 :(得分:3)
字典不会以任何保证顺序存储。它们旨在通过键引用。如果要按特定顺序访问它们,则需要保留有序的键集合(例如数组)并使用它来选择它们。