AnyCodable-FlightSchool 0.6.7

AnyCodable-FlightSchool 0.6.7

Mattt 维护。



AnyCodable

Build Status License Swift Version Cocoapods platforms Cocoapods compatible Carthage compatible

EncodableDecodableCodable 值提供的类型擦除包装。

此功能在Flight School Guide to Swift Codable 的第 3 章中进行了讨论。

安装

Swift 包管理器

将 AnyCodable 包添加到 Package.swift 中您的目标的依赖关系中

import PackageDescription

let package = Package(
  name: "YourProject",
  dependencies: [
    .package(
        url: "https://github.com/Flight-School/AnyCodable",
        from: "0.6.0"
    ),
  ]
)

然后运行 swift build 命令构建您的项目。

CocoaPods

您可以通过将以下行添加到您的 Podfile 中使用 CocoaPods 安装 AnyCodable

pod 'AnyCodable-FlightSchool', '~> 0.6.0'

运行 pod install 命令下载库并将其集成到您的 Xcode 项目中。

注意该库的模块名称为 "AnyCodable",即要使用它,您只需将 import AnyCodable 添加到 Swift 代码的顶部,就像其它安装方式一样。因为这个包名为 "AnyCodable-FlightSchool",因为已存在一个名为 "AnyCodable" 的包。

Carthage

使用 Carthage 在您的 Xcode 项目中使用 AnyCodable,请在 Cartfile 中指定它。

github "Flight-School/AnyCodable" ~> 0.6.0

然后运行 carthage update 命令来构建框架,并将构建好的 AnyCodable.framework 拖动到您的 Xcode 项目中。

使用

AnyEncodable

import AnyCodable

let dictionary: [String: AnyEncodable] = [
    "boolean": true,
    "integer": 1,
    "double": 3.141592653589793,
    "string": "string",
    "array": [1, 2, 3],
    "nested": [
        "a": "alpha",
        "b": "bravo",
        "c": "charlie"
    ],
    "null": nil
]

let encoder = JSONEncoder()
let json = try! encoder.encode(dictionary)

AnyDecodable

let json = """
{
    "boolean": true,
    "integer": 1,
    "double": 3.141592653589793,
    "string": "string",
    "array": [1, 2, 3],
    "nested": {
        "a": "alpha",
        "b": "bravo",
        "c": "charlie"
    },
    "null": null
}
""".data(using: .utf8)!

let decoder = JSONDecoder()
let dictionary = try! decoder.decode([String: AnyDecodable].self, from: json)

AnyCodable

AnyCodable 可以用来包装值进行编码和解码。

许可

MIT

联系

Mattt (@mattt)