在 NSDictionary 中存储的对象顺序是未定义的。通常,能够遍历一系列键/值对,并按它们插入的顺序返回对象是非常有用的。这个库提供了两个类,OrderedDictionary 和 MutableOrderedDictionary,用于实现这种行为。
注意:'支持'表示库已使用此版本进行测试。'兼容'表示库应在操作系统版本上工作(即它不依赖于任何不可用的 SDK 功能),但不再进行兼容性测试,可能需要调整或错误修复才能正确运行。
OrderedDictionary 需要 ARC。如果想在非 ARC 项目中使用 OrderedDictionary,只需将 -fobjc-arc 编译器标志添加到 OrderedDictionary.m 类中。要做到这一点,请转到目标设置的构建阶段标签,打开编译源组,双击列表中的 OrderedDictionary.m,在弹出窗口中输入 -fobjc-arc。
如果您想将整个项目转换为 ARC,请取消注释 OrderedDictionary.m 中的 #error 行,然后在 Xcode 中运行 Edit > Refactor > Convert to Objective-C ARC... 工具,并确保所有要使用 ARC 的文件(包括 OrderedDictionary.m)都被选中。
对有序字典的访问固有地是线程安全的,因为它是不变的。对可变有序字典的访问在未确保没有线程在另一个线程写入字典的同时尝试从字典中读取时不是线程安全的。
您可以通过 CocoaPods 或手动将 OrderedDictionary.h 和 .m 文件拖入您的项目中来安装 OrderedDictionary。
NSDictionary 有一个方便的成对方法 initWithContentsOfFile:
和 writeToFile:
从 plist 中读取/写入。由于 Apple 的属性列表解析器返回一个已经错乱顺序的 NSDictionary,因此无法支持这些原生实现。
然而,从版本1.4开始,OrderedDictionary 现在支持使用自定义解析实现从/到XML plist文件的读写,不支持二进制和ASCII plist文件。
警告: 当您将XML plist包含到项目中时,它将被编译为二进制plist(在实际发布模式中),这意味着即使您在使用OrderedDictionary成功加载此类文件时,这可能在最终的app中出现问题。有两种解决方法
第二种方法的优点是不影响除OrderedDictionary使用的plist文件之外的文件,但这可能使得编辑文件更加不方便,因为Xcode不会将其识别为属性列表。
版本1.4
版本1.3
版本1.2
版本1.1.1
版本1.1
版本1.0