在我正在开发的一个 iOS 应用程序中,我将一些信息存储在钥匙串中。为了与钥匙串进行交互,我正在使用 Locksmith ( https://github.com/matthewpalmer/Locksmith )
在我的应用程序的 v1 版本中,我正在通过使用在钥匙串中写入一些数据
Locksmith.saveData(data: data, forUserAccount:"A1", inService: "S1")
现在,在 v2 中,我意识到我想将我的数据从“S1”迁移到“S2”,所以我开始编写一个小的迁移脚本来实现这一点。
本质上,我在做什么:
// read the old data
if let d = Locksmith.loadDataForUserAccount(userAccount: "A1", inService: "S1") {
// write it in a new location
Locksmith.saveData(data: d, forUserAccount: "A1", inService: "S2")
}
这是对我的代码的过度简化。
问题是d = nil
每次,虽然我确定它存在(当我构建应用程序的 v1 时,我可以看到数据存在于那个位置)。
对此有什么想法吗?以前有人遇到过这个问题吗?
一些技术规格:
- Xcode 8.3
- 斯威夫特 3.1
- 锁匠 3.0(通过迦太基)
- 运行 iOS 10.3 的 iOS 模拟器 (iPhone 6s)
没试过真机。