作者:茫茫人海啊啊啊_574 | 来源:互联网 | 2023-05-28 16:12
我有一个iOS应用程序,它将一些敏感信息存储在钥匙串中.在将值写入钥匙串时,我收到错误代码-34018.
我目前正在使用Apple的iOS KeyChainItemWrapper类.
以下两行代码都接收相同的错误代码.
OSStatus res1 = SecItemCopyMatching((__bridge CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes);
OSStatus res = SecItemUpdate((__bridge CFDictionaryRef)updateItem, (__bridge CFDictionaryRef)tempCheck);
这个问题不是每次都会发生,而是间歇性地发生.一旦我收到此错误,我就无法再将任何值写入钥匙串.
我打印了错误描述,如下所示:
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:res userInfo:nil];
这就是错误打印出来的:
Error: Error Domain=NSOSStatusErrorDomain Code=-34018 "The operation couldn’t be completed. (OSStatus error -34018.)"
iCaramba..
34
似乎这是Keychain中的一个错误,只有当您从xcode启动应用程序时才会出现该错误.见这里:https://github.com/soffes/sskeychain/issues/52
我们调试了很多,当应用程序从后台启动时,访问钥匙串似乎是一个问题.这只发生在调试器上(即从Xcode启动时).我们认为这个问题可能与我们的情况有关,即使它应该被操作系统杀死,调试器也能保持应用程序的活动状态.我们实际上尝试运行应用程序,然后将其置于后台并启动许多其他应用程序以占用RAM.使用调试器时,从后台恢复应用程序时出现错误,而没有调试器则没有(我们每次至少运行10次测试).
Zeb..
27
如果有人会带着这个错误和XCode8与iOS10一起回来,可能你必须在选项卡中启用KeyChain ShareCapabilities
:
1> iCaramba..:
似乎这是Keychain中的一个错误,只有当您从xcode启动应用程序时才会出现该错误.见这里:https://github.com/soffes/sskeychain/issues/52
我们调试了很多,当应用程序从后台启动时,访问钥匙串似乎是一个问题.这只发生在调试器上(即从Xcode启动时).我们认为这个问题可能与我们的情况有关,即使它应该被操作系统杀死,调试器也能保持应用程序的活动状态.我们实际上尝试运行应用程序,然后将其置于后台并启动许多其他应用程序以占用RAM.使用调试器时,从后台恢复应用程序时出现错误,而没有调试器则没有(我们每次至少运行10次测试).
2> Zeb..:
如果有人会带着这个错误和XCode8与iOS10一起回来,可能你必须在选项卡中启用KeyChain ShareCapabilities
:
不幸的是,即使启用了钥匙串共享,也会出现此问题.