NSSearchPathForDirectoriesInDomains返回错误的目录

我正在使用NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)来获取我的应用程序中的应用程序文档目录,但返回的数组只包含一个对象,它是一个不可写的,不正确的目录:

/用户/我/库/应用程序支持/ iPhone模拟器/文档

我发现这个问题表明这个问题与供应有关,但是答案只是说明了这一点。 所以我想我在问一个重复的问题,但是这个问题的答案是不够的,所以我希望在这个问题上得到一个真正的答案。

嗯…所以返回的目录可能会有所不同,以至于你所期望的应用程序可能与Xcode目标types有关。 这会不会成为testing的目标呢? 在这种情况下,正确的答案很可能是一个没有应用程序GUID的答案,因为实际上它不是一个应用程序。 这个谷歌小组的讨论意味着,如果是这样的话,你会很好,只需创build目录。

只是为了咧嘴笑,我从terminal窗口创build了目录/用户/我/图书馆/应用程序支持/ iPhone模拟器/文档,现在它似乎运行。 还有testing错误,但这些可能是真实的。

我build议你改变你的testing应用程序来创build文件目录,如果它丢失 – 如下所示:

  if(![[NSFileManager defaultManager] createDirectoryAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) withIntermediateDirectories:YES attributes:nil error:NULL]) NSLog(@"Error: Create folder failed %@", NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)); 

这适用于我:

 [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 

你可以试试这个:

  /** Returns the path to the application's Documents directory. */ - (NSString *)applicationDocumentsDirectory { return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; } 

我相信你只是遗漏了lastObject消息。

我有完全相同的问题,在我的情况是因为我正在运行XCTest类的代码。

我的猜测是testing不在应用程序沙箱中运行。

这是因为我的testing与主项目中包含的静态库项目有关。

只要我运行我的应用程序运行完全相同的代码,path正确返回。

希望这可以帮助。