objective-c - 停止 NSDictionary 对其项目进行排序

标签 objective-c cocoa sorting nsdictionary

我有这个代码

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/

相关文章:

javascript - 首先通过在其他数组中包含 ID 对数组进行排序,然后按日期排序

java - 找到比较器可能不起作用的情况

ios - iOS 中的 GCD 总是创建新线程

iPhone Objective C内存分配

objective-c - 来自字符串的 UIControlEvents 变量

objective-c - setApplicationIconImage - OS X

objective-c - 模态表窗口未居中

cocoa - 如何格式化/着色 NSTextView 字符串的技术

Javascript 数组按多条件排序

objective-c - 我应该从 Apple 的 Core Data Utility 教程中获得什么值?