首页 / IOS / iOS UI基础-13.0 数据存储
iOS UI基础-13.0 数据存储
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS UI基础-13.0 数据存储,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4458字,纯文字阅读大概需要7分钟。
内容图文
![iOS UI基础-13.0 数据存储](/upload/InfoBanner/zyjiaocheng/1124/64b2486e5992466b8abc925e5943b90c.jpg)
应用沙盒
模拟器应用沙盒的根路径在: (apple是用户名, 6.0是模拟器版本)
/Users/apple/Library/Application Support/iPhone Simulator/6.0/Applications
应用沙盒结构分析
- Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录
- tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录
- Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
- Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录
数据存储
iOS应用数据存储的常用方式:
- XML属性列表(plist)归档
- Preference(偏好设置)
- NSKeyedArchiver归档(NSCoding)
- SQLite3
- Core Data
XML属性列表(plist)归档
// 存储数据 - (void)savePlist { // 1.获得沙盒根路径 NSString *home = NSHomeDirectory(); // 2.document路径 NSString *docPath = [home stringByAppendingPathComponent:@"Documents"]; // 3.新建数据 NSArray *data = @[@"jack", @10, @"ffdsf"]; NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"]; [data writeToFile:filepath atomically:YES]; } // 读取数据 - (void)readPlist { // 1.获得沙盒根路径 NSString *home = NSHomeDirectory(); // 2.document路径 NSString *docPath = [home stringByAppendingPathComponent:@"Documents"]; // 3.文件路径 NSString *filepath = [docPath stringByAppendingPathComponent:@"data.plist"]; // 4.读取数据 NSArray *data = [NSArray arrayWithContentsOfFile:filepath]; NSLog(@"%@", data); }
Preference(偏好设置)
// 存储 - (IBAction)save { // 1.利用NSUserDefaults,就能直接访问软件的偏好设置(Library/Preferences) NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // 2.存储数据 [defaults setObject:@"mj" forKey:@"account"]; [defaults setObject:@"123" forKey:@"pwd"]; [defaults setInteger:10 forKey:@"age"]; [defaults setBool:YES forKey:@"auto_login"]; // 3.立刻同步 [defaults synchronize]; } // 读取 - (IBAction)read { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *account = [defaults objectForKey:@"account"]; BOOL autoLogin = [defaults boolForKey:@"auto_login"]; NSLog(@"%@ -- %d", account, autoLogin); }
[defaults synchornize];
NSKeyedArchiver归档(NSCoding)
- uencodeWithCoder:每次归档对象时,都会调用这个方法。一般在这个方法里面指定如何归档对象中的每个实例变量,可以使用encodeObject:forKey:方法归档实例变量
- uinitWithCoder:每次从文件中恢复(解码)对象时,都会调用这个方法。一般在这个方法里面指定如何解码文件中的数据为对象的实例变量,可以使用decodeObject:forKey方法解码实例变量
MJStudent.h
#import <Foundation/Foundation.h> @interface MJStudent : NSObject <NSCoding> @property (nonatomic, copy) NSString *no; @property (nonatomic, assign) double height; @property (nonatomic, assign) int age; @end
MJStudent.m
#import " MJStudent.h " @interface MJStudent() @end @implementation MJStudent /* * * 将某个对象写入文件时会调用 * 在这个方法中说清楚哪些属性需要存储 */ - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:self.no forKey:@"no"]; [encoder encodeInt:self.age forKey:@"age"]; [encoder encodeDouble:self.height forKey:@"height"]; } /** * 从文件中解析对象时会调用 * 在这个方法中说清楚哪些属性需要存储 */ - (id)initWithCoder:(NSCoder *)decoder { if (self = [super init]) { // 读取文件的内容 self.no = [decoder decodeObjectForKey:@"no"]; self.age = [decoder decodeIntForKey:@"age"]; self.height = [decoder decodeDoubleForKey:@"height"]; } return self; } @end
控制器使用:
- (IBAction)save { // 1.新的模型对象 MJStudent *stu = [[MJStudent alloc] init]; stu.no = @"42343254"; stu.age = 20; stu.height = 1.55; // 2.归档模型对象 // 2.1.获得Documents的全路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; // 2.2.获得文件的全路径 NSString *path = [doc stringByAppendingPathComponent:@"stu.data"]; // 2.3.将对象归档 [NSKeyedArchiver archiveRootObject:stu toFile:path]; } - (IBAction)read { // 1.获得Documents的全路径 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; // 2.获得文件的全路径 NSString *path = [doc stringByAppendingPathComponent:@"stu.data"]; // 3.从文件中读取MJStudent对象 MJStudent *stu = [NSKeyedUnarchiver unarchiveObjectWithFile:path]; NSLog(@"%@ %d %f", stu.no, stu.age, stu.height); }
原文:http://www.cnblogs.com/jys509/p/4828577.html
内容总结
以上是互联网集市为您收集整理的iOS UI基础-13.0 数据存储全部内容,希望文章能够帮你解决iOS UI基础-13.0 数据存储所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。