如何使用苹果钥匙串?

26

我正试图使用scifihifi-iphone(来自Github)来存储和检索用户名和密码,但是当我添加SFHFKeychainUtils类时,出现了以下错误:

  "_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

我漏掉了什么?当我点击错误时,它没有带我到代码的任何位置。


看起来像是链接器错误。这是你的代码第一次与钥匙串有关吗? - Matt Ball
你也添加了Keychain框架吗? - jantimon
我该如何将Keychain框架添加到我的应用程序中? - Jason
1个回答

76

添加Security.framework,然后重新构建。有时我发现我必须进行清理并重新构建。

要添加此内容,请在Xcode中右键单击您的目标,然后选择“添加”-> “现有框架”,并选择(或导航到)Security.framework


谢谢,太好了。我在寻找一个叫做Keychain.framework的框架,但显然不存在。 - Jason
1
那解决了我的问题,但我不得不从Finder中将Security.framework拖入项目中,将其添加到XCode 4.2的“链接库”部分无效(似乎找不到已添加的框架)。 - Kendall Helmstetter Gelner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接