如何保留添加对象的方式NSDictionary
?
我意识到 中的值没有特定的顺序NSDictionary
,但在我的情况下,我需要保留使用添加的顺序setValue:forKey:
,例如数组。
我怎么能这样做?
任何帮助表示赞赏。
如何保留添加对象的方式NSDictionary
?
我意识到 中的值没有特定的顺序NSDictionary
,但在我的情况下,我需要保留使用添加的顺序setValue:forKey:
,例如数组。
我怎么能这样做?
任何帮助表示赞赏。
字典是哈希映射的,以便更快地检索。你不能修改它的顺序。
如果要按顺序存储,则应使用数组。
或者您必须使用一些复杂的方法,继续使用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。
像这样的东西:
static int index;
[myDictionary setValue:someValue forKey:[NSString stringWithFormat:@"key%d", index++]];
您要么需要:
我更喜欢第二种方法,因为它将所有信息保存在一个地方。如果您存储的对象不是您定义的,那么您可能需要创建该对象的子类,或将其封装在您自己的对象之一中,并使用附加的order成员。