简单掌握iOS应用开发中sandbox沙盒的使用

床咋坏了

床咋坏了

2016-02-19 08:56

今天图老师小编给大家介绍下简单掌握iOS应用开发中sandbox沙盒的使用,平时喜欢简单掌握iOS应用开发中sandbox沙盒的使用的朋友赶紧收藏起来吧!记得点赞哦~

一、iOS沙盒机制

iOS的应用只能访问为该应用创建的区域,不可访问其他区域,应用的其他非代码文件都存在此目录下,包括图片,属性文件plist,bundle,nib文件等,这块区域称之为沙盒(sandBox)。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

每个应用都有属于自己的存储空间,即沙盒。
应用只能访问自己的沙盒,不可访问其他区域。
如果应用需要进行文件操作,则必须将文件存放在沙盒中,尤其是数据库文件,在电脑上操作时,可以去访问,但是如果要装在真机上可以使用,必须将数据库文件拷贝至沙盒中。
二、打开沙盒路径

1、如果不知道沙盒路径,可以在自己的应用中打印其路径。

代码如下:

NSLog(@"沙盒路径:%@",NSHomeDirectory());


会得到打印结果*为字母或数字,即为沙盒的路径

代码如下:

/Users/apple/Library/Application Support/iPhone Simulator/6.1/Applications/******-****-****-****-************

打开Finder,选择前往-前往文件夹(或选择快捷键command+shift+G)输入打印出来的路径即可

2、打开Finder,选择前往并按住option键,进入资源库

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

选择Application Support-iPhone Simulator-选择模拟器版本,即可看到各个应用的沙盒目录。

选中其中一个目录,即可看到程序的名称的App文件。

三、目录结构

沙盒默认情况下有三个目录文件夹documents,Library,tmp及应用的App文件,只可在相应的文件夹中进行操作

documents:一般用来存放应用中建立的文件,如数据库文件,或程序中浏览到的文件数据。如果进行备份会将此文件夹中的文件包括其中;
Library:存储应用的默认设置及状态信息;
Library/cache:用来存放缓存文件,此文件夹下数据在应用退出时不会删除。备份时不会包括此文件夹;
tmp:存放即时穿件的临时文件
带图标的App文件:

选中后显示包内容,即可看到存储的图标,nib文件,属性列表等

四、在沙盒中写文件

在沙盒目录的Documents文件夹下添加一个plist文件,添加图片等方法相同
代码如下:

// 获取Documents文件夹目录
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
 
// 设定plist的路径
 [rootPath stringByAppendingPathComponent:@"new.plist"];
 
// 然后在plist中写入内容
NSString *error;
// 序列化一个值“OK”
id plist = [NSPropertyListSerialization dataFromPropertyList:@"OK" format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
 
if(plist) {
        NSLog(@"No error creating XML data.");
        [plist writeToFile:plistPath atomically:YES];
    }
    else {
        NSLog(@"%@",error);
        [error release];
    }

运行后在Documents文件夹下将看到一个new.plist文件

文件中有一个值OK,也可添加数组,字典等相关类型的内容,只需将上文中的“OK”换成一个(id)类型的值即可

五、拷贝文件到沙盒目录下

下面拷贝一个public.xml文件至document路径下,也可拷贝其他文件,只需将文件名和类型对应即可,尤其是database文件,一定要拷贝至沙盒才能使用。此文件不能是电脑中的文件,必须加入工程的Bundle中
代码如下:

// 获取Documents路径
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject];
 
    // 设定要拷贝文件的路径及名称
    NSString *xmlSandBoxPath = [documentsPath stringByAppendingPathComponent:@"public.xml"];
 
    NSFileManager *fileManager = [NSFileManager defaultManager];
 
    // 判断文件是否已经存在
    BOOL isExisting = [fileManager fileExistsAtPath:xmlSandBoxPath];
 
    if (!isExisting) {
 
        // 本地无此文件,则将此文件拷贝到本地目录。
        NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:@"public" ofType:@"xml"];
        NSError *err;
        // 将Bundle中的文件拷贝至沙盒目录下
        [fileManager copyItemAtPath:xmlFilePath toPath:xmlSandBoxPath error:&err];
    }

操作之后,Documents路径下就有这个文件了

展开更多 50%)
分享

猜你喜欢

简单掌握iOS应用开发中sandbox沙盒的使用

编程语言 网络编程
简单掌握iOS应用开发中sandbox沙盒的使用

简单介绍iOS开发中关于category的应用

编程语言 网络编程
简单介绍iOS开发中关于category的应用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

举例详解iOS开发过程中的沙盒机制与文件

编程语言 网络编程
举例详解iOS开发过程中的沙盒机制与文件

简单讲解iOS应用开发中的MD5加密的相关使用

编程语言 网络编程
简单讲解iOS应用开发中的MD5加密的相关使用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

iOS开发中UITabBarController的使用示例

编程语言 网络编程
iOS开发中UITabBarController的使用示例

iOS开发中UIPopoverController的使用详解

编程语言 网络编程
iOS开发中UIPopoverController的使用详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

将Linux命令设置成键盘快捷键的方法

将Linux命令设置成键盘快捷键的方法

Objective-C处理空字符串和页面传值及自定义拷贝

Objective-C处理空字符串和页面传值及自定义拷贝
下拉加载更多内容 ↓