ios - 在CFTypeRef和ARC中使用时出错

标签 ios keychain cftypes

我基本上遵循this tutorial,并很快意识到该项目由于我使用ARC而无法编译。我设法使用__bridge(>。>)抑制了所有错误,但仍然收到一条错误消息,并且设法读取this stack question,但不了解如何将解决方案应用于我的问题。

基本上给我问题的方法是这样的:

+ (NSString*)getPasswordForKey:(NSString*)aKey
{
 NSString *password = nil;

 NSMutableDictionary *searchDictionary = [self dictionaryForKey:aKey];

 [searchDictionary setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit];
 [searchDictionary setObject:(id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData];


 NSData *result = nil;
 SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, (CFTypeRef *)&result);

 if (result)
 {
    password = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];

 }
 return password;
} 

最佳答案

我认为您通过尝试强制转换指针到指针参数来进行不必要的复杂类型转换。这个怎么样:

CFTypeRef result = NULL;
BOOL statusCode = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &result);
if (statusCode == errSecSuccess) {
    NSData *resultData = CFBridgingRelease(result);
    password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
}

关于ios - 在CFTypeRef和ARC中使用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012860/

相关文章:

iOS 钥匙串(keychain)使用

iOS10 上的 KeychainItemWrapper 崩溃

ios - NSArray 和 NSMutableArray 的 CFType?

ios - 我可以 NSLog 一个 JSON 并查看它的真实格式吗?

ios - 创建 ViewController 的最佳方式

ios - 我想使用 FBWebDialogs 在没有 url 的情况下在 facebook 上共享应用程序包中的图像?

ios - UIImageView 快速缩放和拖动

ios - 使用 secItemUpdate 更新 iOS 中的 kSecValueData 错误代码 -50