iOS中数据存储的几种代码实现
2016-03-18 11:54
477 查看
首先,可以通过获取应用沙盒的全路径然后直接使用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:
4000
@"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;
// }
//写入方法
-(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:
4000
@"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;
// }
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 一些关于数据存储和查询优化的想法
- 正确面对服务器数据存储防止数据丢失
- 高性能Javascript笔记 数据的存储与访问性能优化
- 在android开发中进行数据存储与访问的多种方式介绍
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法