6

ARC環境での型変換に問題があります。誰かがそれに対処するのに十分親切なら:

このコード行を使用した場合:

NSData *resultData = nil;

NSMutableDictionary *passwordQuery = [query mutableCopy];

[passwordQuery setObject: (id) kCFBooleanTrue forKey: (__bridge  id) kSecReturnData];

status = SecItemCopyMatching((__bridge  CFDictionaryRef) passwordQuery, (CFTypeRef *) &resultData);

それから私はエラーを受け取ります:

Cast of an indirect pointer to an Objective C pointer to 'CFTypeRef*'(aka 'const void **')is disallowed with ARC.

これを解決する方法を教えてください。

前もって感謝します..

4

1 に答える 1

6

結果のデータ型はCFTypeRef、呼び出し後までであるため、 :SecItemCopyMatchingを渡すことから始めます。CFTypeRef

CFTypeRef resultData = nil;
status = SecItemCopyMatching((__bridge CFDictionaryRef) passwordQuery,  &resultData);

クエリで、がaである必要があると指定されたため、これでresultData、としてキャストできます。次に、それをさらににキャストします。CFDataRefresultDataCFDataRefNSData

CFDataRef resultCFData = (CFDataRef)resultData;
NSData *resultNSData = (__bridge NSData *)resultCFData;

または一行で:

NSData *resultNSData = (__bridge NSData *)(CFDataRef)resultData;
于 2012-09-11T18:45:38.440 に答える