我有几个单元测试来验证我使用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中只进行一些配置,将测试转移到应用程序对我来说不是一个合适的解决方案。
答案 0 :(得分:4)
使用Xcode 9测试包需要主机应用程序从iOS模拟器中访问钥匙串,请参阅https://stackoverflow.com/a/46317131/5082444。
只需添加应用目标并将其设置为单元测试包的主机应用程序。