详解iOS的数据存储

2020-01-15 17:38:27于海丽

NSData归档2个Person对象到同一文件中:

归档:


// 新建一块可变数据区
NSMutableData *data = [NSMutableData data];
// 将数据区连接到一个NSKeyedArchiver对象
NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];
// 开始存档对象,存档的数据都会存储到NSMutableData中
[archiver encodeObject:person1 forKey:@"person1"];
[archiver encodeObject:person2 forKey:@"person2"];
// 存档完毕(一定要调用这个方法)
[archiver finishEncoding];
// 将存档的数据写入文件
[data writeToFile:path atomically:YES];

恢复(解码):


// 从文件中读取数据
NSData *data = [NSData dataWithContentsOfFile:path];
// 根据数据,解析成一个NSKeyedUnarchiver对象
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
Person *person1 = [unarchiver decodeObjectForKey:@"person1"];
Person *person2 = [unarchiver decodeObjectForKey:@"person2"];
// 恢复完毕[unarchiver finishDecoding];

利用归档实现深复制:比如对一个Person对象进行深复制


// 临时存储person1的数据
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:person1];
// 解析data,生成一个新的Person对象
Student *person2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];
// 分别打印内存地址
NSLog(@"person1:%@", person1); // person1:0x8d3ed10>
NSLog(@"person2:%@", person2); // person2:0x8d3e2f0>

SQLite3

    1.SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小.

    2.SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中.

    3.SQLite3常用的4种数据类型:text(文本字符串), integer(整型值), real(浮点值), blob(二进制数据(比如文件)).

在iOS中使用SQLite3,首先要添加库文件 'libsqlite3.dylib'和导入主头文件#import<sqlite3.h>

SQL语句的特点:

1> 不区分大小写;

2> 每条语句都必须以分号;结尾

SQL中常用的关键字:
pselect、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等等

数据库中不可以使用关键字来命名表,字段.

SQL语句种类:

1> 数据定义语句(DDL:Data Definition Language)

包括create和drop等操作 ;

在数据库中创建新表或删除表(create table或 drop table).

2> 数据操作语句(DML:Data Manipulation Language)

包括insert、update、delete等操作 ;

上面的3种操作分别用于添加、修改、删除表中的数据 .

3> 数据查询语句(DQL:Data Query Language)