iOS-數(shù)據(jù)緩存

- (void)viewDidLoad {
    [super viewDidLoad];
    self.isRefresh = NO;
    if([[NSFileManager defaultManager] fileExistsAtPath:self.path])
    {
        [self loadDataFromFile];
    }
    else
    {
        [self loadDataFromServer];
    }
}


#pragma mark -- 從本地加載
- (void)loadDataFromFile
{
    NSData *fileData = [NSData dataWithContentsOfFile:self.path];
    NSDictionary *objects = [NSJSONSerialization JSONObjectWithData:fileData options:NSJSONReadingMutableContainers error:nil];
    if(!objects)
    {
        return;
    }
 
//    if(self.isRefresh == NO)
//    {
//        [self.data removeAllObjects];
//    }
     
    [self.data removeAllObjects];


    NSArray *dataArray = objects[@"data"];
    for(id node in dataArray)
    {
        // 不同的Model類
        self.obj = [self createDataWithJsonNode:node];
        [self.data addObject:self.obj];
    }
    self.isRefresh = NO;
    
}


#pragma mark -- 從網(wǎng)絡(luò)加載
- (void)loadDataFromServer
{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager GET:self.url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        [self.tableView.header endRefreshing];
        [self.tableView.footer endRefreshing];
        if (responseObject) {
            // 把此文件路徑下的內(nèi)容全部刪掉
            [[NSFileManager defaultManager] removeItemAtPath:self.path error:nil];
            
            // 存盤
            [operation.responseData writeToFile:self.path atomically:NO];
            [self loadDataFromFile];
            
            [self.tableView reloadData];
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        NSLog(@"下載數(shù)據(jù)失敗...");
        [self.tableView.header endRefreshing];
        [self.tableView.footer endRefreshing];
    }];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文:http://www.cnblogs.com/wendingding/p/3950198.html 一、關(guān)于...
    Loki_閱讀 1,252評論 0 5
  • 1.Realm 2.GYDataCenter 3.CoreData 4.FMDB 每個都有優(yōu)劣之分,但是現(xiàn)在比較火...
    c42b9af86268閱讀 756評論 0 0
  • 一、關(guān)于同一個URL的多次請求 有時候,對同一個URL請求多次,返回的數(shù)據(jù)可能都是一樣的,比如服務(wù)器上的某張圖片,...
    攻克乃還_閱讀 639評論 0 3
  • 說到數(shù)據(jù)同步,首先涉及到數(shù)據(jù)緩存,在實際項目開發(fā)中常用的是MVC模式,即controller去控制model在vi...
    阿拉當閱讀 5,546評論 18 36
  • IOS 數(shù)據(jù)大體可以分為兩類, 靜態(tài)數(shù)據(jù),例如文字,本地的圖標。 需要通過網(wǎng)絡(luò)請求去重新獲得的數(shù)據(jù),例如服務(wù)器上的...
    懷心逝水閱讀 2,767評論 0 5

友情鏈接更多精彩內(nèi)容