一聚假、plist文件
1. 什么是plist文件
plist全稱:property List 屬性列表文件,plist是一個(gè)xml格式文件闰非,后綴為.plist膘格,只能持久化NSArray和NADictionary類型對象
2. plist文件的作用
作用:plist是做數(shù)據(jù)持久化的專業(yè)文件,.plist一般情況下用于存儲(chǔ)用戶密碼财松、臨時(shí)信息瘪贱、簡介這樣的簡單
3. Plist文件特點(diǎn)(先將Xcode創(chuàng)建plist文件,再通過創(chuàng)建好的plist文件介紹plist文件特點(diǎn))
Plist文件特點(diǎn):
1. Plist文件的根路徑只能是數(shù)組和字典(Plist文件只能持久化數(shù)組和字典對象)
2. Plist文件的子路徑只能是NSString, NSNumber, NSData, NSDate, NSBoolean, NSArray, NSDictionary類型對象
4. Xcode創(chuàng)建plist文件
Plist文件內(nèi)容的格式是xml語法格式
創(chuàng)建步驟
1.點(diǎn)擊File--》New File 彈出一對話框
2.iOS程序選中iOS欄中的Resource/Mac程序選中OS X 欄中的resource
3.點(diǎn)擊Resource中的Property List 創(chuàng)建plist文件
4.點(diǎn)擊文件中的'+'可以添加數(shù)據(jù)
5. 讀取plist文件
//將plist文件讀取到數(shù)組中(類方法)
+(id)arrayWithContentsOfFile:(NSString *)path;
//將plist文件讀取到字典中(類方法)
+(id)dictionaryWithContentsOfFile:(NSString *)path
二辆毡、 歸檔和反歸檔
1. 什么是歸檔和反歸檔
歸檔:把對象轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)菜秦,存儲(chǔ)到文件中
反歸檔:把歸檔的對象文件讀成原來的內(nèi)存中的對象
2. 系統(tǒng)類對象的歸檔和反歸檔
系統(tǒng)類歸檔
//NSKeyedArchiver類的方法
+ (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;
系統(tǒng)類反歸檔
//NSKeyedUnarchiver類的方法
+ (id)unarchiveObjectWithFile:(NSString *)path;
3. 歸檔注意事項(xiàng)
// 歸檔對象, 或數(shù)組(及其里面的對象)都要實(shí)現(xiàn)一個(gè)協(xié)議NSCoding
// 為啥實(shí)現(xiàn)協(xié)議 : 因?yàn)闅w檔執(zhí)行ecodeWithCodeer方法胚迫,解檔執(zhí)行initWithCoder
4. 代碼實(shí)例(將一個(gè)數(shù)組進(jìn)行歸檔)
//文件的路徑
NSString *path = [NSString stringWithFormat:@"%@/friends.data", NSHomeDirectory()];
// 歸檔:
[NSKeyedArchiver archiveRootObject:array toFile:path];
// 歸檔執(zhí)行的方法
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.nickName forKey:@"nickname"];
[aCoder encodeObject:self.sex forKey:@"sex"];
}
// 反歸檔:
NSArray *readArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
// 反歸檔執(zhí)行的方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
if (self = [super init]) {
self.nickName = [aDecoder decodeObjectForKey:@"nickname"];
self.sex = [aDecoder decodeObjectForKey:@"sex"];
}
return self;
}
三喷户、NSUserDefault
1. NSUserDefaults適合存儲(chǔ)輕量級的本地?cái)?shù)據(jù)唾那,比如要保存一個(gè)登陸界面的數(shù)據(jù)访锻,用戶名、密碼之類的闹获,使用NSUserDefaults是首選期犬。
下次再登陸的時(shí)候就可以直接從NSUserDefaults里面讀取上次登陸的信息。
2. NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
3. 實(shí)例(存儲(chǔ)登陸界面的用戶名)
(一)避诽、存儲(chǔ)數(shù)據(jù)
// 保存用戶名龟虎, 下次自動(dòng)填充用戶名
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setValue:_usernameTextField.text forKey:@"SaveUserName"];
// 同步到文件中
[ud synchronize];
(二)、讀取數(shù)據(jù)
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSString *username = [ud valueForKey:@"SaveUserName"];
四沙庐、文件
//文件的路徑
NSString *path = [NSString stringWithFormat:@"%@/file.text", NSHomeDirectory()];
//實(shí)例化NSFileManager的單例對象
NSFileManager *fileManager = [NSFileManager defaultManager];
//創(chuàng)建文件
[fileManager createFileAtPath:path contents:nil attributes:nil];
//實(shí)例化NSFileHandle對象
NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:path];
// 寫入數(shù)據(jù)
NSString *string = @"jin tian tian qi zhen bu cuo";
NSData *dataFromString = [string dataUsingEncoding:NSUTF8StringEncoding];
[fileHandle writeData:dataFromString];
// 讀取數(shù)據(jù)
//設(shè)置偏移量為開始位置
[fileHandle seekToFileOffset:0];
NSData *dataAll = [fileHandle readDataToEndOfFile];
NSString *stringFromdataAll = [[NSString alloc]initWithData:dataAll encoding:NSUTF8StringEncoding];