Нет такой вещи как команда очистки.
В любом случае, поскольку цепочка для ключей, к которой имеет доступ ваше приложение, предназначена только для вашего приложения, вы можете легко отслеживать, что вы в ней написали, и удалить ее.
Вы можете реализовать свой собственный метод очистки, который будет просто удалять один за другим все возможные типы данных, которые вы можете сохранить в связке ключей. Ниже описан порядок очистки всех записей GenericPassword:
- (BOOL)deleteKeychainData
{
/* delete custom data */
NSMutableDictionary *searchData = [NSMutableDictionary new];
[searchData setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[searchData setObject:kTagKeychainService forKey:(id)kSecAttrService];
OSStatus statusData = SecItemDelete((CFDictionaryRef)searchData);
[searchData release];
CHECK_CONDITION1(statusData == errSecSuccess
|| statusData == errSecItemNotFound,
@"Error while deleting keychain data, OSStatus == %d", statusData);
/* delete assymetric keys*/
return [self deleteKeyPair];
}
Итак, вам нужно вызвать этот метод для всех возможных kSecClass значений.
ПРИМЕЧАНИЕ , что для разных типов данных необходимо установить разные флаги словаря.
привет