Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Foundation
- import Disk
- public protocol Cachable: Codable{
- associatedtype CacheObject
- var cacheName: String {get}
- static func cacheId(_ id: String?) -> String
- static func loadCache(cacheName: String) -> CacheObject?
- static func removeCache(cacheName: String)
- func saveCache() -> Bool
- }
- extension Cachable where CacheObject: Cachable{
- static func loadCache(cacheName: String) -> CacheObject?{
- do {
- let cache = try Disk.retrieve(
- cacheName,
- from: .caches,
- as: CacheObject.self
- )
- return cache
- } catch {
- return nil
- }
- }
- static func removeCache(cacheName: String) {
- do {
- try Disk.remove(
- cacheName,
- from: .caches
- )
- } catch {
- print("Remove cache is failure")
- }
- }
- @discardableResult func saveCache() -> Bool{
- do {
- try Disk.save(
- self,
- to: .caches,
- as: self.cacheName
- )
- return true
- } catch {
- return false
- }
- }
- }
Add Comment
Please, Sign In to add comment