2009-10-12 7 views
26

Estoy usando tratando de usar scifihifi-iphone (from Github) para almacenar y recuperar nombres de usuario y contraseñas. Sin embargo, cuando agrego la clase SFHFKeychainUtils consigo los siguientes errores:¿Cómo uso 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 

¿Qué estoy dejando fuera? Cuando hago clic en los errores, no me lleva a ningún lugar en el código.

+0

Parece un error de enlazador. ¿Es esta la primera vez que tu código ha hecho algo con Keychain? –

+0

¿Has añadido también el marco de Keychain? – jantimon

+0

¿Cómo agrego el marco de Keychain a mi aplicación? – Jason

Respuesta

76

Agregue Security.framework, luego reconstruya. A veces me parece que tengo que construir limpio y luego reconstruir.

Para agregar esto, haga clic derecho en su objetivo en Xcode, luego Agregar-> Marcos existentes y elija (o navegue) a Security.framework.

+0

Gracias, eso es genial. Estaba buscando un framework llamado Keychain.framework que obviamente no existe. – Jason

+0

Atrapado en el mismo error, tu respuesta funcionó perfectamente. Gracias –

+1

Eso resolvió mi problema PERO tuve que arrastrar Security.framework en el proyecto desde Finder, y agregarlo en la sección "vincular con bibliotecas" de XCode 4.2 no funcionó (no pareció encontrar el marco que había agregado). –

Cuestiones relacionadas