如何将所有文件保存在iPhone中?

时间:2016-04-26 13:42:47

标签: ios objective-c documents

我使用以下代码来获取文档

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
if([paths count] > 0)
{
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSLog(@"%@",documentsDirectory);
    NSError *error = nil;
    NSArray *documentArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
    if(error)
    {
        NSLog(@"Could not get list of documents in directory, error = %@",error);
    }
    else
    {
        NSLog(@"Hello %@",documentArray);
        arrdocument = documentArray;
    }
}

但它只显示我的应用程序中的文档,而不是应用程序的外部。

3 个答案:

答案 0 :(得分:1)

您无法访问其他应用程序中的文件:每个应用程序都是沙盒。

我建议你阅读Apple的File System Basics

  

每个应用都是岛屿

     

iOS应用程序与文件系统的交互主要限于应用程序沙箱中的目录。在安装新应用程序期间,安装程序会为应用程序创建许多容器。每个容器都有特定的角色。 bundle容器保存app的包,而数据容器包含应用程序和用户的数据。数据容器进一步划分为许多目录,应用程序可以使用这些目录对数据进行排序和组织。该应用程序还可以请求访问其他容器 - 例如,运行时的iCloud容器。

     

这些容器构成了应用程序的文件系统主视图。

     

因为它位于沙盒中,所以通常禁止应用程序在其容器外部访问或创建文件。当应用程序使用公共系统接口访问用户的联系人或音乐等内容时,会出现此规则的一个例外。在这些情况下,系统框架处理读取或修改适当数据存储所需的任何与文件相关的操作。

答案 1 :(得分:1)

您无法访问其他应用程序中的文件:是。

但是Apple提供了设计基于NSDocument的应用程序来共享沙箱外部文件的方法,这是所有具有根共同捆绑标识符的应用程序的通用共享文件夹。

此外,您还可以使用iCloud公共存储在其他应用程序之间共享数据(如Flicker,Dropbox)。下面是一些教程链接:

https://www.raywenderlich.com/12779/icloud-and-uidocument-beyond-the-basics-part-1

https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/DocumentArchitectureiniOS/DocumentArchitectureiniOS.html

答案 2 :(得分:0)

  

每个应用都是岛屿

     

iOS应用与文件系统的互动   主要限于应用程序沙箱中的目录。中   安装新应用程序后,安装程序会创建一些   应用程序的容器。每个容器都有特定的角色。捆绑   容器保存应用程序的包,而数据容器保存   应用程序和用户的数据。数据容器是   进一步划分为应用程序可以使用的许多目录   排序和组织其数据。该应用还可以请求访问   其他容器 - 例如,iCloud容器 - 在运行时。

https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html