2

ARCified を使用してKeychainItemWrapperいますが、あるキーチェーン アイテムのデータを別のアイテムに移行するのに問題があります。基本的に、アプリ固有のアイテムから共有アイテムにコンテンツをコピーしようとしています。簡潔にするために、そこで失敗するため、ユーザー名のみを入力しました。

KeychainItemWrapper *legacyKeychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"mainLogin" accessGroup:@"C35BXHSRSA.com.foo.bar"];
NSString *legacyUser = [legacyKeychainItem objectForKey:(__bridge id)kSecAttrAccount];

self.migratedKeychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"security" accessGroup:@"C35BXHSRSA.com.foo.security"];
// dies here
[self.migratedKeychainItem setObject:legacyUser forKey:(__bridge id)kSecAttrAccount];

KeychainItemWrapperメソッドwriteToKeychain投げで死ぬNSAssert( result == noErr, @"Couldn't update the Keychain Item." );

Keychain Services Referenceでエラーを調べるとわかります

errSecDuplicateItem –25299 アイテムは既に存在します。

文字列をハードコーディング/変更することでこの問題を確認でき、コードは完全に機能しますが、データを移行しようとしています...したがって、同一であることが重要です。問題は、2 つの異なるキーチェーン アイテムの場合にエラーがスローされるのはなぜですか。

4

1 に答える 1