您的位置:首页 > 移动开发 > IOS开发

IOS学习笔记之本地存储

2014-12-23 22:26 399 查看
在介绍本地存储之前先描述一下什么是沙盒机制.

沙盒机制是IOS的一种安全机制,在沙盒机制中规定,在每个应用程序都位于严格限制的部分,每个应用程序只能在为该程序穿件的文件系统中读取文件,每个应用程序在IOS系统内都放在了统一的文件夹目录下, 而沙盒机制的本身就是一个文件夹, 名字是随机分配的.在沙盒机制里, 允许程序犯错,一旦程序出现错误,系统会将程序回滚到之前的安全状态,就像沙盒一样,你可以任意的在沙盒中作画,如果觉得不好或者画错了,只需要轻轻一抹,沙盒就会摊平,一切又可以重新开始.

上文说到,沙盒机制的本身是文件夹,那么这些文件夹是什么,都有什么呢?

我们通过NSFileManager 用于读取操作硬盘文件中的内容,通过获取文件路径可以查看到文件夹的位置,从而访问文件夹

自定义一个方法获得路径:

+ (NSString *)liberayPathWithName:(NSString *)fileName
{

NSArray *array =
NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
NSUserDomainMask, YES);

NSString *path = [array
lastObject];
path = [NSString
stringWithFormat:@"%@/%@", path, fileName];

NSLog(@"path = %@", path);

return path;
}
我们在supporting files中得文件都保存在bundle文件夹中,我们可以通过访问文件的位置从而访问bundle文件夹,例:

NSString *path = [[NSBundle
mainBundle] pathForResource:@"filename"
ofType:@"filetype"];

当我们获取到文件夹路径后,我们来形象的看一下各个文件夹都有什么不同吧!

Bundle ---> 1 代码

2
资源文件

3 配置文件

1 内容在程序运行期间为只读,
不能够进行任何的修改

2 只有在开发期间可以修改代码

特点

Documents --------->1 有大小限制

2 一般存储数据库

3 从应用程序安装到删除的时候所存储的数据

Library -----> 1 caches(文件夹)

2 preference(文件夹)

caches -----> 放图片缓存 网络数据存储缓存

preference(配置) -----> NSUSerDefaules

tmp(临时性文件夹 : 数据用完就删掉)

除了以上的文件,IOS的存储依然少不了数据库, IOS对数据的操作大体有三步

1. 从bundle中拷贝数据库进doc

2.获得数据库指针

3. 对数据库进行操作

以下代码可以完成对数据库的连接

static
sqlite3 *dbpoint =
nil;

@implementation DBDataBase

+ (sqlite3 *)OpenDataBase
{

if (dbpoint) {

return dbpoint;
}

NSArray *array =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES); //获取document文件夹下的所有文件

NSString *path = [array
lastObject];//获取路径

NSString *newPath = [NSString
stringWithFormat:@"%@/database.rdb", path];//拼接数据库路径

NSFileManager *file = [NSFileManager
defaultManager];

if (![file fileExistsAtPath:newPath]) {//判断新文件路径是否存在

NSString *road = [[NSBundle
mainBundle] pathForResource:@"database"
ofType:@"rdb"];
[file
copyItemAtPath:road
toPath:newPath error:nil];
}

sqlite3_open([newPath
UTF8String], &dbpoint);

return
dbpoint;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: