我正在尝试使用Xcode上的基本SenTest框架读取和更改钥匙串的代码。代码可以在设备上正常工作,但是当我开始测试时,每当我想用SecItemDelete
/SecItemAdd
/etc来触碰钥匙串时,我都会收到这些错误。测试钥匙串 - OSStatus错误-34018
The operation couldn’t be completed. (OSStatus error -34018 - client has neither application-identifier nor keychain-access-groups entitlements)
我已经匹配两者的构建目标和测试目标通配符配置简档(iOS Team Provisioning Profile: *
)。
这些(未经证实)堆栈溢出的答案:
Read from keychain results in errSecItemNotFound 25300
说,我需要一个供应配置文件匹配每次我用钥匙串时间我的应用程序标识符,但不可能是正确的,还是我d在测试目标之外获得相同的错误。
挖越深,(未经证实)答案在这里:
SecItemAdd and SecItemCopyMatching returns error code -34018 (errSecMissingEntitlement)
暗示,有可能是与钥匙串中的错误更普遍Security.framework
,这是坦率地说可怕。
我的问题是;当他们在测试目标上时,是否有人遇到了OSStatus错误-34018 只有?这似乎是我所看到的行为。
编辑︰添加this answerJorgeDeCorte在他的答案中使用下面。
如果问题退出您的 单元测试目标,此线程似乎包含解决方案。
https://devforums.apple.com/message/917498#917498
基本上,你必须通过增加 出发,按照您的测试目标运行脚本的协同设计文件夹.xcttest。
codesign --verify --force --sign "$CODE_SIGN_IDENTITY" "$CODESIGNING_FOLDER_PATH"
我的设备 上测试我的钥匙串时,得到了很多-34018错误的,这设法解决它。
如果问题不存在于您的测试目标中,则可能不是 的解决方案。
所以我想解决方案是:强制签署你的测试目标。
您能否描述您链接的解决方案,以防万一链接出现故障?或者我们不必点击即可找到它...... – newenglander