数据存储之plist
/**
* 存储plist
*/
- (void) savePlist
{
// 1.获得沙盒跟路径
NSString *home = NSHomeDirectory();
// 2.document路径
NSString *path = [home stringByAppendingPathComponent:@"Documents"];
// 3.新建数据
NSArray *data = @[@"jack",@10,@"aaa"];
NSString *filePath = [path stringByAppendingPathComponent:@"data.plist"];
[data writeToFile:filePath atomically:YES];
}
/**
* 读取plist
*/
- (void) readPlist
{
// 1.获得沙盒跟路径
NSString *home = NSHomeDirectory();
// 2.document路径
NSString *path = [home stringByAppendingPathComponent:@"Documents"];
NSString *filePath = [path stringByAppendingPathComponent:@"data.plist"];
NSArray *data = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"%@",data);
}
数据存储之偏好设置
/**
* 存储偏好设置
*/
- (void) savePhsz
{
// 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Library/Preferences)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 2.存储数据
[defaults setObject:@"xu" forKey:@"zh"];
[defaults setObject:@"123" forKey:@"pwd"];
[defaults setInteger:10 forKey:@"age"];
[defaults setBool:YES forKey:@"auto_login"];
[defaults synchronize];
}
/**
* 读取偏好设置
*/
- (void) readPhsz
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *zh = [defaults objectForKey:@"zh"];
NSLog(@"%@",zh);
}
数据存储之归档
- (IBAction)save {
// 1.新的模型对象
XUStudent *stu = [[XUStudent 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];
}
- (IBAction)read {
// 1.获得Documents的全路径
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// 2.获得文件的全路径
NSString *path = [doc stringByAppendingPathComponent:@"stu.data"];
// 3.从文件中读取MJStudent对象
XUStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"%@ %d %f", stu.no, stu.age, stu.height);
}
XUStudent必须遵守NSCoding协议
并且必须实现如下两个方法
/**
* 将某个对象写入文件时会调用
* 在这个方法中说清楚哪些属性需要存储
*/
- (void)encodeWithCoder:(NSCoder *)encoder
/**
* 从文件中解析对象时会调用
* 在这个方法中说清楚哪些属性需要存储
*/
- (id)initWithCoder:(NSCoder *)decoder