本文主要是介绍ios离线读取上次网络请求的数据。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
记录下自己学的东西。
请求的是一个公告栏,有公告的title,发布的日期,还有公告详情的url(便于下次请求查看公告详情)
noticeTitle,noticeDate,noticeUrl 都是数组
一,首先判断沙盒里面是否含有我们前一次请求存下的数据。
- (void)viewDidLoad
{........
//取沙盒里的数据
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *noticeTitlePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"noticeTitle.txt"];
NSString *noticeDatePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"noticeDate.txt"];
NSString *noticeUrlPath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"noticeUrl.txt"];
_noticeTitle = [[NSMutableArrayalloc] initWithContentsOfFile:noticeTitlePath];
_noticeDate = [[NSMutableArrayalloc] initWithContentsOfFile:noticeDatePath];
_noticeUrl = [[NSMutableArrayalloc] initWithContentsOfFile:noticeUrlPath];
if (!_noticeTitle) {
[SVProgressHUDshowWithStatus:@"加载中..."maskType:SVProgressHUDMaskTypeClear];
[NSThreaddetachNewThreadSelector:@selector(setLoadData)toTarget:selfwithObject:nil];
//如果没有,线程去请求数据。setLoadData方法是请求数据的方法。
}
}
二,在请求数据完成后,存储到沙盒中,如果是第二次存储,文件会自动替换。
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *noticeTitlePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"noticeTitle.txt"];
NSString *noticeDatePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"noticeDate.txt"];
NSString *noticeUrlPath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"noticeUrl.txt"];
[self.noticeTitlewriteToFile:noticeTitlePath atomically:YES];
[self.noticeDatewriteToFile:noticeDatePath atomically:YES];
[self.noticeUrlwriteToFile:noticeUrlPath atomically:YES];
//这三个数组是数据,获取返回信息,解析后加入进数组,写入沙盒。
三,用户手动更新公告栏,再次调用
[NSThreaddetachNewThreadSelector:@selector(setLoadData)toTarget:selfwithObject:nil];这样,沙盒里面的数据就是最新的公告栏信息了。(新的信息会自动替换就的信息)
这篇关于ios离线读取上次网络请求的数据。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!