Coding is more Swifty NSCoding. It can archive even pure Swift class and struct.
structDataModel:Coding{letstring:Stringletinteger:Intletdouble:DoubleenumKey: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)}staticfunc decode(with decoder:Decoder<Key>)->DataModel?{guardlet string = decoder.decodeString(for:.string)else{returnnil}letinteger= decoder.decodeInteger(for:.integer)letdouble= decoder.decodeDouble(for:.double)returnDataModel(string: string, integer: integer, double: double)}}letmodel:DataModel=DataModel(string:"Hello", integer:123, double:3.14)letdata:Data= model.archive()letunarchivedModel: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.