首页 > 其他分享 >iOS开发之--沙盒的操作

iOS开发之--沙盒的操作

时间:2023-08-25 14:03:00浏览次数:32  
标签:paths -- 路径 iOS 应用程序 获取 NSString 沙盒 目录

iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.
documents,tmp,app,Library。
(NSHomeDirectory())手动保存的文件在documents文件里
Nsuserdefaults保存的文件在tmp文件夹里
1、Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
2、AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
3、Library 目录:这个目录下有两个子目录:Caches 和 Preferences
Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。

获取这些目录路径的方法:
1,获取家目录路径的函数:
NSString *homeDir = NSHomeDirectory();
2,获取Documents目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
3,获取Caches目录路径的方法:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDir = [paths objectAtIndex:0];
4,获取tmp目录路径的方法:
NSString *tmpDir = NSTemporaryDirectory();
5,获取应用程序程序包中资源文件路径的方法:
例如获取程序包中一个图片资源(apple.png)路径的方法:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”];
UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];
代码中的mainBundle类方法用于返回一个代表应用程序包的对象。


iphone沙盒(sandbox)中的几个目录获取方式:

// 获取沙盒主目录路径  

NSString *homeDir = NSHomeDirectory();  

// 获取Documents目录路径  

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  

NSString *docDir = [paths objectAtIndex:0];  

// 获取Caches目录路径  

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);  

NSString *cachesDir = [paths objectAtIndex:0];  

// 获取tmp目录路径  

NSString *tmpDir =  NSTemporaryDirectory();  


// 获取当前程序包中一个图片资源(apple.png)路径  

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];  

UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];  


例子:
NSFileManager* fm=[NSFileManager defaultManager];
if(![fm fileExistsAtPath:[self dataFilePath]]){
    //下面是对该文件进行制定路径的保存
    [fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];

    //取得一个目录下得所有文件名
    NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];

    //读取某个文件
    NSData *data = [fm contentsAtPath:[self dataFilePath]];

    //或者
    NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];
}

 



作者:稻草人11223


标签:paths,--,路径,iOS,应用程序,获取,NSString,沙盒,目录
From: https://blog.51cto.com/u_13188203/7230152

相关文章

  • iOS开发之--从URL加载图片
    +(UIImage*)imageFromURLString:(NSString*)urlstring{//Thiscallissynchronousandblockingreturn[UIImageimageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:urlstring]]];}直接转化一下就可以直接拿到图片!作者:稻草......
  • ios开发之 -- xib关联自定义view
    在xib下使用自定义的view,因为很多时候,可能幸亏自顶一个view,然后在view里面填充控件,但是需要重写很多无用的代码,而且很容易出错不说,还很好工作量,使用xib的话,分钟搞定一个view,话不多说,步骤如下:1,先创建一个view2,创建一个xib3,"File'sOwner"的class继承为:MyView(即自定义创建的视图......
  • ios开发之 -- UIView总结
    如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类performSelector:performSelector:withObject:performSelector:withObject:withObject: 实际调用[selfperformSelector:@selector(displayViews)withObject:nilafterDelay:1.0f];有三个方法分别是//父视图......
  • ios 开发之 -- UILabel的text竖行显示
    让UILabel的内容竖行显示,我经常用一下两种方式:第一种:使用换行符\nlabel.text=@"请\n竖\n直\n方\n向\n排\n列";label.numberOfLines=[label.textlength];第二种:使用lineBreakMode属性label.text=@"请竖行显示";label.lineBreakMode=NSLineBreakByWordWrapping;//换行模......
  • iOS开发之--搭建本地的SVN服务器
    近期入职的新公司,后台没有分配svn账号,需要在本地搭建一个服务器,方便和代码,看了看网上的教程,一直有这样那样的问题,其中最主要的问题还是路径拼接的问题,最后终于解决了,特在此分享下,如果大家有更快捷的方法可以交流下:步骤如下:1,首先在任意地方建立一个文件夹,如在桌面上建立一个名字为sv......
  • ios开发之 -- 单例类
    单例模式是一种软件设计模式,再它的核心结构中指包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个势力而且该势力易于外界访问,从而方便对势力个数的控制并节约系统资源。如果希望在系统中某各类的对象只能存在一个,单例模式是最好的解决方案。单例模式目前用......
  • ios开发之 -- invalid nib registered for identifier
    今天在写代码的时候,碰到这麽一个问题:invalidnibregisteredforidentifier(重用符)-nibmustcontainexactlyonetoplevelobjectwhichmustbeaUITableViewCellinstance'我一直以为是注册那边出了问题,改了2遍,还是没好,后来百度了下,原因如下:通过xib创建cell的时候一定......
  • Robot 框架学习笔记
    Robot框架学习笔记为了更好地让读者理解快速学习新框架的思路,笔者接下来会继续介绍另一个名为Robot的自动化测试框架,希望读者能参考笔者从零开始讲解一个开发/测试框架的流程,从中总结出适合于自己的快速学习方法。与Selenium框架相比,Robot框架是一款更为通用的、可扩展的......
  • swift - 之TabBarController的用法
    TabBarController的使用,下面记录两种写法,代码如下:TabBarItem系统自带图标样式(System)介绍:Custom:自定义方式,配合SelectedImage来自定义图标More:三个点的图标,表示更多意思Favorites:星形图标Featured:星形图标TopTated:星形图标Recents:时钟图标Contacts:一个圆形一个人头像的图标,代表联......
  • DNSLOG平台搭建及其原理分析
    一、DNS基本概念0x1:DNS中不同域名类型概念DNS的全称是DomainNameSystem(网络名称系统),它作为将域名和IP地址相互映射,使人更方便地访问互联网。当用户输入某一网址如littlehann.com,网络上的DNSServer会将该域名解析,并找到对应的真实IP如101.37.97.51,使用户可以访问这台服务器上......