钥匙串项包装器“无法添加钥匙串项”。

8

我希望将访问令牌存储到钥匙串中。但是我收到了错误提示:无法添加钥匙串项目。

我查看了一些stackoverflow上的帖子,例如:在钥匙串中存储电子邮件不可能(KeychainItemWrapper)

我的代码:

let a = NSKeyedArchiver.archivedData(withRootObject: "980a872c17a075367357e25e88c1c0476417092a")
let keyWrapper = KeychainItemWrapper.init(identifier: "23123123", accessGroup: nil)
keyWrapper?.setObject(a, forKey: kSecValueData)
  1. I tried add this

    keyWrapper?.setObject(kSecAttrAccessible, forKey: kSecAttrAccessible)
    
  2. Change kSecValueData to kSecAttrGeneric

我正在使用Swift 3.0的Xcode 8。有什么提示,谢谢!编辑===========================Viruss mca的答案打开“共享钥匙链授权”对我只起了一次作用 :(

在Xcode 8中的iOS 10模拟器中,使用SecItemAdd时总是返回错误34018。 - Martin R
2个回答

27

我最近在使用 Xcode 8 时遇到了这个问题。

要解决这个问题,您需要将“共享钥匙串权限”添加到 Xcode 的功能中。

输入图像描述

许多用户都面临过此问题。

参考链接: https://forums.developer.apple.com/thread/60617


嗨Viruss,很有趣。这只对我起作用了一次。我已经启用它了。但现在还是出现相同的错误。我尝试将KeyChain Groups字符串添加到accessGroup参数中,仍然没有帮助。有什么想法吗? - William Hu
@WilliamHu:你在哪里遇到了这个问题?是在设备上吗? - Toseef Khilji
模拟器和设备。 - William Hu
抱歉,只是想引起注意,我取消了接受答案。无论如何,谢谢! - William Hu
我只在模拟器中看到这个错误,在iOS 10设备上它运行得很好。我很困惑。 - ray
谢谢,节省了我的时间。 :) - Atanu Mondal

-2

好的,经过长时间的努力,我发现在更新到Xcode8之前我的Apple账户已经过期了。我通过删除我的账户然后重新登录解决了这个问题。而且只适用于设备而不是模拟器。


2
关于资格证书的另一个答案应该是被采纳的答案。 - Kenny Wyland
嗨@KennyWyland,我知道Viruss提供了一个很好的解决方案,但它并没有真正解决我的问题。我已经为这个答案点赞了。谢谢! - William Hu
它没有解决你的问题,但从提供的答案中,是最好的一个原因。 - Ricardo Alves

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接