如何解决访问本地存储,将 Cordova App 迁移到 Swift App
我们即将在新的 Swift 应用程序中完全重写旧的 Cordova 应用程序,我们面临的问题是在迁移时,Cordova 应用程序会在设备上存储一些信息,例如刷新令牌和当我们强制将用户升级到新应用时,我们希望他们保持登录状态。
Cordova 应用程序使用名为 LokiJS 的库来执行此操作,而 sql lite db 将这些信息存储在 /var/mobile/Containers/Data/Application/{UUID}/Library/NoCloud/
目录中的 live 中。
新的 Swift 应用将使用相同的包标识符,所以我们应该能够访问这个目录,尽管到目前为止我找不到访问它的方法。
在 SearchPathDirectory
的 FileManager
中没有 /Library/NoCloud 目录,如果我们使用 .libraryDirectory
并将“NoCloud”附加到它,我们得到:"The folder “NoCloud” doesn’t exist."
或甚至列出 .libraryDirectory 的 subpathsOfDirectory 我们得到:"The file “Library” Couldn’t be opened because there is no such file."
应用程序的 UUID 也会在每次安装时更改,因此无法知道原始完整路径。
有没有人有过这样做的经验? Cordova 应用程序必须有一种方法可以读/写它,但我似乎找不到任何具体的解决方案,我们实现这一点非常重要,值得注意的是,我们的 Android 应用程序可以访问这个 Loki 数据库。
解决方法
解决了!
搞砸之后我发现我使用了错误的路径,我将目录设置为:
let libraryDirectory = try! FileManager.default.url(for: .libraryDirectory,in: .userDomainMask,appropriateFor: nil,create: true)
并尝试使用以下内容列表:
FileManager.default.subpathsOfDirectory(atPath: "\(libraryDirectory.absoluteString)/NoCloud")
实际上我应该使用的时候,
FileManager.default.subpathsOfDirectory(atPath: "\(libraryDirectory.path)/NoCloud")
它向我展示了一切:) 所以要访问我需要的 db 文件的内容
String(contentsOfFile: "\(libraryDirectory.path)/NoCloud/{db_file_name}",encoding: .utf8)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。