程序沙盒
- 需要相同代码签名和包名
- Home目录:
NSHomeDirectory()
- 临时文件目录:
NSTemporaryDirectory()
,在home目录外,但在沙盒里 - iOS的沙盒内,包含程序自身
程序组容器目录
- 需要相同开发团队
- 位置:
~/Library/Group Containers/<application-group-id>
- 调用:
FileManager
的containerURL(forSecurityApplicationGroupIdentifier:)
方法
使用策略
- 需要长期保存的数据存在Home目录
- 需要共享的数据存在程序组容器目录
思考
单独将数据保存在程序组容器目录是否安全?
**安全。**因为只有相同开发团队的人才能访问。而且可以简化开发。
**不安全。**因为一个app的数据有被其它app删除的风险。另外,是否应该限制这部分数据,使只有需要分享的数据才方到这里。
**结论。**我个人更倾向于安全。因为团队内部的人应该被认为是可信的。但是这么做的确会存在过多分享的问题。因此,我认为还是不要把主数据库放在这边,而是将其作为辅助数据库更好。至于说需要额外处理的代码问题。我相信,从长期看,这部分代码必然是必要的。