Swift:从URL加载JSON并存储在缓存或文件系统中

时间:2016-07-03 15:02:52

标签: ios swift

我目前正在编写一个iOS应用程序,它以JSON格式从API下载信息,然后在应用程序中显示。

此应用程序的一个主要功能是它可以脱机工作以及在线工作,因此应该有缓存版本和在线版本。

通过互联网阅读后,我没有找到任何这种方法的例子。

我发现的唯一一件事就是HanekeSwift,但文档似乎不完整,没有办法清除缓存,我甚至不确定这是否是基于内存的缓存或基于文件系统的缓存。

由于有很多方法可以做到这一点,核心数据,文件系统框架等。我不确定哪一个最适合,理论上要打破我的思维过程所有我需要做的是:

  • 检查系统上是否存在JSON文件
  • 如果没有从网络下载并存储以供以后使用(最好是字符串格式)
  • 如果文件存在,请将其加载到swiftyJSON对象中

我觉得核心数据会有点过分,我觉得文件系统方式已经过时了,因为大多数文件系统可可豆荚/库似乎都不兼容当前的swift版本(2.3)

任何人都可以分享一下通用标准的做法是什么,或者哪种选择最适合我的使用目的和原因。

最诚挚的问候

1 个答案:

答案 0 :(得分:-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()
}

}