如何保留将对象添加到NSDictionary
的方式?
我意识到NSDictionary
中的值没有特定的顺序,但在我的情况下,我需要保留使用setValue:forKey:
添加的顺序,就像数组一样。
我怎么能这样做?
任何帮助表示感谢。
答案 0 :(得分:2)
字典是哈希映射的,以便更快地检索。您无权修改其订单。
如果您想按顺序存储,则应使用数组。
或者你必须使用一些复杂的方法,继续使用键附加int orderNumber
(你需要在每个setObject / setValue之后递增它)。存储和检索:
NSDictionary *dict=[NSDictionary new];
NSString *key=....;
[dict setValue:@"some value" forKey:[NSString stringWithFormat:@"%d-%@",orderNumber, key]];
或者,您可以使用每个索引具有一个字典的数组。
另一种方法是将自定义类用作
@interface ....
@property(...) NSInteger index;
@property(...) NSString *key;
@property(...) id object;
// and methods to retrieve based on key, based on index etc
@end
编辑2:
发现与我一年前发布的内容非常相似,请参阅此OrderedDictionary。
答案 1 :(得分:0)
类似的东西:
static int index;
[myDictionary setValue:someValue forKey:[NSString stringWithFormat:@"key%d", index++]];
答案 2 :(得分:0)
您需要:
我更喜欢第二种方法,因为它将所有信息保存在一个地方。如果您未定义要存储的对象,则可能需要创建该对象的子类,或使用其他 order 成员将其封装在您自己的一个对象中。