當一些數據需要保存到手機上方便下次複用,就需要用到系統這三種的存儲方法,各有自己的長處,下面讓我們瞭解各種方法
----plist存儲
//數據一部都是存取字典和數組,這時我們就可以使用plist文件存儲,然後把它放到沙盒當中,
//當然plist在平臺是沒有的,只有iOS當中纔有,他是iOS特有的存儲方法
-(void)save{
//第一步:獲取沙盒
//這裏我們需要用到一個文件搜索方法
//在某個範圍內搜索文件夾的路徑.
//參數一: directory:獲取哪個文件夾
//參數二:domainMask:在哪個路徑下搜索
//參數三:expandTilde:是否展開路徑.
NSArray*array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
//指定搜索的是Cache目錄,所以結果只有一個,取出第一個就是沙盒路徑
NSString*cachePath = array[0];
//拼接文件路徑
NSString*filePathName = [cachePathstringByAppendingPathComponent:@"agePlist.plist"];
//剩下的就是怎麼生成一個plist文件,然後放到沙盒裏
//其實字典中,已經提供了一種生成plist方法,數組同理
//先生成一個字典
NSDictionary*dict =@{@"age":@18,@"name":@"gaowei"};
//然後直接寫入的沙盒路徑中[自動轉換爲plist文件]
[dictwriteToFile:filePathNameatomically:YES];
}
//讀取數據
-(void)read{
//繼續使用文件搜索的方法,搜索沙盒地址[因爲結果可能多個,所以是一個數組]
NSArray *array = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)
//Cache目錄裏只有一個文件,只需取第一個
NSString*cachePath
= array[0];
//拼接地址 [地址爲:沙盒路徑/保存的plist名稱.plist]
NSString*filePathName
= [cachePath stringByAppendingPathComponent:@"agePlist.plist"];
//讀取plist文件的
}
================== 我是一個華麗分割線 ==================
---- 歸檔
//保存數據
-(void)save{
//歸檔一般都是保存自定義對象的時候,使用歸檔是因爲plist文件不能夠保存自定義對象
//如果你想把自定義對象保存在字典中,然後保存到plist也是不會成功生成plist文件
Persion *persion = [[Persion allco] init];
persion.name = @"張三"
persion.age = 18
//獲得沙盒臨時目錄[只有程序被刪除,才一同刪除,不然一直存在]
NSString*tempPath =NSTemporaryDirectory();
}
//讀取數據
- (Void)reader {
//獲取沙盒臨時目錄[只有程序被刪除,才一同刪除,不然一直存在]
NSString *tempPath = NSTemporaryDirectouy();
NSString *filePath = [tempPath stringByAppendingPathComponent:@"persion.data"]'
//NSKeyedUnarchiver會調用initWithCoder方法,來讓你告訴他去獲取這個對象的哪些屬性,所以我們在保存的對象當中實現initWithCoder代理方法.
persion *persion = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
}
//歸檔最重要的步驟
->Persion.h
@property(nonatomic,assign)int age;
->Persion.m
[encode encodeObject:self.nameforKey:@"name"];
[encode encodeInt32:self.ageforKey:@"age"];
return self;