我正在使用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是导航控制器的一部分,并且转到视图重新获取数据但返回视图却没有。
示例:
我希望从view1开始 - &gt;如果数据在缓存中有,则view2不需要每次都重新获取数据,并且刷新的唯一方法是在用户重新登录应用程序或使用pull to refresh功能之后。
我是Swift开发的新手,所以非常感谢任何有关如何使用Alamofire或Haneke缓存JSON的指导。
Haneke看起来很有希望,但我不确定如何使用Alamofires post参数实现它。
非常感谢。