新的NSDictionary条目输入顺序不正确

时间:2016-05-26 22:38:26

标签: ios objective-c nsarray nsdictionary

我有一组名为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数组中的顺序完全不同。

在字典中插入新条目时是否有办法保留订单?

1 个答案:

答案 0 :(得分:3)

字典不会以任何保证顺序存储。它们旨在通过键引用。如果要按特定顺序访问它们,则需要保留有序的键集合(例如数组)并使用它来选择它们。