- (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];
}];
}
iOS-數(shù)據(jù)緩存
最后編輯于 :
?著作權(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ù)。
【社區(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)于...
- 1.Realm 2.GYDataCenter 3.CoreData 4.FMDB 每個都有優(yōu)劣之分,但是現(xiàn)在比較火...
- 一、關(guān)于同一個URL的多次請求 有時候,對同一個URL請求多次,返回的數(shù)據(jù)可能都是一樣的,比如服務(wù)器上的某張圖片,...
- 說到數(shù)據(jù)同步,首先涉及到數(shù)據(jù)緩存,在實際項目開發(fā)中常用的是MVC模式,即controller去控制model在vi...
- IOS 數(shù)據(jù)大體可以分為兩類, 靜態(tài)數(shù)據(jù),例如文字,本地的圖標。 需要通過網(wǎng)絡(luò)請求去重新獲得的數(shù)據(jù),例如服務(wù)器上的...