1

私は基本的にこのチュートリアルに従いましたが、ARCを使用していたため、プロジェクトがコンパイルされないことにすぐに気付きました。__bridge(>.>)を使用してすべてのエラーを抑制することができましたが、まだ 1 つのエラー メッセージが表示され、このスタックの質問を読むことができましたが、解決策を問題に適用する方法がわかりませんでした。

基本的に、問題を引き起こしているメソッドは次のようになります。

+ (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;
} 
4

1 に答える 1

4

ポインターからポインターへの引数をキャストしようとして、不必要に複雑な型キャストを行っていると思います。これはどう:

CFTypeRef result = NULL;
BOOL statusCode = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &result);
if (statusCode == errSecSuccess) {
    NSData *resultData = CFBridgingRelease(result);
    password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
}
于 2012-06-13T11:28:16.590 に答える