после того, как я столкнулся с множеством проблем с классом KeychainItemWrapper, предоставленным Apple, я смог заставить его работать, но потом я что-то сделал со своим кодом, и теперь он находится в нестабильном состоянии. На самом деле у меня есть оригинальный класс KeychainItemWrapper, я просто изменил следующие строки для проверки результатов:
OSStatus cpy = SecItemCopyMatching((CFDictionaryRef)genericPasswordQuery, (CFTypeRef *)&attributes);
NSLog(@"cpy result=%d", cpy);
if (cpy == noErr)
{
....
}
else
{
// No previous item found; add the new one.
result = SecItemAdd((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
if(result == errSecDuplicateItem) {
result = SecItemDelete((CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData]);
NSLog(@"result=%d", result);
}
NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
}
Первая переменная cpy возвращает -25300 (Элемент не может быть найден)
SecItemAdd возвращает errSecDuplicateItem (-25299 элемент уже существует)
И затем я пытаюсь удалить элемент, если функция говорит, что элемент существует, а SecItemDelete снова возвращает -25300, так что... теперь я не могу понять, что происходит.
Я провожу этот тест на iPad с iOS 6.1.3, есть какие-нибудь мысли по этому поводу? Есть ли способ полностью сбросить связку ключей и начать с нуля?
Спасибо за любую помощь