2016-07-03 36 views
0

我目前正在編寫iOS應用程序,該應用程序從JSON格式的API下載信息,然後將其顯示在應用程序中。Swift:從URL加載JSON並存儲在緩存或文件系統中

此應用程序的主要功能之一是它可以脫機工作以及在線工作,因此應該有一個緩存版本以及一個在線版本。

通過互聯網閱讀我的衝擊後,我還沒有找到任何這樣的例子的例子。

我發現的唯一的東西就是HanekeSwift,但文檔看起來不完整,沒有辦法清除緩存,我甚至不確定這是基於內存的緩存還是基於文件系統緩存。

由於有很多方法可以做到這一點,核心數據,文件系統框架等。我不確定哪一個是最好的選擇,理論上來說,我打破了我所需要的思維過程做的是:

  • 檢查JSON文件系統上存在
  • 如果不是從網絡上下載它,它如果文件存在加載它存儲供以後使用(最好爲一個字符串格式)
  • 轉換爲swiftyJSON對象

我覺得核心的數據將是矯枉過正,我覺得像文件系統方式作爲日大多數文件系統的可可豆莢/庫似乎並不與當前版本的SWIFT(2.3)

任何人都可以兼容分享一下這樣做的通用標準方式,或者最適合我的使用目的和原因的選項。

最親切的問候

回答

-1

SwiftifyJSON使得支持歸檔對象。 試試這個

class HSCache: NSObject { 

static var defaults: NSUserDefaults = NSUserDefaults() 


class func cacheThis(key: String, object : AnyObject) { 
    defaults.setObject(NSKeyedArchiver.archivedDataWithRootObject(object), forKey: key) 
    defaults.synchronize() 
} 
class func getFromCache(key: String, type : AnyClass) -> AnyClass? { 
    if defaults.objectForKey(key) != nil { 
     return NSKeyedUnarchiver.unarchiveObjectWithData(defaults.objectForKey(key) as! NSData) as? AnyClass 
    } 
    return nil 
} 

class func deleteFromCache(key: String) { 
    defaults.removeObjectForKey(key) 
    defaults.synchronize() 
} 

} 
相關問題