Cache Alamofire JSON с использованием Haneke
Я использую Alamofire для выполнения всех вызовов сетевого API, чтобы получить кучу разных файлов JSON (в зависимости от представления пользователя).
Часть JSON получает данные профиля пользователя, некоторые пользовательские настройки, некоторые данные для просмотра таблицы.
Я использую ниже
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
}
}
}
Каждый раз, когда я загружаю любое представление, у которого есть табличное представление (скажем, view2), приложение повторно выбирает данные из API. Представление таблицы является частью контроллера навигации, и переход к представлению повторно выбирает данные, но возврат к представлению - нет.
Пример:
- Случай 1: view1 -> view2 = повторно загружать JSON каждый раз, независимо
- Случай 2: view2 -> view3 = загрузить информацию о ячейке таблицы, которая была нажата
- Случай 3: view3 -> view2 = не повторно загружать JSON
- Случай 4: view2 -> view1 = Я предполагаю, что view2 больше не нужен, поэтому он отклонен
Мне бы хотелось, чтобы при переходе из view1 -> view2 не нужно было повторно извлекать данные каждый раз, если они есть в кеше, и единственный способ обновить это либо после того, как пользователь снова войдет в приложение, либо с помощью функции pull для обновления. особенность.
Я новичок в разработке Swift, поэтому любые рекомендации по кешированию JSON с использованием Alamofire или Haneke очень ценятся.
Ханеке выглядит многообещающе, но я не уверен, как реализовать это, используя параметры сообщений Alamofires.
Большое спасибо.