如何解决Keychain错误:C指针类型'CFTypeRef'的隐式转换

时间:2014-01-17 02:13:55

标签: ios objective-c keychain

我正在尝试Using the Keychain to store passwords on iOS 故事来存储用户电子邮件密码以便登录。

在我的m档案中:

....
....
#import "KeychainItemWrapper.m"
....
....
KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest" accessGroup:nil];
        [keychain setObject:kSecAttrAccessibleWhenUnlocked forKey:kSecAttrAccessible];

        NSLog(@"%@, %@", [keychain objectForKey:kSecAttrAccount], [keychain objectForKey:kSecValueData]);

        [keychain setObject:@"example@email.com" forKey:kSecAttrAccount];
        [keychain setObject:@"MySuperSecretPassword" forKey:kSecValueData];

        NSLog(@"%@, %@", [keychain objectForKey:kSecAttrAccount], [keychain objectForKey:kSecValueData]);

但我收到以下错误:

Implicit conversion of C pointer type 'CFTypeRef' (aka 'const void *') to Objective-C pointer type 'id' requires a bridged cast

enter image description here

1 个答案:

答案 0 :(得分:6)

我已经在你的另一篇文章中回答了这个问题。 Is there an Android sharedpreferences equivalent in iOS to save credentials (Username and Password)?

我会在这里重新发布:

这是因为您可能正在使用“ARC”。你是?如果是这样,您可以设置一个标志来忽略该特定文件的ARC。选择项目,选择目标,选择Build Phases并展开“Compile Sources”下拉菜单。查找KeychainItemWrapper(或任何你称之为钥匙串文件)并设置此标志。 -fno-objc弧