Хранение ключей в KeyChain с помощью KeyChainItemWrapper

Я использую класс KeyChainItemWrapper, предоставленный Apple Sample Code, чтобы сохранить токен аутентификации в цепочке ключей.

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier"JetTaxiApp_AuthToken" accessGroup:nil];  

Но когда я пытаюсь установить значение для связки ключей, возникает нечетное исключение

[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];

Завершение приложения из-за неперехваченного исключения "NSInternalInconsistencyException", причина: "Не удалось добавить брелок Пункт '.

Брелок еще не существует (в момент этого вызова) Что может вызвать это исключение?

Ответы

Ответ 1

Вам нужно использовать стандартные ключи, поэтому ваш @"auth_token" неверен.

Ключи, которые могут использоваться для этой цели и возможные значения для каждого ключа, перечислены в разделе "Константы служб ключей".

со списком допустимых констант: Справочник по связям с ключевыми словами

Например, вы можете использовать:

[_ authenticationTokenKeychain setObject: authenticationToken forKey: (__bridge NSString *) kSecValueData];

Ответ 2

[_authenticationTokenKeychain setObject:authenticationToken forKey: @"auth_token"];  

Для фрагмента кода выше, ключевой параметр может использовать только ключи, предоставленные с помощью sdk. Вы можете найти все в SecItem.h