iOS開發 檔案儲存方法彙總

陳振發表於2017-12-13

-方法一:NSUserDefaults

用途

一般將輕量級的使用者偏好儲存在這裡,比如使用者名稱,遊戲最高得分等。

儲存路徑

儲存路徑為dataContainer下的Library/Perferance

檔案格式

.plist

使用方法

[[NSUserDefaults standardUserDefaults] setBool:isRemember forKey:@"remember"]; // 存

_rememberSwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"remember"]; // 取
複製程式碼

可以儲存的內容格式有:

NSString NSData NSDate NSArray NSDictionary NSNumber (可以將bool,integer,float,double封裝成NSNumber)

-方法二:將陣列,字典儲存到指定路徑,並儲存為.plist檔案

用途

將自定義的陣列,字典儲存為.plist檔案

儲存路徑

指定的任意路徑

檔案格式

.plist

使用方法

// 存
NSArray *array = @[@"amao", @"agou"];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"array.plist"];
[array writeToFile:path atomically:YES];

// 取
NSArray *array = [NSArray arrayWithContentsOfFile:path atomically:YES];
複製程式碼

-方法三:物件歸檔

用途

將自定義的Model類轉換成特定的資料流,儲存到本地(自定義物件以及物件的所有屬性需要遵循NSCoding)

儲存路徑

指定的任意路徑 ####檔案格式 我通常會以.archive作為字尾 ####使用方法

自定義物件類需要實現以下兩個方法:

- encodeWithCoder: // 物件轉換成特定資料流

- initWithCoder:   // 將檔案轉換成特定的物件
複製程式碼

儲存方法:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:儲存model的陣列];
[data writeToFile:filePath atomically:YES];
複製程式碼

取方法:

id object = [NSKeyedUnarchiver unarchiverObjectWithFile:filePath];

if ([object isKindOfClass:[NSArray class]]) {
    [model陣列 addObjectsFromArray:object];
}
複製程式碼

上面提到的三種方法的缺點是,無論多小的改動,都是整存整取。

##方法四:SQLite

方法五:Core Data

相關文章