我正在嘗試使用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