ios - iOS 中使用 Swift 的库目录

标签 ios swift file-manager

我很困惑。我想存储一些用户文件,但不存储文档。我正在使用:

static var directory: URL {
    get { 
       return FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)[0].appendingPathComponent("Caches").appendingPathComponent("OnlineFiles") 
    }
}

始终如一。每次启动应用程序时,我都会得到不同的 URL。 难道我做错了什么?项目文件中是否有一些我需要设置的神奇开关?

一旦它是这样的:

file:///var/mobile/Containers/Data/Application/4547EF22-EB33-4B65-9772-67ED7870E3E9/Library/Caches/OnlineFiles

其他时间是:

file:///var/mobile/Containers/Data/Application/83C8CDD7-B4D0-48B2-8A8E-9BD48C5D1754/Library/Caches/OnlineFiles

/Application/和/Library/之间的这个字符串似乎是随机的。如何将文件存储在一个位置,以便稍后第二次打开应用程序时可以访问它们?

[编辑]:如何获取每次更新应用程序时不变的路径?

最佳答案

这是苹果的安全机制。每次重启APP时,苹果都会对APP的沙盒路径进行加密,防止其他程序访问。加密 key 在APP内部。所以在程序结束之前,无论在哪里访问APP沙箱,返回路径都是一样的。如果想了解更多,可以看看苹果的沙箱机制。

关于ios - iOS 中使用 Swift 的库目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43939497/

相关文章:

android - 避免状态栏在所有屏幕上重叠

ios - AVAudioSession setCategory .allowBluetooth导致崩溃

cocoa - 创建目录 - 什么取代了 createDirectory AtPath?

c# - 如何扩展ms-explorer自动处理 "connected files"/sidecar files/xmp属于jpg?

ios - GMSGeoCoder 反向地理编码坐标 : completionHandler: on background thread

ios - 如何将顶部约束设置为屏幕高度的 20%?

ios - NSUserDefaults objectForKey 一直返回 nil,即使键存在

ios - 在 SpriteKit 中将按钮设置为图像

swift - 在 UITableView 中执行单元格选择后创建并显示不同的数据

android - 在 ListView 中显示文件