Latest 0.0.3
Homepage https://github.com/naru-jpn/Monaka
License MIT
Platforms ios 9.0
Authors

Swift
Carthage compatible
Platform
License

Overview

Monaka convert custom struct and fundamental values to NSData (also nested array and dictionary).

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.

Latest podspec

{
    "name": "Monaka",
    "version": "0.0.3",
    "summary": "Monaka is a Library to convert swifty values and NSData each other to support immutable data handling.",
    "homepage": "https://github.com/naru-jpn/Monaka",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "naru": "[email protected]"
    },
    "source": {
        "git": "https://github.com/naru-jpn/Monaka.git",
        "tag": "0.0.3"
    },
    "source_files": "Sources/*.swift",
    "platforms": {
        "ios": "9.0"
    }
}

Pin It on Pinterest

Share This