Coding is more Swifty NSCoding. It can archive even pure Swift class and struct.
struct DataModel: Coding {
let string: String
let integer: Int
let double: Double
enum Key: String {
case string
case integer
case double
}
func encode(with coder: Encoder<Key>) {
coder.encode(string, for: .string)
coder.encode(integer, for: .integer)
coder.encode(double, for: .double)
}
static func decode(with decoder: Decoder<Key>) -> DataModel? {
guard let string = decoder.decodeString(for: .string) else { return nil }
let integer = decoder.decodeInteger(for: .integer)
let double = decoder.decodeDouble(for: .double)
return DataModel(string: string, integer: integer, double: double)
}
}
let model: DataModel = DataModel(string: "Hello", integer: 123, double: 3.14)
let data: Data = model.archive()
let unarchivedModel: DataModel = DataModel.unarchive(with: data)
github "tattn/Coding"
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Coding is released under the MIT license. See LICENSE for details.