沙盒、NSUserDefaults存储数据
iOS系统中每一个APP都有一个独立的沙盒。APP对硬盘的访问空间局限于应用本身的沙盒内,无法访问沙盒文件夹外部的空间。
.app文件夹中存储的是应用程序的资源文件。
Documents文件夹中存储用户的数据。
Library存储系统数据。
tmp存储临时数据。
- (void)viewDidLoad {
[super viewDidLoad];
//NSHomeDirectory()获得本应用的沙盒路径。
NSLog(@"%@",NSHomeDirectory());
/*-------读取NSUserDefaults中的数据--------*/
// //NSUserDefaults中一般存储用户设置或者用户的登录信息。
// //读取userDefault中得数据。
// _nameField.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];
//
// _ageField.text = [NSString stringWithFormat:@"%lu",[USER_D integerForKey:@"age"]];
//
// _sexControl.selectedSegmentIndex = [USER_D boolForKey:@"sex"];
//
// //删除NSUserDefaults中的数据。
// //[USER_D removeObjectForKey:@"name"];
/*------------读取文件中的字符串-----------*/
//stringWithContentsOfFile从文件中读取一个字符串。
// NSString *string = [NSString stringWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/myFile.txt"] encoding:NSUTF8StringEncoding error:nil];
//
// //componentsSeparatedByString按照某个字符串分割另外一个字符串;返回一个数组,数组中存储的是分割之后的所有字符串
// NSArray *array = [string componentsSeparatedByString:@"|"];
//
// _nameField.text = [array objectAtIndex:0];
//
// _ageField.text = [array objectAtIndex:1];
//
// _sexControl.selectedSegmentIndex = [[array objectAtIndex:2] integerValue];
/*------------读取文件中的数组-----------*/
NSArray *array = [NSArray arrayWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/arrayFile.txt"]];
_nameField.text = [array objectAtIndex:0];
_ageField.text = [array objectAtIndex:1];
_sexControl.selectedSegmentIndex = [[array objectAtIndex:2] integerValue];
}
//使用userDefault存储
- (IBAction)userDefaultButtonClick:(UIButton *)sender {
//用户数据中心,是一个单例类。
NSUserDefaults *userD = [NSUserDefaults standardUserDefaults];
//NSUserDefaults可以存储对象和一些基本类型。
[userD setObject:_nameField.text forKey:@"name"];
NSInteger age = _ageField.text.integerValue;
[userD setInteger:age forKey:@"age"];
BOOL sex = _sexControl.selectedSegmentIndex;
[userD setBool:sex forKey:@"sex"];
//synchronize同步,把修改同步到外存上。对NSUserDefaults修改之后必须做这个操作。
[userD synchronize];
}
//使用文件存储字符串
- (IBAction)fileSaveStringClick:(UIButton *)sender {
NSString *string = [NSString stringWithFormat:@"%@|%@|%lu",_nameField.text,_ageField.text,_sexControl.selectedSegmentIndex];
//stringByAppendingPathComponent在字符串后追加路径。
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/myFile.txt"];
NSError *error = nil;
//writeToFile把字符串写入文件,第一个参数是要写入的文件路径,第二个参数是是否原子性写入。第三个参数是字符串转为二进制数据的编码方式,第四个参数是如果写入失败失败的原因。
//必须保证文件路径存在,如果路径下已经有一个同名文件,那么就会把原有的文件覆盖。
if (![string writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:&error]) {
NSLog(@"%@",error);
}
}
//使用文件存储数组
- (IBAction)fileSaveArrayClick:(UIButton *)sender {
NSArray *array = [NSArray arrayWithObjects:_nameField.text,_ageField.text,[NSNumber numberWithInteger:_sexControl.selectedSegmentIndex], nil];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/arrayFile.txt"];
[array writeToFile:path atomically:NO];
//NSDictionary *dic = nil;
}
如下:
输出结果如下:
还没有评论,来说两句吧...