当我在Simulator中运行我在Xcode 6 / iOS SDK beta 3中构建的应用程序时,SecItemCopyMatching函数返回-34018错误代码(errSecMissingEntitlement)。
OSStatus result = SecItemCopyMatching ((__bridge CFDictionaryRef)retrieveQueryDict, (CFTypeRef *)&dataRef);
我已经注意到beta 1中的问题,然后在beta 2中它被修复了。此外,苹果公司在发行说明中提到了beta 1的已知问题,已在beta 2中修复。到目前为止,这么好。但是,在测试版3中,这个错误再次发生在同一个地方。但这次没有解释。
其他人是否遇到过这个问题,或者有一些解决方法?这应该仅在模拟器上发生(至少是测试版1的情况;目前我没有设备可以检查),但是对于单元测试,它是一个阻止者。
答案 0 :(得分:2)
我和你的情况完全相同。我正在使用SSKeychain,但对每个人来说似乎都是同样的问题。虽然发行说明没有说明,但问题似乎在iOS 8 beta 1和beta 3中,跳过beta 2。
我使用的解决方法基于以下答案:SecItemAdd and SecItemCopyMatching returns error code -34018 (errSecMissingEntitlement)
这对我有用:我在Xcode 6中登录了我的开发者帐户,然后在相关项目目标的功能选项卡中启用了“Keychain Sharing”。
答案 1 :(得分:1)
我仍然遇到启用Keychain Sharing的问题,但现在我已经解决了这个问题(我认为)。我的设备上有一个通配符配置文件,显示它没有有效的签名身份。我的应用程序的配置文件也是有效的。当我删除通配符配置文件时,我停止了-34018错误。
我还确保目标的Build Settings的Code Signing部分中列出的代码签名标识和配置文件与应用程序的相同(不是通用的" iPhone Developer" one )
答案 2 :(得分:0)
已修复测试版4.但发行说明中没有信息。