Created
July 30, 2017 08:49
-
-
Save hcn1519/0d685b1f0aba74ed9577e9cab1b02b6f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
// Use Basic Encoder & Decoder By Codable | |
struct Book: Codable { | |
var title: String | |
var author: String | |
var price: Int | |
} | |
let book1 = Book(title: "Hello World", author: "hcn1519", price: 10000) | |
let encoder = JSONEncoder() | |
if let encodedData = try? encoder.encode(book1) { | |
let decoder = JSONDecoder() | |
let decodedData = try? decoder.decode(Book.self, from: encodedData) | |
} | |
// Make Serializable Protocol | |
protocol Serializable: Codable { | |
func serialize() -> Data? | |
} | |
extension Serializable { | |
func serialize() -> Data? { | |
let encoder = JSONEncoder() | |
return try? encoder.encode(self) | |
} | |
} | |
struct Laptop: Serializable { | |
var name: String | |
var type: String | |
} | |
let macbook = Laptop(name: "MacBookPro", type: "15 mid") | |
if let dataOfMacbook = macbook.serialize() { | |
let decoder = JSONDecoder() | |
let decodedMacbook = try? decoder.decode(Laptop.self, from: dataOfMacbook) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment