A collection of utilities that we share across swift-based projects at CELLULAR.
It is a standalone module with no external dependencies.
There are several extensions on KeyedDecodingContainer
.
Most of which are heavily inspired by Unbox.
Throughout the Codable
examples, the following struct is used:
import CELLULAR
public struct Planet: Codable {
public var discoverer: String
public var hasRingSystem: Bool
public var numberOfMoons: Int
public var distanceFromSun: Float // 10^6 km
public var surfacePressure: Double? // bars
public var atmosphericComposition: [String]
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
discoverer = try container.decode(forKey: .discoverer)
// equals: discoverer = try decode(String.self, forKey: key)
hasRingSystem = try container.decode(forKey: .hasRingSystem)
// equals: hasRingSystem = try decode(Bool.self, forKey: key)
numberOfMoons = try container.decode(forKey: .numberOfMoons)
// equals: numberOfMoons = try decode(Int.self, forKey: key)
distanceFromSun = try container.decode(forKey: .distanceFromSun)
// equals: distanceFromSun = try decode(Float.self, forKey: key)
surfacePressure = try container.decode(forKey: .surfacePressure)
// equals: surfacePressure = try decodeIfPresent(Double.self, forKey: key)
atmosphericComposition = try container.decode(forKey: .atmosphericComposition, allowInvalidElements: true) ?? []
}
}
TODO
TODO
- iOS 11.0+ | watchOS 5.0+ | tvOS 11.0+ | macOS 10.14+ | Ubuntu 14.04+
- Swift 5.0+
Once you have your Swift package set up, adding CELLULAR as a dependency is as easy as adding it to the dependencies
value of your Package.swift
.
dependencies: [
.package(url: "https://github.com/cellular/cellular-swift.git", from: "6.0.1")
]
CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate CELLULAR into your Xcode project using CocoaPods, specify it in your Podfile:
pod 'CELLULAR'
CELLULAR is released under the MIT license. See LICENSE for details.