IOS数据保存
来源:互联网 发布:dlp数据防泄密 知乎 编辑:程序博客网 时间:2024/06/05 07:54
持久化数据(数据保存)IOS数据存储常用的方式1、XML属性列表(plist)归档2、Preference(偏好设置)3、NSKeyedArchiver归档4、Sqlite35、Core Data数据存储位置:每个应用都有自己的应用沙盒(应用沙盒就是自己的文件系统目录),与其他应用隔离路径:/Users/apple/Library/Application Support/Iphone Simulator/7.0/Application应用沙盒的文件系统一级目录:Layer---------------应用程序包,包含所有的资源文件和可执行文件Documents-----------保存应用运行时生成需要持久化的数据,iTunes同步设备时,会备份该目录,重要数据存放,比如游戏存档Library-------------tmp-----------------保存应用程序的临时数据,当软件没有运行时,系统可能随机清理掉该目录下文件Library下目录,二级目录:Library/Caches-------保存应用运行时生成需要持久化数据,但是iTunes不会备份它Library/Prference----保存应用的偏好设置,iTunes同步设备时,会备份该目录,一般是系统操作,我们不用操作//////////////////////////////////////////////////////数据存储案例一(plist存储)如果对象是NSString、NSDictionary、NSArray、NSData、NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文件中缺点:只能存常见数据类型,如模型Person则不能存储/** * 数据存储 */- (IBAction)save{ //1、获取沙盒根路径 NSString *home = NSHomeDirectory(); //2、document路径 NSString *docuPath = [home stringByAppendingPathComponent:@"Documents"]; //3、新建数据 //存数组 NSArray *data = @[@"jack", @10, @"jack love rose"]; NSString *filePath = [docuPath stringByAppendingPathComponent:@"data.plist"]; [data writeToFile:filePath atomically:YES]; //存字典 NSDictionary *dict = @{@"Tom":@"23", @"Jerry":@"12", @"Cookie":@"32", @"Xiao":@"43"}; NSString *fileDictPath = [docuPath stringByAppendingPathComponent:@"data2.plist"]; [dict writeToFile:fileDictPath atomically:YES]; NSLog(@"%@", filePath); }///////////////////////////////////////////////////////** * 数据读取 */- (IBAction)read{ //读取 //1、获取沙盒根路径 NSString *home = NSHomeDirectory(); //2、document路径 NSString *docuPath = [home stringByAppendingPathComponent:@"Documents"]; //3、文件路径 NSString *filePath = [docuPath stringByAppendingPathComponent:@"data.plist"]; //4、读取数据 NSArray *array = [NSArray arrayWithContentsOfFile:filePath]; NSLog(@"%@", array); }数据存储案例二(偏好设置存储)存储简单的软件参数配置偏好存储不用关心存储的路径,默认会找到缺点:不能改变路径和保存的文件的名字///////////////////////////////////////////////////////** * 数据存储 */- (IBAction)save{ //1、利用NSUserDefaults就能直接访问软件的偏好设置 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; //2、存储数据 [defaults setObject:@"fl" forKey:@"account"]; [defaults setInteger:20 forKey:@"age"]; [defaults setBool:true forKey:@"aotologin"]; //3、立刻同步 [defaults synchronize]; NSLog(@"%@", NSHomeDirectory());}/** * 数据读取 */- (IBAction)read{ //1、利用NSUserDefaults就能直接访问软件的偏好设置 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; //2、读取数据 NSString *name = [defaults objectForKey:@"account"]; NSInteger *age = [defaults integerForKey:@"age"]; BOOL isAutoLogin = [defaults boolForKey:@"aotologin"]; }//////////////////////////////////////////////////////数据存储三(普通对象Person\Student...)逻辑:1、普通对象如果想完成存储,则该对象必须遵守<NSCoding>协议eg: @interface Person : NSObject <NSCoding>2、因为遵守了协议时为了实现某个方法- (void)encodeWithCoder:(NSCoder *)encoder 方法,在这个方法中告诉存储里需要存储哪些字段eg:/** * 将对象写入文件之前会调用这个方法 * 在这个方法说清楚:1、哪些属性需哟存储,2、怎样存储这些属性 */- (void)encodeWithCoder:(NSCoder *)encoder{ //将_name属性值进行编码 [encoder encodeObject:_name forKey:@"name"]; //存储年龄 [encoder encodeInt:_age forKey:@"age"];}3、调用方法,完成存储/** * 数据存储 */- (IBAction)save{ /** * 保存一个Person对象 */ Person *p = [[Person alloc] init]; p.name = @"jack"; p.age = 24; p.height = 1.54; NSString *path = @"/Users/fulin/Desktop/person.data";//这里文件名和格式可以任意命名 [NSKeyedArchiver archiveRootObject:p toFile:path]; }4、数据的读取根据上面模式,对象存储的时候遵守协议,完成方法,自然读取的时候也是同样的做法@interface Person : NSObject <NSCoding> 同上遵守同一个协议实现某个方法- (id)initWithCoder:(NSCoder *)aDecoder/** * 将对象读取 * */- (id)initWithCoder:(NSCoder *)decoder{ if (self == [super init]) { _name = [decoder decodeObjectForKey:@"name"]; _age = [decoder decodeObjectForKey:@"age"]; } return self;}调用方法读取:/** * 数据读取 */- (IBAction)read{ //1、路径 NSString *path = @"/Users/fulin/Desktop/person.data";//这里文件名和格式可以任意命名 //2、读取 Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; NSLog(@"%@", p.name);}补充:如果是子类,需要完成上面普通对象存储,则继承中,重写某个遵守协议的方法,同时调用父类的方法
0 0
- iOS数据保存-文件保存
- ios app保存数据
- IOS数据保存
- iOS ---NSUserDefaluts保存数据
- iOS数据保存总结
- iOS保存数据
- ios应用退出保存数据
- ios NSUserDefaluts保存登录数据
- iOS的数据保存-NSUserDefaults
- iOS -NSKeyedArchiver保存数据
- ios NSUserDefaluts保存登录数据
- 浅谈iOS本地数据保存
- ios sqlite数据库保存数据
- iOS 使用KeyChain保存数据
- IOS Swift3.1保存数据
- 在iOS设备上保存用户数据
- IOS 四种保存数据的方式!
- IOS 数据保存到属性列表实例
- html5 拖拽
- prototype与__proto__的联系与区别
- 数据库索引的原理
- c#访问修饰符
- 欢迎进群大家以后一起交流 CSharp、.Net技术交流群 242497960
- IOS数据保存
- uva11389(公车)
- free
- unity制作全息投影
- iso制作以及结构
- 博客测试
- JNI/NDK开发指南(开山篇)
- JAVA NIO之浅谈内存映射文件原理与DirectMemory
- 页面去除session