我基本上遵循了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;
} 发布于 2012-06-13 19:28:17
我认为通过尝试强制转换指针到指针参数,您正在进行不必要的复杂类型转换。这样如何:
CFTypeRef result = NULL;
BOOL statusCode = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &result);
if (statusCode == errSecSuccess) {
NSData *resultData = CFBridgingRelease(result);
password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
}https://stackoverflow.com/questions/11012860
复制相似问题