SecItemAdd возвращает код OSStatus -50
Я пытаюсь записать в связку ключей в iOS, и всякий раз, когда я пытаюсь записать в связку ключей во время тестирования на моем устройстве, я получаю код ошибки -50 в результате SecItemAdd.
Сначала я попытался реализовать такой механизм сам, и после получения ошибки много раз, я пытался KeychainItemWrapper, думая, что я делаю что-то не так. Но использование KeychainItemWrapper также дает мне тот же код ошибки: (ARCified версия KeychainItemWrapper, https://gist.github.com/dhoerl/1170641)
line 305: NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
Результат -50, тот же результат, который я получал, когда сам пробовал. Вот как я использую обертку (с группой доступа, являющейся идентификатором моего приложения)
keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"data" accessGroup:@"my.app.identifier"];
purchasedPacks = [keychain objectForKey:@"packs"];
if(purchasedPacks == nil){
[keychain setObject:[[NSMutableArray alloc] init] forKey:@"packs"];
}
Сначала я подумал, что, возможно, установка изменяемого массива будет проблемой, но попытка строки также не удалась. Что может быть причиной проблемы?
Спасибо, могу.
1 ответ
Вы не можете использовать произвольные ключи для [keychain setObject: forKey:]
, Следующее будет работать:
[keychain setObject:[[NSMutableArray alloc] init]
forKey:(__bridge id)kSecValueData]
Документация Apple полна информации об этом.