我正在使用NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
来获取应用程序中的应用程序文档目录,但返回的数组只包含一个对象,而且这是一个不可写的,不正确的目录:
/ Users / me / Library / Application Support / iPhone Simulator / Documents
我发现this question表示问题与配置有关,但答案只是说明了。所以我想我问的是一个重复的问题,但是这个问题的答案是不够的,所以我希望在这个问题上得到一个真正的答案。
答案 0 :(得分:7)
嗯......所以返回目录的一个原因可能与您对应用程序的期望可能与Xcode目标类型有关。这不会是一个测试目标吗?在这种情况下,正确的答案很可能是没有应用程序GUID的答案,因为实际上它不是一个应用程序。这个google group discussion意味着如果是这种情况,只需创建目录就可以了。
只是为了笑容,我从终端窗口创建了目录/ Users / me / Library / Application Support / iPhone Simulator / Documents,现在它似乎正在运行。仍有测试错误,但这些可能是真实的。
我建议您更改测试应用程序以创建文档目录(如果它丢失),例如:
if(![[NSFileManager defaultManager] createDirectoryAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) withIntermediateDirectories:YES attributes:nil error:NULL])
NSLog(@"Error: Create folder failed %@", NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES));
答案 1 :(得分:2)
这对我有用:
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory
inDomains:NSUserDomainMask] lastObject];
答案 2 :(得分:1)
你可以试试这个:
/**
Returns the path to the application's Documents directory.
*/
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
我相信你只缺少lastObject消息。
答案 3 :(得分:0)
我遇到了完全相同的问题,在我的情况下,这是因为我正在运行XCTest类中的代码。
我的猜测是测试不在应用程序沙箱中运行。
那是因为我的测试与包含在主项目中的静态库项目有关。
只要从我的应用程序运行中运行完全相同的代码,就会正确返回路径。
希望这有帮助。