在开始之前,我需要强调一个事实,即我已经查看了每个处理文档目录的帖子。
因此,我将尝试剖析我的问题,以更好地帮助您帮助我。
我正在开发针对 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”方法中运行它,因为我在那里进行了一些初始化。
有任何想法吗?