0

在开始之前,我需要强调一个事实,即我已经查看了每个处理文档目录的帖子。

因此,我将尝试剖析我的问题,以更好地帮助您帮助我。

我正在开发针对 5.1 的 iOS 应用程序。我正在使用 XCode 4.4.1 和 iOS 模拟器版本 5.1 (272.21)。

据我了解,在模拟器中安装应用程序时,其目录结构映射到

/Library/Application Support/iPhone Simulator/[IOS_VERSION]/Applications/[APP_UUID]

这在我运行我的应用程序时得到了正确反映。

此外,我能够使用以下代码成功创建和使用临时目录

NSString *tmpDir = NSTemporaryDirectory();

这导致以下路径

/Library/Application Support/iPhone Simulator/[IOS_VERSION]/Applications/[APP_UUID]/tmp

当我想使用应该位于的Documents目录时,问题开始出现

/Library/Application Support/iPhone Simulator/[IOS_VERSION]/Applications/[APP_UUID]/Documents

以下代码检查该路径是否存在,然后使用 NSLog 记录它,即使它说它存在导航到该位置也会返回未找到的文件。

+ (NSString *) currentPath{

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [searchPaths objectAtIndex:0];

searchPaths=nil;

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:documentPath];

if (fileExists == TRUE) {
    NSLog(@" %@ already exists",documentPath);
} else {

    NSLog(@"doesn't exists");
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;

    if(![fileManager createDirectoryAtPath:documentPath withIntermediateDirectories:true attributes:nil error:&error])
    {
        NSLog(@"Couldn't create documents directory %@",error);

    }



}

return documentPath;

}

NSLog 行的结果是:

2012-08-09 23:12:09.813 AMM[22656:c07]  /Users/fotis/Library/Application Support/iPhone Simulator/5.1/Applications/7CE8645A-BDD7-4AB6-8CAB-B0EF1579CD2B/Documents already exists

在终端

 > pwd
 /Users/fotis/Library/Application Support/iPhone Simulator/5.1/Applications/7CE8645A-BDD7-4AB6-8CAB-B0EF1579CD2B
 >ls -lsa
  total 0
  0 drwxr-xr-x  5 fotis  170 Aug  9 23:12 .
  0 drwxr-xr-x  3 fotis  102 Aug  9 22:50 ..
  0 drwxr-xr-x 30 fotis 1020 Aug  9 23:12 AMM.app
  0 drwxr-xr-x  4 fotis  136 Aug  9 22:50 Library
  0 drwxr-xr-x  4 fotis  136 Aug  9 22:51 tmp

如您所见,我的Documents ghost 目录不存在。对于我的一生,我无法理解这一切背后的魔力。需要注意的一件事是,我在我的应用程序委托的“-didFinishLaunchingWithOptions”方法中运行它,因为我在那里进行了一些初始化。

有任何想法吗?

4

2 回答 2

0

我不知道我是否可以对自己的问题投反对票,但这里是烤架。

事实证明,我的初始化过程的一部分是从Documents目录中删除一些文件。

因此,对于任何想知道缺少路径的人,请确保您的斜杠“/”是正确的,并且您的 glob (*)DO NOT包含您的根 (Documents/) 文件夹。

然而奇怪的是,我的“坏”代码能够从其路径中删除这个(对于什么是值得的,取决于应用程序)目录。

于 2012-08-09T20:42:31.903 回答
0

模拟器在那个场地上有点笨拙,过去当你的应用程序没有在模拟器上运行时,你甚至找不到模拟的沙箱。无论如何,您不必担心创建 Documents 文件夹,它会一直在设备上(还有模拟器,因为您没有尝试在应用程序内或在 Finder 中删除它)

于 2012-08-09T20:37:33.597 回答