gpt4 book ai didi

ios - NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) 可以返回多个条目吗?

转载 作者:行者123 更新时间:2023-12-03 17:21:36 29 4
gpt4 key购买 nike

在 iOS 上查找本地可写 Library 目录位置的常用方法是 NSSearchPathForDirectoriesInDomains ,像这样:

    NSString *thedir = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0];

在 ios7 上,返回 /var/mobile/Applications/<app-GUID>/Library

我的问题:

  • 在 iOS 上,是 NSSearchPathForDirectoriesInDomains上面(使用上面使用的参数)保证返回一个始终只有一个条目的数组?
  • 如果返回的数组有多个条目,是否至少能保证确定性排序?
  • (这是出于我自己的好奇心)什么会导致它返回多个条目,以及它可能返回的其他可能条目是什么?

(明显的)问题是返回的数组不能保证确定性排序:假设您将一些数据写入库中的文件目录,并且您希望在后续 session 中访问它。您如何知道在第二个 session 中您在第一届 session ? (是的,您可以将位置写入文件,但是如何确定性地访问存储该位置的文件?(缺少使用 NSUserDefaults 完成所有事情的 hacky/丑陋解决方案))

这个问题也适用于:

  • NSDocumentDirectory参数
  • -[NSFileManager URLsForDirectory:inDomains:]

是的,根据我的经验观察,这些方法总是返回一个唯一的条目(当与 NSUserDomainMask 一起使用时),但会欣赏权威来源(甚至引用源代码——如果它是开源的)

最佳答案

我不能说任何关于保证的事情,但从 this function 的文档来看。和 the related NSFileManager methods that return URLs (which Apple advises you use instead) ,看起来很清楚,从 domainMask 参数中的值到返回数组中的目录应该存在一对一的映射。

在 iOS 中,您可能只会在返回的数组中看到一项,因为沙盒应用程序只能看到其沙盒中的文件 - 沙盒中仅包含 NSUserDomainMask 的文件,所以这就是唯一适合搜索的域。

但这些 API 与 OS X 共享(并反射(reflect)了可追溯到 NeXTSTEP 的传统),后者在文件系统中具有目录域的概念。如果您正在制作一个 Mac 应用程序,需要查找可能安装在用户级别(例如在 ~/Library 中)或本地计算机级别(在 /Library 中)安装的资源),或者预装操作系统(在 /System/Library 中),您可以使用这些 API 之一来获取适当的路径以及搜索它们的顺序(因为用户资源应覆盖系统资源等)。

关于ios - NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) 可以返回多个条目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24482101/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com