如何获取应用程序的URL';s文件目录iPhone

如何获取应用程序的URL';s文件目录iPhone,iphone,Iphone,此代码是核心数据的一部分。URLsForDirectory…方法不在iOS

此代码是核心数据的一部分。URLsForDirectory…方法不在iOS<4上运行,因此我需要知道一些其他要调用的方法/对象。我还将提供文档以供将来参考。多谢各位

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

您可以通过
NSSearchPathForDirectoriesInDomains
获取文档路径,如下所示:

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [searchPaths objectAtIndex:0];

这将在iOS 2+上运行。

另一种解决方案是使用该方法并从返回的NSArray获取路径:

目标C:

NSArray *paths = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *documentsURL = [paths lastObject];
斯威夫特:

let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let documentsURL = paths[0] as! NSURL

iOS 4.0+支持这一点。

以下是Swift 2.2版本:

let paths = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let filePath = paths[0].URLByAppendingPathComponent("filename")
斯威夫特3

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

您需要一个URL,还是只需要文档路径?@Andreas没问题。希望一切顺利。:-)如何将其作为NSURL而不是字符串获取?要从documentsPath获取到NSURL:
[NSURL fileURLWithPath:urlString]
如果url指定了目录,请确保字符串以
/
结尾。为什么要访问ObjC中的
lastObject
、Swift中的
[0]
aka
firstObject
?只需询问兴趣…
路径。首先
将返回可选路径。为了简单起见,这里使用了下标访问器,因此我们不必处理类型大小写和可选的展开。
-[NSArray firstObject]
-[NSArray lastObject]
的定义相同。实现没有说明任何差异。你能提供更多背景信息吗?@JulianF.Weinert,我们假设目录只有一个url。在这种情况下,您可以交替使用
first
last
,但返回类型将是
URL?
by,可能需要您展开。另一方面,使用下标访问器返回一个非空的
URL
,只要该索引中有一个元素(否则将出现越界运行时错误)。