【问题标题】:Objective-C How to check if keychain item is null (objectForKey)Objective-C如何检查钥匙串项是否为空(objectForKey)
【发布时间】:2011-11-13 21:09:06
【问题描述】:

当我启动我的应用程序时,我想检查钥匙串中是否有任何存储的凭据,所以我正在尝试这个:

- (BOOL)areStoredCredentials {
if(![keychain objectForKey:(id)kSecAttrAccount]) return NO;
else{
    NSLog(@"STORED CREDENTIALS : %@ / %@", [keychain objectForKey:(id)kSecAttrAccount], [keychain objectForKey:(id)kSecValueData]);
    self.login = [keychain objectForKey:(id)kSecAttrAccount];
    self.password = [keychain objectForKey:(id)kSecValueData];
    return YES;
}}

但即使存储的凭据为空,此函数也不会返回 NO。它甚至可以打印:

2011-11-13 21:58:07.205 NeroApp[541:f803] 存储的凭据:/

有人知道为什么吗?

【问题讨论】:

  • 你能告诉我们产生keychain对象的代码吗?我假设它是来自SecItemCopyMatching 的结果字典,对吗?

标签: objective-c string null keychain


【解决方案1】:

您似乎从钥匙串中获取了空字符串。你可以试试这种检查:

if (![[keychain objectForKey:(id)kSecAttrAccount] length]) return NO;
else {
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多