Swift 的 ObjectEncoder
使用 [String: Any]
,[Any]
或 Any
作为有效负载实现的 SE-0167 Swift Encoders。
用法
import Foundation
import ObjectEncoder
// single value
let string = "Hello, ObjectEncoder"
let encodedString = try ObjectEncoder().encode(string)
(encodedString as AnyObject).isEqual(to: string) // true
let decodedString = try ObjectDecoder().decode(String.self, from: encodedString)
// dictionary
struct S: Codable { let p1: String }
let s = S(p1: "string")
guard let encodedS = try ObjectEncoder().encode(s) as? [String: Any] else { fatalError() }
encodedS["p1"] // "string"
let decodedS = try ObjectDecoder().decode(S.self, from: encodedS)
decodedS.p1 // "string"
// array
let array: [S] = [s, s]
guard let encoded = try ObjectEncoder().encode(array) as? [[String: Any]] else { fatalError() }
encoded[0]["p1"] // "string"
let decoded = try ObjectDecoder().decode([S].self, from: encoded)
decoded[0].p1 // "string"
要求
- Swift 4.0+ 在 Darwin 上,Swift 4.0.2+ 在 swift-corelibs-foundation 上
作者
Norio Nomura
许可
ObjectEncoder 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。