1.偏好设置
- (void)Preference{
/*
偏好设置是用来专门用来保存引用程序的配置信息的,一般不要在偏好设置中保存其他数据.
如果没有调用synchonize方法,系统会根据I/O情况不定时刻第保存到文件中,所以如果需要立即写入文件的,就必须立刻调用synchonize
偏好设置会将所有数据保存到同一个文件中,即preference目录下的一个,以此应用宝命来命名的plist文件
*/
// 1.获取NSUserdefault文件
NSUserDefaults *userdefults = [NSUserDefaults standardUserDefaults];
// 2.向文静中写入内容
[userdefults setObject:@"AAA" forKey:@"a"];
NSDictionary *dic = @{@"123":@"123"};
[userdefults setObject:dic forKey:@"dic"];
// 2.1 立即同步
[userdefults synchronize];
// 3.读取文件
NSString *name = [userdefults objectForKey:@"a"];
NSLog(@"name --%@",name);
NSLog(@"dic---%@",[userdefults objectForKey:@"dic"]);
}
// 2 .plist
/*
NSDictionary
NSMutableData
NSDate
NSNumber
NSArray
NSString
NSMutableArray
等
*/
// 1.获取文件路径
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"ios.plist"];
// NSArray *arr = @[@"1",@"2",@"3"];
// [arr writeToFile:path atomically:YES];
// // 2读取文件
// NSArray *array = [NSArray arrayWithContentsOfFile:path];
// NSLog(@"---%@",array);
//
// atomically表示是否需要写入一个辅助文件,再把辅助文件拷贝到目标文件地址,一般设置为yes
NSDictionary *dic = @{@"1":@"2"};
[dic writeToFile:path atomically:YES];
NSDictionary *dic1 = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"--%@",dic1);
// 3 归档解档
- (void)NSKeyedArchiver{
// 需要把对象归档是调用,NSKeyedArchiver的工厂方法archiveRootObject:toFile:方法
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"Person.haha"];//保存文件的扩展名可以随便写
Person * p = [[Person alloc] init];
p.name = @"123";
[NSKeyedArchiver archiveRootObject:p toFile:path];
// 读取 :需要把对象归档是调用,NSKeyedUnarchiver 的工厂方法unarchiveObjectWithFile方法
Person *ps = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
if (ps) {
NSLog(@"----%@",ps.name);
}
// 注意
//必须遵循并实现NSCoding协议
//保存文件的扩展名可以随便写
//继承是必须先调用父类的归档结档方法
}
// 还有就是数据库.以后有空详细介绍,以前也写过一篇关于fmdb的文章(swift的对fmdb的第二次封装)