Awesome
<img src="https://github.com/naru-jpn/Monaka/blob/master/Logo2.png?raw=true" width="200" />Monaka
Overview
Monaka convert custom struct and fundamental values to NSData (also nested array and dictionary).
<img src="https://github.com/naru-jpn/Monaka/blob/master/WhatMonaka.png?raw=true" width="400" />Purpose
You can persistent store of your defined struct. Your defined struct is for example 'latest selected tab index', 'array of struct fetched from API' or 'current application state'. I think these should be represented as simple struct and can be stored in application. Converted data can be written in file or NSUserDefault.
Installation
Carthage
github "naru-jpn/Monaka"
CocoaPods
pod 'Monaka'
Usage
For Standard Variables
Packable
variable ⇄ NSData.
// Pack
let value: Int = 10
let data: NSData = Monaka.pack(value)
// Unpack
let unpacked = Monaka.unpack(data) as? Int
For Custom Struct
1.Make a custom struct confirming protocol CustomPackable
struct Sample: CustomPackable {
let id: String
// Return new struct from applied properties.
static var restoreProcedure: ([String : Packable] -> Packable?) = { (properties: [String : Packable]) -> Packable? in
guard let id = properties["id"] as? String else {
return nil
}
return Sample(id: id)
}
}
2.Activate your custom struct.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Monaka.activate(Sample)
// Other codes...
return true
}
3.Pack/Unpack
You can Pack/Unpack as standard types.
// Pack
let value: SampleStruct = SampleStruct(id: NSUUID().UUIDString)
let data: NSData = Monaka.pack(value)
// Unpack
let unpacked = Monaka.unpack(data) as? SampleStruct
License
Monaka is released under the MIT license. See LICENSE for details.