方案:
1.網(wǎng)絡(luò)數(shù)據(jù)優(yōu)先:每次都是從網(wǎng)絡(luò)獲取數(shù)據(jù),如果沒有網(wǎng)絡(luò)黑低,從本地獲取滑蚯。
2.本地?cái)?shù)據(jù)優(yōu)先:每次都是從本地獲取,如果本地不存在虐杯,從網(wǎng)絡(luò)獲取。
3.智能模式昧港,先從本地獲取數(shù)據(jù)擎椰,然后加載,同時繼承從服務(wù)器獲取數(shù)據(jù)创肥,當(dāng)從服務(wù)器獲取數(shù)據(jù)后达舒,然后刷新加載服務(wù)器數(shù)據(jù)值朋。
1.如何判斷有沒有網(wǎng)絡(luò)?
需要用到Reachability第三方庫巩搏,可以從GitHub上下載昨登。導(dǎo)入庫后
Reachability *reachability = [Reachability reachabilityWithHostName:@"http://www.baidu.com"];
//獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)
NetworkStatus status = reachability.currentReachabilityStatus;
//沒有網(wǎng)絡(luò)
if (status == NotReachable)
{
//從本地讀取
//刷新界面
NSLog(@"從數(shù)據(jù)庫中獲取");
}
//有網(wǎng)絡(luò)
else
{
/**
* 請求網(wǎng)絡(luò)數(shù)據(jù)
*/
NSLog(@"從網(wǎng)絡(luò)獲取");
}
2.永久數(shù)據(jù)保存方式:
1.NSUserDefaults
2.歸檔(序列化)
3.文件保存
4.數(shù)據(jù)庫(sqlite)
5.CoreData
6.KeyChain
3.app目錄結(jié)構(gòu):
家目錄下有三個文件夾,在xcode5之前贯底,沙盒和里面有4個文件丰辣,多一個app。(家目錄:即沙盒(SandBox)禽捆,沙盒目的就是保護(hù)當(dāng)前應(yīng)用程序的數(shù)據(jù)笙什,兩個不同的app不能共用一個app的沙盒數(shù)據(jù)。)
3個文件:
1.Documents:保存用戶數(shù)據(jù):用戶產(chǎn)生的數(shù)據(jù)胚想,比如下載圖片琐凭,下載文件。改文件夾itunes備份里面的數(shù)據(jù)浊服。
2.Library:有2個子文件夾统屈。分別是Caches和Preferences。一般緩存文件一般都保存到Caches文件夾下面牙躺。
3.tmp:臨時文件愁憔,當(dāng)前程序終止的時候,該文件夾的數(shù)據(jù)會自動丟失孽拷。
注意:家目錄在真機(jī)上沒有權(quán)限惩淳。
獲取Documents路徑
/*
參數(shù)1:路徑名字(ios能用到的:NSCachesDirectory,NSDocumentDirectory乓搬,NSLibraryDirectory)
參數(shù)2:NSUserDomainMask(用戶安裝目錄)
參數(shù)3:YES表示完整路徑
*/
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSLog(@"%@",path);
獲取Cache目錄
path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
NSLog(@"%@",path);
獲取tmp路徑
NSTemporaryDirectory();