Ios 新词典条目的顺序不正确

Ios 新词典条目的顺序不正确,ios,objective-c,nsarray,nsdictionary,Ios,Objective C,Nsarray,Nsdictionary,我有一个名为sortedRefs的NSString值数组,每个值也是名为quotes的NSDictionary的键 我要做的是,如果满足条件,将该键及其相关值传递到一个新的NSDictionary for (NSString *key in sortedRefs) { NSLog(@"%@", key); if ([[self.quotesManager.quotes[key] valueForKey:@"active"] boolValue]) { [self.

我有一个名为
sortedRefs
NSString
值数组,每个值也是名为
quotes
NSDictionary
的键

我要做的是,如果满足条件,将该键及其相关值传递到一个新的
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
)
正如您所看到的,当我插入
925dec6cfb3fdf8753067fe93e97a46
而不是在
309ffebdec0f938d3e5ffd39112f9f6
键后,它将位于顶部。随着循环的进行,这种情况发生得越来越频繁,我最终得到的顺序与我在
sortedRefs
数组中得到的顺序完全不同


在我的字典中插入新条目时,有没有办法保持顺序?

字典不按任何保证的顺序存储。它们被设计为由键引用。如果您想按特定顺序访问它们,则需要保留一个有序的键集合(例如数组),并使用该集合来选择它们。

根据定义,字典不会排序或排序。如果需要按顺序排列,那么字典是错误的数据结构选择。