文档章节

iOS学习8:iOS沙盒(sandBox)机制(二)之沙盒文件操作

芳仔小脚丫
 芳仔小脚丫
发布于 2013/09/04 16:58
字数 384
阅读 3922
收藏 7

一、在沙盒中写文件

在沙盒目录的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路径下就有这个文件了

© 著作权归作者所有

芳仔小脚丫
粉丝 931
博文 83
码字总数 76301
作品 0
闵行
程序员
私信 提问
加载中

评论(1)

龙哥杀神
龙哥杀神
简洁明了
一分钟越狱 iOS 11.4|世界顶级黑客大会 DEFCON 议题详解

雷锋网编者按:苹果公司在 macOS 和 iOS 中都采用了沙盒机制保护系统不受恶意软件的攻击。在世界著名的黑客大会 DEFCON 的这次演讲中,来自阿里安全的安全研究员分析了最新版的 iOS 中的沙盒...

李勤
2018/08/13
0
0
细数iOS上的那些安全防护

细数iOS上的那些安全防护 龙磊,黑雪,蒸米 @阿里巴巴移动安全 0x00 序 随着苹果对iOS系统多年的研发,iOS上的安全防护机制也是越来越多,越来越复杂。这对于刚接触iOS安全的研究人员来说非常...

阿里聚安全
2016/08/24
301
1
如何查看真机的沙盒(图文教程)

在iOS开发之沙盒机制(SandBox),我们了解到如何查看模拟器的沙盒内容。直接在Finder->前往->前往文件夹里输入: /Users/ligang/Library/Application Support/iPhone Simulator/ 这样就可以查...

TomatosX
2015/08/01
0
6
iOS Sandbox是个什么鬼?

在iOS平台上,每个app都有一个存储空间,用以存储照片、声音文件、文本、属性列表等,我们称之为沙盒。在沙盒里,app可以自己读写文件,但仅限于自己的沙盒,不可访问其他app沙盒,不可进行相...

小麦麦子
2015/07/20
465
1
iOS学习之sqlite的创建数据库,表,插入查看数据

iOS sqlite数据库操作。步骤是: 先加入sqlite开发库libsqlite3.dylib, 新建或打开数据库, 创建数据表, 插入数据, 查询数据并打印 1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3....

知行合一100
2012/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

UserInputControls用户输入控制

enum UserInputControls { kGovernedByOrthoMode = 0x0001,//正交模式管理 kNullResponseAccepted = 0x0002,//允许输入空 kDontEchoCancelForCtrlC = 0x0004,//ctrl C 模式不能重复......

一个小妞
31分钟前
1
0
分布式系统的事务处理

当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成...

群星纪元
33分钟前
5
0
Kanban VS Scrum:哪个是最好的敏捷项目管理框架

“我们使用敏捷开发。”在与软件开发团队交流时,你会听到很多这样的说法。根据统计,2018年全球约有90%的开发人员在使用敏捷开发。Choerodon猪齿鱼团队也是其中之一。 但是,敏捷并不统一。...

Choerodon
37分钟前
3
0
vue select 慢一步

我在使用vue的select的时候,@change事件里面,写一个axios拿到数据,然后修改某个变量,按理修改变量会立即呈现在页面上面,但实际情况是,值是变更了,但是页面上的效果慢了一步,非常奇怪...

朝如青丝暮成雪
42分钟前
2
0
分布式架构 核心知识体系

1.问题 1、何为分布式何为微服务? 2、为什么需要分布式? 3、分布式核心理论基础,节点、网络、时间、顺序,一致性? 4、分布式是系统有哪些设计模式? 5、分布式有哪些类型? 6、如何实现分...

小刀爱编程
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部