一、NSCoding : ?使用NSCoding需要遵守<NSCoding>
保存:
/**
?*? 將某個對象寫入文件時會調用
?*? 在這個方法中說清楚哪些屬性需要存儲
?*/
MJStudent.m
- (void)encodeWithCoder:(NSCoder *)encoder
{
? ? [encoder encodeObject:self.no forKey:@"no"];
? ? [encoder encodeInt:self.age forKey:@"age"];
? ? [encoder encodeDouble:self.height forKey:@"height"];
}
?
存儲:
?// 1.新的模型對象
? ? MJStudent *stu = [[MJStudent alloc] init];
? ? stu.no = @"42343254";
? ? stu.age = 20;
? ? stu.height = 1.55;
?? ?
? ? // 2.歸檔模型對象
? ? // 2.1.獲得Documents的全路徑
? ? NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
? ? // 2.2.獲得文件的全路徑
? ? NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];
? ? // 2.3.將對象歸檔
?
? ? [NSKeyedArchiver archiveRootObject:stu toFile:path];
?
?
?
/**
?*? 從文件中解析對象時會調用
?*? 在這個方法中說清楚哪些屬性需要存儲
?*/
- (id)initWithCoder:(NSCoder *)decoder
{
? ? if (self = [super init]) {
? ? ? ? // 讀取文件的內容
? ? ? ? self.no = [decoder decodeObjectForKey:@"no"];
? ? ? ? self.age = [decoder decodeIntForKey:@"age"];
? ? ? ? self.height = [decoder decodeDoubleForKey:@"height"];
? ? }
? ? return self;
?
}
?
?
讀取:
?
// 1.獲得Documents的全路徑
? ? NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
? ? // 2.獲得文件的全路徑
? ? NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];
?? ?
? ? // 3.從文件中讀取MJStudent對象
? ? MJStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
?? ?
?
? ? NSLog(@"%@ %d %f", stu.no, stu.age, stu.height);
?
二、
偏好設置:(保存與讀取)
保存:
// 1.利用NSUserDefaults,就能直接訪問軟件的偏好設置(Library/Preferences)
? ? NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
?? ?
? ? // 2.存儲數據
? ? [defaults setObject:@"mj" forKey:@"account"];
? ? [defaults setObject:@"123" forKey:@"pwd"];
? ? [defaults setInteger:10 forKey:@"age"];
? ? [defaults setBool:YES forKey:@"auto_login"];
?? ?
? ? // 3.立刻同步
? ? [defaults synchronize];
?
?
讀取:
?
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
?? ?
? ? NSString *account = [defaults objectForKey:@"account"];
? ? BOOL autoLogin = [defaults boolForKey:@"auto_login"];
?
? ? NSLog(@"%@ -- %d", account, autoLogin);
?
三、
Plist存儲:(保存與讀取)
保存:
// 不同的設備根路徑可能不一樣,設備和虛擬機的路徑也不一樣,所以最好使用NSHomeDirectory(),系統會自動返回一個根路徑
// 1.獲得沙盒根路徑
? ? NSString *home = NSHomeDirectory();
?
// 拼接路勁,根路徑有Documents這個文件夾,所以拼接這個文件夾路勁
// 2.拼接document路徑
?
? ? NSString *docPath = [home stringByAppendingPathComponent:@"Documents”];
?
?
// 4.新建數據
NSArray *data = @[@"jack", @10, @"ffdsf”];
// 5.文件路徑
NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist”];
// 將文件寫入對應的文件路徑保存
[data writeToFile:filepath atomically:YES];
?
?
讀取:
// 1.獲得沙盒根路徑
? ? NSString *home = NSHomeDirectory();
?? ?
? ? // 2.document路徑
? ? NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
?? ?
? ? // 3.文件路徑
? ? NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"];
?? ?
? ? // 4.讀取數據
? ? NSArray *data = [NSArray arrayWithContentsOfFile:filepath];
?
? ? NSLog(@"%@", data);