2012-06-15 7 views
5

Ich möchte zwei Passwörter (ein App-Pin und ein Back-End-Pin) in meinem Schlüsselbund speichern und frage mich, wie dies funktionieren sollte.
Ich verwende den KeychainItemWrapper mit verschiedenen Bezeichnern.iOS speichern mehrere Passwörter in Schlüsselbund

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

und ich verwende entweder einen zu speichern und die App oder den Back-End-Pin abrufen.

Ich benutze:

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

Aber es funktioniert nicht - Ergebnis ist -25.299 - Der angegebene Artikel ist bereits in dem Schlüsselbund

So wie kann ich mehrere Kennwörter im Schlüsselbund speichern?

+0

'in diesem gezeigten wollen wie [[KeychainItemWrapper alloc] id1 accessGroup: nil];' <== wie funktioniert das sogar kompilieren? –

+0

Sorry, Post wurde nicht per Copy & Paste gemacht, aber aus meinem Kopf! Ich habe die Bearbeitung ... – Alexander

Antwort

8

Okay ich denke ich weiß, was das Problem ist! KeychainItemWrapper verwendet den Bezeichner für kSecAttrGeneric.
Aber das ist nicht die eine Unterscheidung von Einträgen. Wenn Sie zwei Konten oder zwei Kennwörter in

kSecValueData

speichern mögen dies für doppeltes entires in einem arror (-25.299) zur Folge hat.
Der Grund dafür ist, dass der Apfel keychain api

kSecAttrAccount

und

kSecAttrService

Einträge zu unterscheiden verwendet.
So können Sie die keychainItemWraper ändern, wenn Sie thread

+1

Ich habe gefunden, dass der KeychainItemWrapper verschiedene kleine Löcher wie folgt hat. Nachdem ich es benutzt und es für mehrere Projekte modifiziert habe, habe ich einen viel einfacheren Wrapper für den Zugriff auf den Schlüsselbund https://github.com/reidmain/FDKeychain erstellt –

Verwandte Themen