2012-06-15 13 views
5

Chcę zapisać w moim pęku kluczy dwa hasła (pinezkę aplikacji i pinezkę) i zastanawiam się, jak to zadziałać.
Używam KeychainItemWrapper z do różnych identyfikatorów.System iOS zapisuje wiele haseł w pęku kluczy

KeychainItemWrapper *kcw1 = [[KeychainItemWrapper alloc] initWithIdentifier:id1 accessGroup:nil]; 
KeychainItemWrapper *kcw2 = [[KeychainItemWrapper alloc] initWithIdentifier:id2 accessGroup:nil]; 

i używam jednego z nich do zapisania i pobrania aplikacji lub pin backendu.

używam:

[self.kcw1 setObject:aVerifyCode forKey:(__bridge id) kSecValueData] 
[self.kcw2 setObject:aAppPin forKey:(__bridge id) kSecValueData] 

Ale to nie działa - wynik jest -25299 - Określony element już istnieje w pęku kluczy

jaki sposób można zapisać wiele haseł w moim pęku kluczy?

+0

'[[KeychainItemWrapper alloc] ID1 accessGroup: nil];' <== jak to nawet skompilować? –

+0

Niestety, wiadomość nie została wykonana za pomocą polecenia "kopiuj i wklej", ale z mojej strony! Zrobiłem montaż ... – Alexander

Odpowiedz

8

Okej, myślę, że wiem, jaki to problem! KeychainItemWrapper używa identyfikatora kSecAttrGeneric.
Ale to nie jest ten, który odróżnia wpisy. Jeśli chcesz zaoszczędzić dwa konta lub dwóch haseł w

kSecValueData

to spowoduje arror (-25299) dla duplikatów aplecie.
Powodem jest to, że API jabłko Brelok wykorzystuje

kSecAttrAccount

i

kSecAttrService

odróżnić wpisy.
Więc można modyfikować keychainItemWraper jeśli chcesz lubię pokazano w tym thread

+1

Znalazłem KeychainItemWrapper ma różne małe otwory w ten sposób. Po użyciu i zmodyfikowaniu go dla wielu projektów stworzyłem znacznie prostsze opakowanie do uzyskiwania dostępu do pęku kluczy https://github.com/reidmain/FDKeychain –

Powiązane problemy