首先,可以通过获取应用沙盒的全路径然后直接使用write to file 直接写入沙盒:
//写入方法
-(void)test {
// 应用沙盒根目录
NSString *home = NSHomeDirectory();
NSLog(@"home");
// 获得documents文件夹目录
NSString *doc = [home stringByAppendingPathComponent:@"documents"];
// 获得文件全路径
NSString *filePath = [doc stringByAppendingPathComponent:@"abc.plist"];
// 将数据保存到plist文件中
// [@"rose" writeToFile:filePath atomically:YES];
NSArray *array = @[@"rose",@"jack"];
[array writeToFile:filePath atomically:YES];
// 凡是能够调用writeToFile:方法的对象都可以直接将数据保存到plist.比如NSString,NSArray,NSDictionary,NSData,NSNumber....
}
//取出方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// 应用沙盒根目录
NSString *home = NSHomeDirectory();
// 获得documents文件夹目录
NSString *doc = [home stringByAppendingPathComponent:@"documents"];
// 获得文件全路径
NSString *filePath = [doc stringByAppendingPathComponent:@"abc.plist"];
// 从沙盒中获得数据
NSArray *array = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"%@", array);
}
2.使用
NSUserDefaults 存储,默认存入偏好设置
// 偏好设置对象
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"jack" forKey:@"name"];
[defaults setObject:@"rose" forKey:@"password"];
[defaults setInteger:100 forKey:@"age"];
[defaults setDouble:1.9 forKey:@"height"];
[defaults setBool:YES forKey:@"sex"];
[defaults setFloat:189.9 forKey:@"weight"];
// 在ios8之前还有加入下面代码
// 立即同步,立即保存数据
[defaults synchronize];
///取出数据
NSUserDefaults *defaults = [[NSUserDefaults alloc] init];
NSString *name = [defaults objectForKey:@"name"];
BOOL sex = [defaults boolForKey:@"sex"];
NSInteger age = [defaults integerForKey:@"age"];
3.使用NSKeyedArchiver 保存数据
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [docDir stringByAppendingPathComponent:@"stu.data"];
// 保存自定对象
// NSKeyedArchiver:归档:就数据保存到文件的过程
[NSKeyedArchiver archiveRootObject:student toFile:filePath];
解档
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [docDir stringByAppendingPathComponent:@"stu.data"];
// NSKeyedUnarchiver:解档:将文件中的数据对入内存中
HMStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
//对象需要遵守NSCoding协议并且重写- (void)encodeWithCoder:(NSCoder *)encoder {
// [encoder encodeObject:self.title forKey:@"title"];}
// 和
// - (nullable instancetype)initWithCoder:(NSCoder *)decoder {
// if (self = [super init]) {
// self.title = [decoder decodeObjectForKey:@"title"];
// }
// return self;
// }