63

我正在阅读 Erica Sadun 的iPhone Developer's Cookbook,遇到了一个问题。

她在书中说,找到用户的 Documents 目录的方法是使用代码:

[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

但这似乎有点脆弱,并且与正常的 Mac 方式不同,这将是:

NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);

有什么特别的理由可以使用其中一个吗?

4

5 回答 5

95

对象:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)

迅速:

var paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)

您需要返回数组的第一个元素。

于 2008-11-07T16:48:34.807 回答
50

这是我在我的框架中使用的代码。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
于 2008-12-06T23:37:23.683 回答
16

您应该考虑使用返回 URL 的 FileManager 方法,这是首选格式。

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first

此方法旨在定位系统中已知和常见的目录。

标识请求目录的 URL 对象数组。目录按照域掩码常量的顺序排列,用户域中的项目在前,系统域中的项目在后。

于 2012-10-11T23:34:22.393 回答
1

我用这个

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *zipLocalPath = [documentPath stringByAppendingString:fileName];
于 2015-01-17T03:25:50.113 回答
-1

在 swift v3 中,我使用了以下代码段

var paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
于 2017-09-09T11:52:23.683 回答