从钥匙串读取 Xcode 9 个模拟器 returns 无
Reading from Keychain Xcode 9 simulators returns nothing
自从我使用 Xcode 9 以来,所有与钥匙串通信的单元测试都已损坏。 Xcode GM 也会发生这种情况。正如我所追踪的那样,读写时没有 OSStatus
错误,但从钥匙串读取 returns 什么都没有,并导致使用钥匙串的所有单元测试失败。当 Apple 发布 Xcode 8 和 iOS 10 模拟器时,我已经遇到过这样的事情,其中钥匙串无法正常工作,而 Apple 在 Xcode 8.2 中修复了它。 iOS 11 模拟器是否也有人面临这个问题?对此有什么想法吗?
我刚想出这个办法,所以我想我会告诉你,以防你遇到同样的问题。
我的问题是我设置项目的方式。在我的项目中,我有一个包含 3 个项目的工作区,1 个是主应用程序,1 个是 framework/library,1 个是 Pods 项目。我在我的框架中访问钥匙串,我的单元测试目标是这个项目的一部分。
经过广泛讨论并与图书馆 Valet 背后的团队 Dan Federman 合作(您可以 find here),我们发现我的单元测试目标需要成为主应用程序所在项目的一部分是。一旦我将所有测试从库项目复制到主应用程序项目,一切 运行 并且工作正常。
希望对您有所帮助!
终于找到问题了。正如@Gix 所说,问题出在我们框架内的单元测试上。 SDK 测试没有应用上下文,因此没有可用的 the/a 钥匙串。但实际上我们不想像@Gix 那样将测试从 SDK 移到应用程序中。所以我们可以通过在 SDK 项目中添加一个应用程序目标来解决这个问题,然后将其设置为 SDK 单元测试的主机。现在单元测试通过了。但我仍然不明白为什么它只在新 Xcode 中失败。我们意识到这不是 iOS 11 模拟器问题,因为 iOS 10 模拟器在 Xcode 9 中也会发生同样的故障。所以这个限制是 属性 of Xcode 9 Simulator app 可以用我提供的解决方案修复。它仍然很乱,但它可以工作,您不需要将测试从 SDK 移到应用程序中!
自从我使用 Xcode 9 以来,所有与钥匙串通信的单元测试都已损坏。 Xcode GM 也会发生这种情况。正如我所追踪的那样,读写时没有 OSStatus
错误,但从钥匙串读取 returns 什么都没有,并导致使用钥匙串的所有单元测试失败。当 Apple 发布 Xcode 8 和 iOS 10 模拟器时,我已经遇到过这样的事情,其中钥匙串无法正常工作,而 Apple 在 Xcode 8.2 中修复了它。 iOS 11 模拟器是否也有人面临这个问题?对此有什么想法吗?
我刚想出这个办法,所以我想我会告诉你,以防你遇到同样的问题。
我的问题是我设置项目的方式。在我的项目中,我有一个包含 3 个项目的工作区,1 个是主应用程序,1 个是 framework/library,1 个是 Pods 项目。我在我的框架中访问钥匙串,我的单元测试目标是这个项目的一部分。
经过广泛讨论并与图书馆 Valet 背后的团队 Dan Federman 合作(您可以 find here),我们发现我的单元测试目标需要成为主应用程序所在项目的一部分是。一旦我将所有测试从库项目复制到主应用程序项目,一切 运行 并且工作正常。
希望对您有所帮助!
终于找到问题了。正如@Gix 所说,问题出在我们框架内的单元测试上。 SDK 测试没有应用上下文,因此没有可用的 the/a 钥匙串。但实际上我们不想像@Gix 那样将测试从 SDK 移到应用程序中。所以我们可以通过在 SDK 项目中添加一个应用程序目标来解决这个问题,然后将其设置为 SDK 单元测试的主机。现在单元测试通过了。但我仍然不明白为什么它只在新 Xcode 中失败。我们意识到这不是 iOS 11 模拟器问题,因为 iOS 10 模拟器在 Xcode 9 中也会发生同样的故障。所以这个限制是 属性 of Xcode 9 Simulator app 可以用我提供的解决方案修复。它仍然很乱,但它可以工作,您不需要将测试从 SDK 移到应用程序中!