2009-10-12 15 views
26

Używam próby użycia scifihifi-iphone (from Github) do przechowywania i pobierania nazw użytkowników i haseł. Jednak, kiedy dodać klasę SFHFKeychainUtils otrzymuję następujące błędy:Jak korzystać z 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 

Co ja Pomijając? Kiedy klikam błędy, nie zabiera mnie to do żadnego miejsca w kodzie.

+0

Wygląda na błąd linkera. Czy po raz pierwszy Twój kod zrobił coś z Keychainem? –

+0

Czy dodałeś także strukturę pęku kluczy? – jantimon

+0

Jak dodać strukturę pęku kluczy do mojej aplikacji? – Jason

Odpowiedz

76

Dodaj Security.framework, a następnie odbuduj. Czasem stwierdzam, że muszę zbudować czystą, a następnie odbudować.

Aby to dodać, kliknij prawym przyciskiem myszy swój cel w Xcode, następnie Dodaj-> Istniejące frameworki i wybierz (lub nawiguj) do Security.framework.

+0

Dzięki, to świetnie. Szukałem frameworku o nazwie Keychain.framework, który oczywiście nie istnieje. – Jason

+0

Zablokowany tym samym błędem, twoja odpowiedź zadziałała idealnie. Dziękuję –

+1

Rozwiązałam mój problem, ALE musiałem przeciągnąć Security.framework do projektu z Findera, dodając go w sekcji "Link z bibliotekami" w XCode 4.2 nie działało (nie wydawało się, że znalazło ramkę, którą dodało). –