資料儲存的方式(只說三種方式)

weixin_33912246發表於2016-06-07

第一種writeTofile

首先獲取你需要存入的路徑,並且拼接好對應的檔名以及格式 NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"data.plist”;之後把資料寫入陣列中,再用- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;這個方法把資料存入到檔案中讀取資料也是先獲取相應路徑,之後用+ (nullable NSArray*)arrayWithContentsOfFile:(NSString *)path;方法讀取出資料.

第二種是偏好設定

它不需要獲取路徑NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];(獲取系統的偏好設定物件,standard share 一般都是單例)[defaults setObject:@"小明" forKey:@"name”];(儲存資料)同時它需要立即同步,防止資料丟失[defaults synchronize];它的讀取也是先獲取偏好設定的路徑,之後用NSUserDefaults的方法讀取資料.

第三種比較複雜的方式—歸檔

首先它也是先獲取檔案路徑

NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"data.plist"];  之後建立一個物件CZPserson *p = [[Pserson alloc]init];寫入資料p.name = @"小明”;

儲存歸檔 注意1.該物件必須遵守NSCoding 協議 編碼協議@interface Pserson : NSObject

2.實現encodeWithCoder方法- (void)encodeWithCoder:(NSCoder *)aCoder{[aCoder encodeObject:self.name forKey:@"name”];}

3.實現initWIthCoder方法- (instancetype)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super init]) {

self.name = [aDecoder decodeObjectForKey:@"name"];

}

return self;

}

相關文章