获取iPhone文档目录。 NSSearchPathForDirectoriesInDomains仍然是唯一的方式吗?

时间:2009-12-04 03:10:00

标签: iphone cocoa-touch

NSSearchPathForDirectoriesInDomain 的功能仍然是获取iPhone Documents目录路径的最佳方式吗?我问,因为我在去年看到的大多数主题都是过去的日期,而且它似乎仍然是一种非常繁琐的方式来访问iPhone上常用的目录。您认为现在有一种方便的方法,类似于NSBundle的 bundlePath executablePath 等。

为了清楚起见,这意味着调用“NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)”并返回索引为0的Documents路径的数组。

3 个答案:

答案 0 :(得分:22)

Xcode中基于核心数据的应用程序模板提供了这种方法:

- (NSString *)applicationDocumentsDirectory {

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}

因此,Apple似乎继续支持以这种方式获取文档目录。我想,你可以把它放到一个类别中,但是我发现它足以将该方法包含在给定应用程序中需要在文档目录中工作的少数几个类中。如果你在整个地方做了很多文件,你可以考虑重构一下你的代码,将这些任务限制在一个或两个管理器类中。

对我来说,至少,第三次或第四次我说“嘿,让文档目录变得痛苦”是我意识到有机会将文件转移到专门的课程中。

答案 1 :(得分:17)

Xcode中的当前Core Data iOS应用程序模板提供了此方法:

// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

答案 2 :(得分:2)

这适合我,非常简短而且很甜蜜

   #define kDOCSFOLDER [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]

干杯!