Caché Alamofire JSON usando Haneke

Estoy usando Alamofire para realizar todas las llamadas de la API de la networking para get un montón de files JSON diferentes (dependiendo de la vista en que esté el usuario).

Algunos de los JSON obtienen detalles de perfil de usuario, algunas configuraciones de usuario, algunos datos para una vista de tabla.

Estoy usando el siguiente

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!) } } 

y tengo un enrutador configurado

 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 } } } 

Cada vez que cargo cualquier vista que tenga una vista de tabla (por ejemplo, vista 2), la aplicación vuelve a search los datos de la API. La vista de tabla es parte de un controller de navigation y al ir a la vista vuelve a get los datos pero no vuelve a la vista.

Ejemplo:

  1. Caso 1: view1 -> view2 = vuelve a search JSON cada vez independientemente
  2. Caso 2: view2 -> view3 = cargar los detalles de la celda de la tabla que se aprovechó
  3. Caso 3: view3 -> view2 = no vuelve a search JSON
  4. Caso 4: view2 -> view1 = Supongo que view2 ya no es necesario, por lo que se descarta

Me gustaría que pasar de view1 -> view2 no necesite volver a search los datos cada vez si lo tiene en caching y la única forma de actualizar es después de que el usuario regrese a la aplicación o use la extracción para actualizar característica.

Soy nuevo en el desarrollo de Swift así que cualquier guía sobre cómo almacenar en caching JSON usando Alamofire o Haneke es muy apreciada.

Haneke parece prometedor, pero no estoy seguro de cómo implementarlo usando los parameters de publicación de Alamofires.

Muchas gracias.