BoxData
BoxData is a lightweight byte format data serialization library. With Box, you can compress Codable data up thousands of times lighter than JSON or Plist, and can read and write faster than those.
Example
When I saved data below.
| Type | File Size |
|---|---|
| Box | 155 B !!!!!! |
| JSON | 5.8 MB |
| Plist | 5.4 MB |
// Codable Data
struct Person: Codable {
let name: String
let age: UInt8
let birth:Conutry
struct Conutry: Codable {
let name: String
let id: UInt8
}
}
// Prepare Data
let alice = Person(name: "Alice", age: 16, birth: .init(name: "UK" , id: 12))
let bob = Person(name: "Bob" , age: 22, birth: .init(name: "America", id: 14))
/// 100000 data !!!
let people = Array(repeating: alice, count: 50000)
+ Array(repeating: bob , count: 50000)
Usage
You can use BoxEncoder and BoxDecoder like JSONEncoder or PropertyListEncoder .
do {
// encoding
let data = try BoxEncoder().encode(people)
// decoding
let decoded = try BoxDecoder().decode(Array<Person>.self, from: data)
} catch {
print(error)
}To run the example project, clone the repo, and run pod install from the Example directory first.
Options
Box Format has 2 options.
-
useStructureCacheThis option enable structure caching.
-
useCompressionThis option enable compression.
let encoder = BoxEncoder()
// set before encode
encoder.useStructureCache = true / false
encoder.useCompression = true / falseInstallation
BoxData is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'BoxData'Author
ObuchiYuki, [email protected]
License
BoxData is available under the MIT license. See the LICENSE file for more info.