我有这个代码
NSDictionary *tempDict = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:@"authorId","authorName","authorDescription",@"image",nil] forKeys:
[NSArray arrayWithObjects:@"id",@"name",@"desc",@"image",nil]];
NSLog(@"%@",[tempDict description]);
输出是
desc = authorDescription;
id = authorId;
image = image;
name = authorName;
出于某种原因,您会看到字典按字母顺序按键排序。这对我不利,因为我需要将这个字典添加到一个 plist,而这个 plist 已经有一些带有未排序键的字典。那么如何避免这种排序呢?
最佳答案
排序是由于[NSDictionary description]
,它被NSLog
使用。这不是 NSDictionary
的基本功能。如果您通过快速枚举或 [dictionary allKeys]
访问键,您将不会发现它已排序。
但是对于您的基本问题,如果您想要的是“未排序”(随机),那么“已排序”只是可能的随机序列之一。如果您真的想要未排序,那么排序应该无关紧要,因为它是一个子集。
如果排序很重要,那么您指的不是“未排序”,而是“一些其他排序顺序,例如插入顺序”。如果您需要以某种方式对 NSDictionary
进行排序,则需要通过将其转换为 NSArray
来实现这一点。
关于objective-c - 停止 NSDictionary 对其项目进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9797621/