iOS本地缓存
2020-09-10 本文已影响0人
iOS程序媛ing
本地缓存主要有write、NSUserDefault、coreData、sqlite几种方式,下面我们来一一介绍他们的区别及使用方法。
(一)write直接写入
//获取文件路径
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSDictionary *dic = [NSDictionary dictionary];
//写入文件
[dic writeToFile:filePath atomically:YES];
(二) NSUserDefault
主要用来存储用户基本设置,如是否登录状态、是否是vip等;数据自动保存在沙盒的Libarary/Preferences目录下
[[NSUserDefaults standardUserDefaults] setObject:YES forKey:@"isLogin"];
//synchronize方法,会立即存储,如果不调用这个方法,NSUserDefaults不会立即存储
[[NSUserDefaults standardUserDefaults] synchronize];
(三)coreData
需要创建实体对象
(四)sqlite. 常用的还是FMDB
FMDB是对sqlite的封装
优点:
对多线程的并发操作进行处理,是线程安全的;
以OC 方式封装了C语言的API,使用起来更加方便
FMDB是轻量级的框架,使用灵活;
缺点:
只能在iOS平台使用,不能跨平台
(1)FMDB有三大重要的类
①FMDatabase
一个FMDatabase对象就代表一个数据库,执行数据库语句;
②FMResult
用FMResult执行查询数据集合
③FMDatabaseQueue
用来在多线程多个查询或更新,是线程安全的
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingFormat:@"student"];
FMDatabase *db = [FMDatabase databaseWithPath:filePath];
if ([db open]) {
BOOL creat = [db executeUpdate:@"CREAT TABLE IF NOT EXIST student (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, sex TEXT)"];
if (creat) {
//创建表成功
BOOL insert = [db executeUpdate:@"INSERT INTO student (id , name, sex) VALUE (?, ?, ?)", @"12", @"小明", @"女"];
if (insert) {
//插入输入成功
}
BOOL delete = [db executeUpdate:@"DELETE FROM student WHERE id = '12'"];
if (delete) {
//删除数据成功
}
BOOL update = [db executeUpdate:@"UPDATE student SET name = '小山' WHERE id = '12'"];
if (update) {
//更新数据成功
}
FMResultSet *result = [db executeQuery:@"SELECT id, name , sex FROM student"];
while ([result next]) {
NSInteger ID = [result intForColumnIndex:0];
NSString *name = [result stringForColumnIndex:1];
NSString *sex = [result stringForColumn:@"sex"];
}
}
}