Хранение ключей в 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