最初的想法很单纯,认为UIWebView调用loadRequest之后进行归档,保存成NSData,然后存在数据库里,当需要调用缓存的时候就将它读取出来进行反序列化。忙乎了一天,发现反序列化出来的对象并不包含上次所显示出来的内容。看来归档的时候,并不会将当前显示页面的内容归档进NSData中,不过这次倒腾也学到了几个东西。
1. SQLite的使用
1.1 使用终端命令
在mac根目录下的usr/bin/,有个可执行文件sqlite3。可以在终端用他创建数据库,建表,插入数据等等。
创建数据库: sqlite3 /filePath/dbName.db 在创建数据库时候要注意目标文件所在目录一定要有可写权限,如果该库不存在则会自动建立
查看现有的表结构: sqlite> select * from sqlite_master;
建表: sqlite> CREATE TABLE webView(kpiId int,kpiDate text,data blob); bytes类型的数据最好存储在blob字段下
创建数据: sqlite> insert into webView(......)
-------------------------------------------------------------------
1.2 使用C/C++ function操作数据库
1.2.1 复制数据库文件至可写位置
以上都是在终端的命令,sqlite对c/c++也有很好的支持。
在ios中,每个应用程序都只能访问到自己的一片文件系统,某应用的跟目录下的文件,程序对他只有访问权并没有读写权。
所以在把终端生成好的数据库文件,放在Resource目录之后,还需要程序将该数据库文件复制到Documents目录下才可以对他进行修改。
1.2.2 插入数据
在插入的字符比较复杂的时候,可以采用占位符的方式。这是insert bytes类型数据很好的一种方式。
绑定占位符的下标一定是从1开始,这个问题搞了我一下午。
1.2.3 查询数据
1.2.4 删除数据