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;
}
沙盒机制是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;
}
相关文章推荐
- iOS学习笔记3—NSKeyedUnarchiver进行本地数据的读取|存储
- iOS学习笔记7—程序实现国际化 (即本地多语言化)
- SilverLight学习笔记--本地(客户端)数据存储
- iOS学习笔记32—本地通知UILocalNotification
- 黑马程序员——IOS学习笔记(C语言存储方式和变量作用域)
- HTML5学习笔记:HTML5基于本地存储SQLite的每日工作任务清单程序.[只支持chrome]
- 【iOS学习笔记】本地通知 UILocalNotification
- iOS学习笔记--数据存储
- H5 本地存储学习笔记
- iOS学习笔记48-iOS本地推送(本地通知)
- IOS开发学习笔记之数据存储
- [置顶] iOS学习笔记45—本地通知UILocalNotification
- Ios本地存储(笔记)
- 【js学习笔记-103】----本地存储-localStroage/sessionStorage存储
- 【IOS-Swift】实战笔记——数据持久化之NSUserDefaults(本地轻量级数据存储)
- ((ios开发学习笔记))本地已有sqlite数据库实现
- iOS学习笔记22—ASIHTTPRequest和ASIDownloadCache实现本地缓存
- IOS学习笔记 -- Segue、数据存储、UITabBarController
- IOS 学习笔记17 iPhone开发之使用NSUserDefaults存储数据
- iOS开发学习专题-基础知识(五) NSDate时间 NSUserDefaults本地存储 NSNotification系统通知的详细使用方式