1

OSX 10.8.4 で SecItemCopyMatching を呼び出すと、何らかの理由で空の辞書を取得しました。対応するアイテムはキーチェーンにあり、ユーザー名とパスワードが含まれています。SecItemCopyMatching はそれを見つけましたが (errSecSuccess)、結果の辞書には 0 エントリしか含まれていません。少なくともユーザー名とパスワードのデータが含まれていると思いますが、私の要求の何が問題なのですか?

OSStatus status;
NSMutableDictionary *query = [NSMutableDictionary dictionary];
[query setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[query setObject:(id)kSecReturnAttributes forKey:(id)kCFBooleanTrue];
[query setObject:@"MyService" forKey:(id)kSecAttrService];

CFDictionaryRef dictRef = NULL;
status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&dictRef);
if (status != errSecSuccess) {
    CFStringRef errorRef = SecCopyErrorMessageString(status, NULL);
    NSLog(@"%s: %@", __FUNCTION__, (__bridge NSString *)errorRef);
    CFRelease(errorRef);
    return nil;
}

// --> dictRef empty

if (dictRef != NULL) CFRelease(dictRef);

ここに画像の説明を入力

4

1 に答える 1