Skip to content
This repository was archived by the owner on Oct 19, 2024. It is now read-only.
/ AnyCodable Public archive

Type-erased wrappers for Encodable, Decodable, and Codable values

License

Notifications You must be signed in to change notification settings

Flight-School/AnyCodable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

862808b · Oct 22, 2022

History

71 Commits
May 13, 2021
May 13, 2021
Jul 19, 2020
Jun 28, 2018
Oct 22, 2022
Oct 22, 2022
May 11, 2019
Oct 22, 2022
Oct 22, 2022
Apr 30, 2019
Apr 23, 2018
Jun 14, 2021
May 29, 2021

Repository files navigation

AnyCodable

Build Status License Swift Version Cocoapods platforms Cocoapods compatible Carthage compatible

Type-erased wrappers for Encodable, Decodable, and Codable values.

This functionality is discussed in Chapter 3 of Flight School Guide to Swift Codable.

Installation

Swift Package Manager

Add the AnyCodable package to your target dependencies in Package.swift:

import PackageDescription

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

Then run the swift build command to build your project.

CocoaPods

You can install AnyCodable via CocoaPods by adding the following line to your Podfile:

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

Run the pod install command to download the library and integrate it into your Xcode project.

Note The module name for this library is "AnyCodable" --- that is, to use it, you add import AnyCodable to the top of your Swift code just as you would by any other installation method. The pod is called "AnyCodable-FlightSchool" because there's an existing pod with the name "AnyCodable".

Carthage

To use AnyCodable in your Xcode project using Carthage, specify it in Cartfile:

github "Flight-School/AnyCodable" ~> 0.6.0

Then run the carthage update command to build the framework, and drag the built AnyCodable.framework into your Xcode project.

Usage

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 can be used to wrap values for encoding and decoding.

License

MIT

Contact

Mattt (@mattt)