新的 NSDictionary 条目顺序不正确
New NSDictionary entry not in right order
我有一个名为 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
)
正如您看到的,当我插入 925DEC6CFB3FDF87530677FE93E97A46
而不是在 309FFEB2DEC0F938D3E5FFD39112F9F6
键之后时,它位于顶部。随着循环的进行,这种情况发生得越来越频繁,我最终得到的顺序与我在 sortedRefs
数组中的顺序完全不同。
有没有办法在我的字典中插入新条目时保持顺序?
字典的存储顺序没有任何保证。它们被设计为通过键引用。如果你想以特定顺序访问它们,你需要保留一个有序的键集合(例如数组)并使用它来选择它们。
我有一个名为 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
)
正如您看到的,当我插入 925DEC6CFB3FDF87530677FE93E97A46
而不是在 309FFEB2DEC0F938D3E5FFD39112F9F6
键之后时,它位于顶部。随着循环的进行,这种情况发生得越来越频繁,我最终得到的顺序与我在 sortedRefs
数组中的顺序完全不同。
有没有办法在我的字典中插入新条目时保持顺序?
字典的存储顺序没有任何保证。它们被设计为通过键引用。如果你想以特定顺序访问它们,你需要保留一个有序的键集合(例如数组)并使用它来选择它们。