仅您的应用程序(在非越狱设备上)在“沙盒”环境中运行。这意味着它只能访问其自身内容内的文件和目录。例如文件和图书馆。
请参阅《iOS应用程序编程指南》。
要访问应用程序沙箱的Documents目录,可以使用以下命令:
+ (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
+ (NSString *) applicationDocumentsDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = paths.firstObject;
return basePath;
}
通过此Documents目录,您可以存储应用程序创建或可能需要的文件和子目录。
要访问应用沙箱的“ 库”目录中的文件,请使用(代替paths
上面的):
[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0]
我发现[@“〜/ Documents” stringByExpandingTildeInPath]做同样的事情。有什么理由不建议这样做?
我不会在@“〜/ Documents”中使用该方法。硬编码路径从来都不是一个好主意。它可能现在可以工作,但是如果Apple选择重命名或移动Documents目录,则您的应用程序将中断。
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
将始终为您提供正确的目录!您仍应使用提供的API。这就是为什么它在那里!直到现在您还是很幸运。
每次我必须使用它时,我需要怎么用它搜索一下。我认为所有移动平台都应为home / writable目录提供默认的全局参数
更新的链接,其中包含有关应用程序写入文件夹能力的信息:developer.apple.com/library/mac/documentation/FileManagement/…