Ответ 1
Ну, я просто нашел ответ, следуя советам на этой странице iOS KeychainItemWrapper, не обновляющий, который должен добавить
[keychainWrapper setObject:@"Myappstring" forKey: (id)kSecAttrService];
Я использую ARCified версию KeychainItemWrapper, доступную по адресу github, и я не могу заставить ее хранить как электронную почту, так и пароль.
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myApp" accessGroup:@"MY_APP.com.yourcompany.GenericKeychainSuite"];
[keychainItem setObject:[self.email dataUsingEncoding:NSUTF8StringEncoding] forKey:(__bridge id)kSecAttrAccount];
[keychainItem setObject:self.password forKey:(__bridge id)kSecValueData];
Я отлично работаю, пока я храню электронное письмо... которое не имеет знака (@). В противном случае я получаю сообщение об ошибке
*** Assertion failure in -[KeychainItemWrapper writeToKeychain]
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'
Что происходит из этих строк
result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
Есть ли у вас какие-либо представления о том, что здесь может быть неправильным?
Спасибо
Ну, я просто нашел ответ, следуя советам на этой странице iOS KeychainItemWrapper, не обновляющий, который должен добавить
[keychainWrapper setObject:@"Myappstring" forKey: (id)kSecAttrService];
Я знаю его старый вопрос, но это происходило со мной, и вышеупомянутые ответы не помогли решить мою проблему. В моем случае я обращался к брелкам, когда телефон был заблокирован. Наконец, я должен решить это, используя это сразу после инициализации брелка.
keychainWrapper.setObject(kSecAttrAccessibleAlways, forKey: kSecAttrAccessible)
Кажется, что keychain не позволяет вам получить доступ к нему, если ваш телефон не разблокирован по умолчанию.
Дополнительная информация здесь: http://b2cloud.com.au/tutorial/using-the-keychain-to-store-passwords-on-ios/