OrderedDictionary

Swift 5.0 Swift Package Manager Carthage License: MIT Twitter: @lukaskubanek

OrderedDictionary 是 Swift 中有序字典数据结构的轻量级实现。

OrderedDictionary<Key: Hashable, Value> 结构体是一个通用集合,它结合了 Swift 标准库中 DictionaryArray 数据结构的特性。 像 Dictionary 一样,它存储键值对,其中每个键都是唯一的,并将每个键映射到一个关联的值。 像 Array 一样,它存储这些排序的键值对,并可以通过从零开始的整数索引进行访问。

OrderedDictionary 提供了类似于 Swift 标准库中可用集合的 API,例如通过键或索引访问内容、插入和删除元素、迭代、排序、转换、过滤等。

在内部,OrderedDictionary 使用由 Dictionary 组成的后备存储来存储键值对,并使用 Array 来管理有序的键。 这当然不是可以实现的最优性能的实现,但它在重用 Swift 标准库中的大部分功能的同时完成了它的工作。

要求

为了支持旧版本的 Swift,请参考此库的旧版本。 对于 Swift 4.2,请使用 3.x 版本;对于 Swift 4.0-4.1,请使用 2.x 版本。

Xcode 和 OS 版本的这些要求仅在库作为框架或通过 Xcode 项目集成时适用。

安装

Swift Package Manager

要使用 Swift Package Manager 安装 OrderedDictionary,请将其作为依赖项添加到您的 Package.swift 文件中

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/lukaskubanek/OrderedDictionary.git", from: "4.0.0")
    ],
    ...
)

Carthage

要使用 Carthage 安装 OrderedDictionary,请将其作为依赖项添加到您的 Cartfile

github "lukaskubanek/OrderedDictionary" ~> 4.0

然后将 OrderedDictionary.xcodeprojOrderedDictionary.framework 拖到您的 Xcode 项目/工作区中,并将您的目标链接到 OrderedDictionary.framework。 确保框架 被复制 到您的应用程序程序包中。

Git Submodules

您也可以通过 Git submodules 安装 OrderedDictionary,并将子模块中的 OrderedDictionary.xcodeproj 项目直接集成到您的 Xcode 工作区中。

关于 CocoaPods 的说明

尽管对 CocoaPods 的支持有很高的需求,但此库不会正式支持此分发方法。 如果您真的想通过 CocoaPods 集成此库,您可以创建和维护自定义 podspec(请参阅 这篇文章 的最后一部分)。

用法 & 文档

有关 OrderedDictionary 的 API 说明以及如何使用此数据结构的示例,请参阅文档注释全面的测试套件

更新日志

要查看更新日志,请参阅 GitHub 的 发布页面。 如果您从 3.x 版本升级,您可能需要查看 4.0 版本 中所做的更改列表。

鸣谢

OrderedDictionary 由 @lukaskubanek 构建,他是 Diagrams(Mac 的原生图表编辑器)的创始人和开发者。 这种数据结构被广泛用于驱动 Diagrams 的数据模型。