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 полна информации об этом.

Другие вопросы по тегам