2009-10-12 3 views
26

Ich versuche scifihifi-iphone (from Github) zu verwenden, um Benutzernamen und Kennwörter zu speichern und abzurufen. Allerdings, wenn ich die Klasse SFHFKeychainUtils hinzufügen bekomme ich folgende Fehler:Wie benutze ich Apple Keychain?

"_kSecAttrAccount", referenced from: 
     _kSecAttrAccount$non_lazy_ptr in SFHFKeychainUtils.o 
    "_SecItemDelete", referenced from: 
     +[SFHFKeychainUtils deleteItemForUsername:andServiceName:error:] in SFHFKeychainUtils.o 
    "_kSecReturnAttributes", referenced from: 
     _kSecReturnAttributes$non_lazy_ptr in SFHFKeychainUtils.o 
    "_kSecClass", referenced from: 
     _kSecClass$non_lazy_ptr in SFHFKeychainUtils.o 
    "_kSecClassGenericPassword", referenced from: 
     _kSecClassGenericPassword$non_lazy_ptr in SFHFKeychainUtils.o 
    "_SecItemAdd", referenced from: 
     +[SFHFKeychainUtils storeUsername:andPassword:forServiceName:updateExisting:error:] in SFHFKeychainUtils.o 
    "_kSecAttrLabel", referenced from: 
     _kSecAttrLabel$non_lazy_ptr in SFHFKeychainUtils.o 
    "_SecItemUpdate", referenced from: 
     +[SFHFKeychainUtils storeUsername:andPassword:forServiceName:updateExisting:error:] in SFHFKeychainUtils.o 
    "_kSecAttrService", referenced from: 
     _kSecAttrService$non_lazy_ptr in SFHFKeychainUtils.o 
    "_kSecReturnData", referenced from: 
     _kSecReturnData$non_lazy_ptr in SFHFKeychainUtils.o 
    "_SecItemCopyMatching", referenced from: 
     +[SFHFKeychainUtils getPasswordForUsername:andServiceName:error:] in SFHFKeychainUtils.o 
     +[SFHFKeychainUtils getPasswordForUsername:andServiceName:error:] in SFHFKeychainUtils.o 
    "_kSecValueData", referenced from: 
     _kSecValueData$non_lazy_ptr in SFHFKeychainUtils.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

Was soll ich auslassen? Wenn ich auf die Fehler klicke, kann ich nicht an eine Stelle im Code gelangen.

+0

Es sieht aus wie ein Linker-Fehler. Ist dies das erste Mal, dass Ihr Code etwas mit Keychain gemacht hat? –

+0

Haben Sie das Schlüsselbund-Framework auch hinzugefügt? – jantimon

+0

Wie füge ich das Schlüsselbund-Framework meiner App hinzu? – Jason

Antwort

76

Fügen Sie Security.framework hinzu, und bauen Sie sie dann neu auf. Manchmal muss ich sauber bauen und dann neu aufbauen.

Um das hinzuzufügen, klicken Sie mit der rechten Maustaste auf Ihr Ziel in Xcode, dann Hinzufügen-> Vorhandene Frameworks und wählen (oder navigieren) zu Security.framework.

+0

Danke, das ist großartig. Ich suchte nach einem Rahmen namens Keychain.framework, der offensichtlich nicht existiert. – Jason

+0

In demselben Fehler steckte Ihre Antwort perfekt. Danke –

+1

Das löste mein Problem, aber ich musste Security.framework von Finder in das Projekt ziehen, das Hinzufügen in der XCode 4.2 "Link mit Bibliotheken" Abschnitt funktionierte nicht (es schien nicht das Framework zu finden, das es hinzugefügt hatte). –