documents ios_ios documents - CSDN
  • iOS Documents、Library和tmp的作用

    千次阅读 2016-03-25 09:53:38
    iOS Documents、Library和tmp的作用 沙盒(sandbox) 出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用...
    iOS Documents、Library和tmp的作用
    沙盒(sandbox)

    出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上。当应用程序被安装到设备上时,系统会为其创建一个家目录,这个家目录就是应用程序的沙盒。

    目录下共有四个子目录:

    Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
    AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
    Library 目录:这个目录下有两个子目录:Caches 和 Preferences
    Preferences 目录包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
    Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
    tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

    获取这些目录路径的方法:

        NSString *homeDir = NSHomeDirectory();
        NSLog(@"homeDir:%@",homeDir);
        
        NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSLog(@"docDir:%@",docDir);
        
        NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSLog(@"cachesDir:%@",cachesDir);
        
        NSLog(@"tmpDir:%@",NSTemporaryDirectory());
    


    获取应用程序程序包中资源文件路径的方法:
    例如获取程序包中一个图片资源(apple.png)路径的方法:
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"];
    UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];

    代码中的mainBundle类方法用于返回一个代表应用程序包的对象。



    总结:

    用户生成的文件放在documents,自己的文件放在library/cache里面---------by apple

    简单的说明:如果你做个记事本的app,那么用户写了东西,总要把东西存起来。那么这个文件则是用户自行生成的,就放在documents文件夹里面。

    如果你有一个app,需要和服务器配合,经常从服务器下载东西,展示给用户看。那么这些下载下来的东西就放在library/cache。

    apple对这个很严格,放错了就会被拒。主要原因是ios的icloud的同步问题。 

    展开全文
  • iOS APP缓存清理

    千次阅读 2015-10-09 17:13:57
    - (void)viewDidLoad { [super viewDidLoad]; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(100, 100, 100, 100); [button setTitle:@"清理缓存"
    - (void)viewDidLoad {
        [super viewDidLoad];
       
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(100, 100, 100, 100);
        [button setTitle:@"清理缓存" forState:UIControlStateNormal];
        [button setTitleColor:[UIColor cyanColor] forState:UIControlStateNormal];
        button.layer.cornerRadius = 5;
        button.layer.masksToBounds = YES;
        [button addTarget:self action:@selector(clearCache) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
    
    #pragma mark -检查缓存
    - (void)clearCache{
        
        NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
        NSFileManager *fileManager=[NSFileManager defaultManager];
        float folderSize;
        if ([fileManager fileExistsAtPath:path]) {
            //拿到算有文件的数组
            NSArray *childerFiles = [fileManager subpathsAtPath:path];
            //拿到每个文件的名字,如有有不想清除的文件就在这里判断
            for (NSString *fileName in childerFiles) {
                //将路径拼接到一起
                NSString *fullPath = [path stringByAppendingPathComponent:fileName];
                folderSize += [self fileSizeAtPath:fullPath];
            }
            
            self.alertView = [[UIAlertView alloc] initWithTitle:@"清理缓存" message:[NSString stringWithFormat:@"缓存大小为%.2fM,确定要清理缓存吗?", folderSize] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
            [self.alertView show];
            self.alertView.delegate = self;
        }
    }
    
    //计算单个文件夹的大小
    -(float)fileSizeAtPath:(NSString *)path{
        
        NSFileManager *fileManager=[NSFileManager defaultManager];
        
        if([fileManager fileExistsAtPath:path]){
            
            long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
            
            return size/1024.0/1024.0;
        }
        return 0;
    }
    
    
    #pragma mark -弹框
    
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        if (buttonIndex) {
            //点击了确定,遍历整个caches文件,将里面的缓存清空
            NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
            NSFileManager *fileManager=[NSFileManager defaultManager];
            if ([fileManager fileExistsAtPath:path]) {
                NSArray *childerFiles=[fileManager subpathsAtPath:path];
                for (NSString *fileName in childerFiles) {
                    //如有需要,加入条件,过滤掉不想删除的文件
                    NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
                    [fileManager removeItemAtPath:absolutePath error:nil];
                }
            }
        }
        
        self.alertView = nil;
    }
    

    展开全文
  • iOS真机调试沙盒系统查看

    千次阅读 2015-08-04 09:39:10
    今天在用真机调试的时候需要查看 app 沙盒文件系统,但是

    iOS向来是以安全著称,其中一个原因保证就是每个app的大部分文件操作都是在沙盒系统中完成的,而沙盒系统自从诞生之初发展到现在沙盒系统也算比较完善了,先简单介绍下沙盒结构,无论模拟器和真机。

    默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。因为应用的沙盒机制,应用只能在几个目录下读写文件:
    Documents:苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
    Library:存储程序的默认设置或其它状态信息;

    Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除;

    tmp:提供一个即时创建临时文件的地方。


    模拟器可以比较方便的访问到(Xcode6最新模拟器路径:/Users/用户名/Library/ Developer/CoreSimulator/Devices/模拟器UDID/data/Containers/Bundle/Applications/对应应用程序文件夹),文件操也可以很方便的拖拖拽拽~


    但是我今天检索真机沙盒系统调试的时候,发现资料大多过时,还有推荐的iTools之类的软件一方面现在要付费,另一方面----一点都不优雅~~


    其实Xcode6提供了机器方便的沙盒查看功能,在这里可以很方便的查看、下载、替换真机相应软件的app。

    入口就在Windows->Device里面







    其他的呢,写一下文件管理相关的iOS技术:

    NSFileManager是OC提供的一个很好用的文件管理工具。NSFileManager可以管理本地沙盒系统中的文件,也可以管理iCloud中的文件,可以实现文件读取,改名,更换路径,创建,删除,甚至文件删除等等的功能。

    Apple Developer Library 讲的极其详细:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/index.html#//apple_ref/doc/uid/TP40003660



    展开全文
  • //联系人:石虎  QQ: 1224614774昵称:... Compiling IB documents for earlier than iOS 7 is no longer supported  翻译:在ios7之前编译IB文档不再受支持. 二、解决办法如下:  图一: 图二:

     //联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

    一、在升级到Xcode9 遇到以下错误:

      Compiling IB documents for earlier than iOS 7 is no longer supported

      翻译:在ios7之前编译IB文档不再受支持.

    二、解决办法如下: 

    图一:


    图二:


    Builds for 选项设置为iOS10 以后就OK了。

    谢谢!!!

    展开全文
  • iOS 小心删除Documents中的文件

    千次阅读 2014-03-15 13:15:26
    删除Sandbox中Documents目录下的文件可能是个比较常用的操作,但是如果文件名没有正确设置,就会有删除整个Documents的危险出现,因此在删除前要做好判断。
  • 简单来说就是用户在APP中输入并保存的数据放在Documents文件夹中(如用户输入的文本等), 并且如果手机连接电脑时,iTunes会自动备份其中文件,苹果不允许我们将下载的大型文件放入该文件夹。 而APP与服务器交互并...
  • 在我们升级到Xcode9时,最低的编译版本为iOS8,但是在使用一些SDK的时候就会报出Compiling IB documents for earlier than iOS7 is no longer supported. 这句错误,这个时候我们点击错误跳转到Xib或Storyboard...
  • ios 获取documents目录

    2012-09-17 15:46:16
    - (NSString *)stringForDocumentDirectroy { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); return [paths objectAtIndex:0];...
  • ios访问Documents目录下的文件,注意: 1>.拼接的路径字符串是否正确; 2>.拼接的路径的方式:  第一种, 字符串变量 + ...+字符串常量 拼接:  demo1:  NSString* docPath = [NSHomeDirectory() ...
  • Compiling IB documents for earlier than ios 7 is no longer supported。(编译比ios7更早的IB文档不再受支持。) 找到报错的IB,将Interface Builder Document中的Builders for改为“iOS 7.0 and Later”...
  • 一:获取documents目录路径 //1,获取家目录路径的函数: NSString *homeDir = NSHomeDirectory();  //2,获取Documents目录路径的方法: a:NSArray *paths = NSSearchPathForDirectoriesInDomains...
  • iOS开发中,我尝试将文件保存在app的documents下面并把整个路径存放到NSUserDefaults中,重新Run项目到时候却发现找不到从NSUserDefaults中取出来的路径了,这篇文章记录了这个现象的原因
  • 一,代码。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. ... //获得Documents目录 NSString *destPath = NSHomeDirectory
  • iOS怎么获取并移除沙盒中Documents文件夹下的所有文件
  • [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]
  • 如图所示,把build for 的版本更改为iOS7.1或以上即可。
  • 解决方法:选中报错xib -> 右侧菜单栏第一个 -> Interface Builder Document -> Builder for 选择iOS7.1 and Later
  • 先贴出报错信息: 解决办法: 将build for的版本改到iOS7.1及以上即可。
  • 有一些App需要通过使用iTunes让用户上传和下载文档。要让iOS程序支持iTunes文件交换其实很简单,只需要在程序的Info.plist里增加一个键:UIFileSharingEnabled(Application supports iTunes file sharing...
1 2 3 4 5 ... 20
收藏数 17,420
精华内容 6,968
关键字:

documents ios