59 lines
1.2 KiB
Swift
59 lines
1.2 KiB
Swift
//
|
|
// UserDefaultConvertible.swift
|
|
// LifeGameApp
|
|
//
|
|
// Created by Yusuke Hosonuma on 2020/08/01.
|
|
//
|
|
|
|
import Foundation
|
|
import SwiftUI
|
|
|
|
public protocol UserDefaultConvertible {
|
|
init?(with object: Any)
|
|
func object() -> Any?
|
|
}
|
|
|
|
extension Bool: UserDefaultConvertible {
|
|
public init?(with object: Any) {
|
|
guard let value = object as? Bool else { return nil }
|
|
self = value
|
|
}
|
|
|
|
public func object() -> Any? {
|
|
self
|
|
}
|
|
}
|
|
|
|
extension Int: UserDefaultConvertible {
|
|
public init?(with object: Any) {
|
|
guard let value = object as? Int else { return nil }
|
|
self = value
|
|
}
|
|
|
|
public func object() -> Any? {
|
|
self
|
|
}
|
|
}
|
|
|
|
extension Double: UserDefaultConvertible {
|
|
public init?(with object: Any) {
|
|
guard let value = object as? Double else { return nil }
|
|
self = value
|
|
}
|
|
|
|
public func object() -> Any? {
|
|
self
|
|
}
|
|
}
|
|
|
|
extension Color: UserDefaultConvertible {
|
|
public init?(with object: Any) {
|
|
guard let data = object as? Data, let color = Color(rawValue: data) else { return nil }
|
|
self = color
|
|
}
|
|
|
|
public func object() -> Any? {
|
|
self.rawValue
|
|
}
|
|
}
|