在Xcode9测试中无法使用Keychain

时间:2017-10-16 09:13:34

标签: swift keychain xcode9

我有几个单元测试来验证我使用Keychain的方式是否正确,并且在加载时数据的格式相同。

测试运行正常,直到更新到XCode 9.此时,KeychainService返回-50(未保存)。

根据这个question,它通过将Host添加到单元测试来解决。但是,我的测试是在框架项目中,没有应用程序可用作主机。

let query = [
    kSecClass as String       : kSecClassGenericPassword as String,
    kSecAttrAccount as String : key,
    kSecValueData as String   : data ] as [String : Any]

SecItemDelete(query as CFDictionary)

SecItemAdd(query as CFDictionary, nil)

建议的解决方案是什么?我希望在XCode中只进行一些配置,将测试转移到应用程序对我来说不是一个合适的解决方案。

1 个答案:

答案 0 :(得分:4)

使用Xcode 9测试包需要主机应用程序从iOS模拟器中访问钥匙串,请参阅https://stackoverflow.com/a/46317131/5082444

只需添加应用目标并将其设置为单元测试包的主机应用程序。