当我在模拟器中运行时,我的应用程序内置在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中,这个错误又出现了,在同样的地方。但这次没有解释。
还有谁遇到过这个问题,或者有一些解决方法?这应该只发生在模拟器上(至少在beta 1中是这样;目前我没有设备来检查),但是对于单元测试,它是一个阻塞器。
我的情况和你完全一样。我正在使用SSKeychain,但似乎每个人都有同样的问题。尽管发布说明中没有指出,但这个问题似乎在iOS 8 beta 1和beta 3中都存在,而忽略了beta 2。
我使用的解决方案是基于一些答案:SecItemAdd和SecItemCopyMatching返回错误代码-34018 (errSecMissingEntitlement)
我是这样做的:我在Xcode 6中登录我的开发人员帐户,然后在相关项目目标的功能选项卡中启用"Keychain Sharing"
我仍然有Keychain共享启用的问题,但现在我已经修复了这个问题(我认为)。我的设备上有一个通配符配置文件,显示它没有有效的签名标识。我也有一个有效的应用配置文件。当我删除通配符配置文件时,我不再得到-34018错误。
我还确保在目标的构建设置的代码签名部分中列出的代码签名标识和配置文件与应用程序(不是通用的"iPhone Developer")相同
在beta 4修复。发行说明中没有任何信息