- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
-[NSFileManager URLForDirectory:inDomain:appropriateForURL:create:error:]
需要单个 NSSearchPathDomainMask 并返回单个 URL。 (...appropriateForURL:create:error:
部分在文档中有点困惑。)
-[NSFileManager URLsForDirectory:inDomains:]
允许您为域参数创建位掩码并返回 URL 数组。
在我看来,这两种方法之间存在重叠。如果我的目标是从 iOS 应用程序的沙箱中获取文档、库或其他目录,我应该在什么时候使用一个而不是另一个?
最佳答案
访问 Documents 目录(或其他类似目录)的标准方法是如下代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths[0];
这类似于做:
NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *documentsURL = URLs[0];
主要区别在于第一个给你的路径是 NSString
而第二个给你的路径是 NSURL
。
另一种方法可以使用:
NSURL *documentsURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
您可以为 Documents 目录传递 NO
,因为它始终存在。您应该为应用程序支持目录传递 YES
,因为默认情况下它不存在。理想情况下,您不应该为错误传递 nil
,这样您就可以看到如果方法调用返回 nil
会发生什么。
这三种方法中的任何一种都有效。如果您希望路径为字符串,请使用第一个。如果您想将第三个作为 URL,请使用它。如果您很少需要传入多个域,请使用第二个。
关于ios - NSFileManager - URLsForDirectory ... 或 URLForDirectory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983091/
这是我现在拥有的: let path = try! NSFileManager.defaultManager().URLForDirectory(NSSearchPathDirectory.Docum
-[NSFileManager URLForDirectory:inDomain:appropriateForURL:create:error:] 需要单个 NSSearchPathDomainMas
如果我使用 NSFileManager:URLForDirectory 获取沙箱的应用程序支持目录,那么我会得到以下 URL: file://localhost/var/mobile/Applicat
我有一些旧代码,可以使用旧的 FSFindFolder 例程查找特定文件夹。现在我的任务是使这段代码现代化。起初,使用 NSFileManager 的 URLForDirectory 似乎是正确的选择
我是一名优秀的程序员,十分优秀!