如何获取应用程序的URL';s文件目录iPhone
此代码是核心数据的一部分。URLsForDirectory…方法不在iOS<4上运行,因此我需要知道一些其他要调用的方法/对象。我还将提供文档以供将来参考。多谢各位如何获取应用程序的URL';s文件目录iPhone,iphone,Iphone,此代码是核心数据的一部分。URLsForDirectory…方法不在iOS
/**
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]
akafirstObject
?只需询问兴趣…路径。首先
将返回可选路径。为了简单起见,这里使用了下标访问器,因此我们不必处理类型大小写和可选的展开。-[NSArray firstObject]
和-[NSArray lastObject]
的定义相同。实现没有说明任何差异。你能提供更多背景信息吗?@JulianF.Weinert,我们假设目录只有一个url。在这种情况下,您可以交替使用first
或last
,但返回类型将是URL?
by,可能需要您展开。另一方面,使用下标访问器返回一个非空的URL
,只要该索引中有一个元素(否则将出现越界运行时错误)。