【问题标题】:Load offline cached JSON using AFNetworking使用 AFNetworking 加载离线缓存的 JSON
【发布时间】:2015-07-22 19:14:19
【问题描述】:

我一直在尝试使用 AFNetworking 实现缓存,以便我缓存的 JSON 将离线加载。我以不同的方式尽力而为,我根本无法使缓存工作。我不知道我在这里错过了什么..

这是我AppDelegate中的代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

    var cache :NSURLCache = NSURLCache(memoryCapacity: 4*1024*1024, diskCapacity: 32*1024*1024, diskPath: "app_cache")
    NSURLCache.setSharedURLCache(cache)

    return true
}

这也是我用来获取 JSON 的代码:

let manager = AFHTTPRequestOperationManager()
manager.requestSerializer = AFJSONRequestSerializer()
manager.requestSerializer.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad
manager.GET("http://api.androidhive.info/json/movies.json", parameters: nil, success: { (operation, responseObject) -> Void in
    if let j: AnyObject = responseObject, let mediaObjects = j.valueForKeyPath("image") as? NSArray {
        self.imageArray = mediaObjects as! [String]
    }
    self.myCollectionView.reloadData()

    println("success")
    }, failure: { (operation, error) -> Void in

    })

所以在故障块中,我想加载缓存的数据,但我不知道我错过了什么? 请提供工作代码,缓存是一个很大的话题,我找不到一个完整的工作示例!

【问题讨论】:

    标签: ios objective-c swift afnetworking-2


    【解决方案1】:

    伙计,我不太了解swift,但只要我知道你必须做的是:

    首先,从你的 get 中捕获返回的数据,然后保存到 NSCachedURLResponse 中。在objective-c中会是这样的:

    NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:operation.response data:operation.responseData];
        [[NSURLCache sharedURLCache] storeCachedResponse:cachedResponse forRequest:urlRequest];
    

    之后,如果您的申请引发错误,您将恢复为该 URL 保存的先前数据。

    NSData *data = [[[NSURLCache sharedURLCache] cachedResponseForRequest:urlRequest] data];
    

    希望对你有帮助。

    【讨论】:

    • 很好,但是我从哪里得到请求并且我正在使用 AFNetworking GET ?
    • 你必须回调GET方法,成功和失败。要成功,您必须将返回的数据存储到 NSURLCache(我发送的第一个例程)中。如果失败,您必须在第一次申请时缓存预览 JSON。
    猜你喜欢
    • 2014-06-04
    • 2011-04-16
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2014-11-16
    相关资源
    最近更新 更多