【iOS】数据持久化
来源:互联网 发布:elasticsearch5 linux 编辑:程序博客网 时间:2024/06/07 22:36
“数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称. 数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。” —— [ 百度百科 ]
数据持久化简单说就是把数据,转换为可见的存储模型存储下来。这类存储模型常见的有数据库、XML、File等文件。在iOS中常用的有四种数据持久化方法:1)KVC格式的轻量级本地数据存储NSUserDefault;2)转成二进制文件存入本地;3)SQLite数据库;4)Core Data。
我比较熟的是前三个,第四个没注意特别过,就不多做介绍了(前三个看博文还不明白的欢迎留言)。
- NSUserDefault
优点:KVC格式、默认存储沙盒读取方便;
缺点:支持数据类型较少:NSNumber(Integer、Float、Double)、NSString、NSData、NSArray、NSDictionary、BOOL。
eg:
//增、改[[NSUserDefaults standardUserDefaults] setObject:self.userName forKey:UserDefault_userName];[[NSUserDefaults standardUserDefaults] setObject:self.password forKey:UserDefault_passWord];[[NSUserDefaults standardUserDefaults] setObject:self.userCode forKey:UserDefault_userCode];[[NSUserDefaults standardUserDefaults] synchronize];//查[[NSUserDefaults standardUserDefaults] objectForKey:UserDefault_userName];[[NSUserDefaults standardUserDefaults] objectForKey:UserDefault_passWord];[[NSUserDefaults standardUserDefaults] objectForKey:UserDefault_userCode];//删除NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];[userDefaults removeObjectForKey:UserDefault_userName];[userDefaults removeObjectForKey:UserDefault_passWord];[userDefaults removeObjectForKey:UserDefault_userCode];
- 文件存储
其实相交于第一个多了一步本地存取的过程。
支持的类型也广泛了不少,图片、XML、二进制流等均可;
eg:
//存储图片writeToFile[UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];//获取图片UIImage * result = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.%@", directoryPath, fileName, extension]];
- SQLite
就是一个简单的数据库,在第二者本地存储的基础上,用一些sql语法。
只要sql学的好,啥数据库都难不倒,不懂的时候乱七八糟,无非是增删改差。
SQLite搭配FMDB使用更佳。
eg:
#pragma —AppDelegate建立数据库NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *pathArray = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *document = [pathArray lastObject]; NSString *filePath = [document stringByAppendingPathComponent:@"database.db"]; // NSLog(@"数据库路径:%@", filePath); db = [FMDatabase databaseWithPath:filePath]; if (![fileManager fileExistsAtPath:filePath]) { // NSLog(@"数据库不存在,正在创建..."); if ([db open]) { // NSLog(@"打开成功,开始创建表结构..."); NSString *sql = nil; sql = [t_User createTable]; [db executeUpdate:sql]; sql = nil; [db close]; } }#pragma —界面使用 AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; NSString *sql = [NSString stringWithFormat:@"UPDATE t_user SET portrait='%@' WHERE loginName='%@'", image, name]; //此处增删改查的sql语句 NSLog(@"%@", sql); BOOL result = [delegate.db executeUpdate:sql]; if (result) { NSLog(@"头像图片名称存储成功"); }
- Core Data
这个朕暂时没注意,到了再补。
0 0
- IOS 数据持久化
- iOS 数据持久化
- ios数据持久化
- IOS数据持久化
- iOS数据持久化
- ios数据持久化
- iOS数据持久化
- iOS 数据持久化
- iOS 数据持久化
- iOS数据持久化
- iOS数据持久化
- iOS数据持久化
- iOS数据持久化
- iOS 数据持久化
- iOS 数据持久化
- ios数据持久化
- iOS数据持久化
- iOS -- 数据持久化
- HDOJ 5630Rikka with Chess(游戏)
- [LeetCode] Same Tree
- Struts2 路径问题
- 1040. 有几个PAT
- PPT突然不能翻页了
- 【iOS】数据持久化
- CodeForces 630 F. Selection of Personnel(组合数学)
- [从头学数学] 第100节 圆柱与圆锥
- OC中的点语法,成员变量,@property和@synthesize:id类型,构造函数
- 6.3 cmath--数学函数
- HDOJ 5631Rikka with Graph(图论)
- 机房重构—组合查询&模板方法
- ubuntu安装navicat及常见问题解决
- 544 - Heavy Cargo