iPad端SQLite数据库如何配置存放位置可被Files app识别且支持iTunes备份
iPadOS 应用数据库暴露至 Files 应用及 iTunes 备份配置方案
你当前使用的.documentDirectory路径本身是符合存储要求的,无法在 Files 应用看到是因为 App 默认没有开放目录对外访问权限,按以下步骤配置即可:
1. 修改 Info.plist 配置项
需要同时添加两个权限配置:
- 开启 iTunes 文件共享:添加键
UIFileSharingEnabled(Xcode 可视化界面显示为「Application supports iTunes file sharing」),值设为YES,开启后即可通过 iTunes 访问应用目录文件,同时该目录内容会默认纳入 iCloud/iTunes 备份范围 - 开启 Files 应用访问权限:添加键
LSSupportsOpeningDocumentsInPlace(Xcode 可视化界面显示为「Supports opening documents in place」),值设为YES,开启后 Files 应用的「我的iPad」分类下会显示对应 App 的独立目录,目录内的所有文件均可直接查看、编辑
2. 代码路径优化
你当前使用的 Documents 目录路径写法可以正常使用,也可以调整为更简洁的 Swift 原生写法,无需强制转换 NSString:
let databaseFolder = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] // 或基于 FileManager 的更现代写法 let databaseFolder = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].path
另外可以通过编译宏自动区分开发和生产环境路径,避免手动修改路径的麻烦:
#if DEBUG // 开发环境直接使用 Mac 本地路径 let databaseFolder = "/Users/robertpetruzzelli/Desktop/MyProjects/ManagingYourMoney" #else // 测试/正式环境使用设备 Documents 路径 let databaseFolder = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] #endif
3. 生效验证
配置完成后卸载设备上的旧版本 App 重新安装,即可在 Files 应用中看到你的 App 目录,目录内的 SQLite 数据库文件可直接查看导出,同时也支持通过 iTunes 读取备份。
注意:如果数据库存在敏感信息,建议对数据库文件做加密处理,避免开放目录后用户误修改或泄露数据。
内容的提问来源于stack exchange,提问作者rpetruzz
相关产品推荐
相关产品推荐

