Ios 在KeyChainItemWrapper中保存密码时崩溃
苹果公司在其产品中提供了KeyChainItemWrapper类。这里有一个弧形的解决方案,我正试图遵循它:在iOS上存储在钥匙链中 包装器的用法如下所示:Ios 在KeyChainItemWrapper中保存密码时崩溃,ios,ios7,keychain,keychainitemwrapper,Ios,Ios7,Keychain,Keychainitemwrapper,苹果公司在其产品中提供了KeyChainItemWrapper类。这里有一个弧形的解决方案,我正试图遵循它:在iOS上存储在钥匙链中 包装器的用法如下所示: KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"F11-email-auth" accessGroup:nil]; [keychain setObject:[emailTextfield text] forKey:(__bri
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"F11-email-auth" accessGroup:nil];
[keychain setObject:[emailTextfield text] forKey:(__bridge id)(kSecMatchEmailAddressIfPresent)];
[keychain setObject:[passwordTextfield text] forKey:(__bridge id)(kSecClassGenericPassword)];
接受带有电子邮件文本字段的行。
但是第二行密码崩溃,出现以下异常
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'
*** First throw call stack:
(
0 CoreFoundation 0x01b445e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x018c78b6 objc_exception_throw + 44
2 CoreFoundation 0x01b44448 +[NSException raise:format:arguments:] + 136
3 Foundation 0x014a823e -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 116
4 Feeltracker 0x000053b3 -[KeychainItemWrapper writeToKeychain] + 899
5 Feeltracker 0x00004700 -[KeychainItemWrapper setObject:forKey:] + 272
6 Feeltracker 0x000092d6 -[FTLoginViewController connectToAccount:] + 374
7 libobjc.A.dylib 0x018d9874 -
原因可能是什么?我不知道这是否与我使用的常数有关
更新:
感谢rmaddy的帮助:
这似乎是抛出错误的位:
// No previous item found; add the new one.
result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
结果是-50。SecItemAdd是一个lib方法。正如我所料,这在某种程度上与钥匙链处理直接相关
keychainItemData包含:
我再也无法得到这个苹果钥匙链包装器的例子了。 幸运的是,对这件事的进一步研究揭示了这一点,这对我很有用 请注意,解决方案的原始答案并不明确,但是有人非常友好地创建了一个解决方案。我用过那个,效果很好 它是一个围绕钥匙链的包装器,比原来的更简单
希望这能帮助其他人解决类似的问题。在模拟器上运行应用程序时,我也遇到了同样的错误,但在设备上工作得非常好 为了解决模拟器的问题,我必须打开“共享密钥链权限”
没有代码是什么意思?你想让我再次复制并粘贴我上面链接的整个包装吗?我已经向你展示了我所做的一切。(这是苹果的包装,不是第三方。在这里发表垃圾评论之前,点击给定的链接)Daij Djan,我不知道你今天过得不好,或者你只是表现得很幼稚。首先,你是垃圾评论,没有理由你开始向下投票/关闭,然后删除你自己的评论不被追踪。如果你不想帮忙,没关系。您所做的没有帮助,也不专业。请使用调试器并查看
SecItemAdd
的返回值(更新日志语句以包含结果代码)。然后搜索“无法添加Keychain项”错误消息,并查找引用相同错误代码的项。似乎有几个可能的原因。错误代码将大大缩小范围。@rmaddy非常感谢您的帮助。我已经更新了问题。错误代码为-50。快速查看文档表明,-50
表示“传递给函数的一个或多个参数无效”。打开此选项可以解决我的问题。谢谢