使用Haneke缓存Alamofire JSON

时间:2015-11-10 21:54:09

标签: ios caching swift2 alamofire haneke

我正在使用Alamofire执行所有网络API调用以获取一堆不同的JSON文件(取决于用户所在的视图)。

一些JSON获取用户配置文件详细信息,一些用户设置,一些用于tableview的数据。

我正在使用以下

let postParameters: [String: AnyObject] = ["apiKey":"\(Constants.Variables.apiKey)",
"domain":"\(Constants.Variables.apiDomain)",
"authToken":"\(authToken)",
"password":"\(password)",
"from":"\(from)",
"to":"\(to)"]

Alamofire.request(Router.GetActivities(postParameters))
   .validate(statusCode: 200..<300)
   .validate(contentType: ["application/json"])
   .responseJSON { response in
       if response.result.isSuccess {
          let responseJSON = JSON(response.result.value!)
       }
}

我设置了路由器

enum Router: URLRequestConvertible {
  static let baseURLString = "\(Constants.APIPath.URL)"
  static var OAuthToken: String?
  case GetActivities([String: AnyObject])

  var method: Alamofire.Method {
    switch self {
    case .GetActivities:
        return .GET
    }
  }

  var path: String {
    switch self {
      case .GetActivities(_):
        return "/activity.php/get"
    }
  }

  var URLRequest: NSMutableURLRequest {
    let URL = NSURL(string: Router.baseURLString)!
    let mutableURLRequest = NSMutableURLRequest(URL: URL.URLByAppendingPathComponent(path))
    mutableURLRequest.HTTPMethod = method.rawValue

    if let token = Router.OAuthToken {
        mutableURLRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
    }

    switch self {
      case .GetActivities(let parameters):
          return Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0
      }
   }
}

每次我加载任何包含tableview的视图(比如view2)时,app都会从API中重新获取数据。 tableview是导航控制器的一部分,并且转到视图重新获取数据但返回视图却没有。

示例:

  1. 案例1:view1 - &gt; view2 =每次重新获取JSON,无论
  2. 案例2:view2 - &gt; view3 =已加载的表格单元格的加载详细信息
  3. 案例3:view3 - &gt; view2 =不重新获取JSON
  4. 案例4:view2 - &gt; view1 =我猜不再需要view2所以它被解雇了
  5. 我希望从view1开始 - &gt;如果数据在缓存中有,则view2不需要每次都重新获取数据,并且刷新的唯一方法是在用户重新登录应用程序或使用pull to refresh功能之后。

    我是Swift开发的新手,所以非常感谢任何有关如何使用Alamofire或Haneke缓存JSON的指导。

    Haneke看起来很有希望,但我不确定如何使用Alamofires post参数实现它。

    非常感谢。

0 个答案:

没有答案