Home

Awesome

<img src="https://github.com/naru-jpn/Monaka/blob/master/Logo2.png?raw=true" width="200" />

Monaka

Swift Carthage compatible Platform License

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.