Tag: 文件系统

介绍AppFolder

每个iOS应用程序都有一个关联的容器,作为开发人员,您可以在其中基本上存储所需的任何内容。 这通常称为“沙盒”。 在此沙箱中,您可以放置​​用于不同目的的文件-它可以是用户可见的文档,数据库文件,缓存或某种元数据-任何东西。 基本上,iOS上的所有持久性技术都使用应用程序的容器在其中存储信息。 因此,了解应用程序文件夹的外观,结构以及放置在其中的文件对于每个iOS开发人员都是至关重要的。 但是,这里存在问题: 不幸的是,对于每个iOS应用程序都至关重要的概念,Apple并未对其API进行过多考虑 因此,例如,如果您需要获取应用程序的“ Documents”文件夹URL,则需要编写以下代码: let urls = FileManager.default.urls(for:.documentDirectory,in:.userDomainMask) 让documentsURL = urls [0] 如果您确切知道该代码在做什么,那可能看起来还不错。 但是对于不习惯此API的人来说,它看起来也很恐怖。 因为当您尝试使用自动完成功能来发现您的选项时,会得到以下信息: 在这种情况下,有人会怀疑“这里到底发生了什么?”。 .adminApplicationDirectory ? .applicationScriptsDirectory ? .moviesDirectory , .trashDirectory吗? 有很多东西,其中大多数对于iOS应用程序绝对没有任何意义 。 然后是搜索路径域掩码: …嗯, 是的,我确切知道该选择哪一个。 这个API对于macOS可以说是合理的,但是在iOS上,这显然是令人误解的: cachesDirectory放置在musicDirectory和desktopDirectory (显然,这不仅对每个设备而言都是唯一的,而且对于iOS而言也是荒谬的)。 由于某种原因,“ Documents / ”目录表示为.documentDirectory (单数),这可能使您质疑是否选择了正确的文件夹。 它返回一个URL 数组 (可以有多个URL吗?可以没有一个吗?谁知道。) 最后,使用此API,您几乎不了解文件夹在磁盘上的实际结构。 尚不清楚此巨型列表中的哪个文件夹甚至存在,哪些不存在。 我们可以做得更好 好吧,想象一下我们是否可以交易上面的代码 let urls = FileManager.default.urls(for:.documentDirectory,in:.userDomainMask) 让documentsURL = urls […]