【问题标题】:How to store a user's data to the device?如何将用户的数据存储到设备中?
【发布时间】:2015-04-28 00:50:45
【问题描述】:

我正在创建一个登录视图。我有两个UITextField 用于用户的电子邮件和密码。当用户单击“登录”按钮时,这两个参数被发送到我的 API 并检查用户是否存在。如果此用户存在,我的 API 会获取用户的电子邮件、姓名、状态和令牌,并将 JSON 结果返回给我。令牌已过期。因此,我需要将令牌和电子邮件存储在设备中,这样用户就不必重复登录。

我是新手。所以,感谢任何代码帮助。谢谢。

更新

我已经将 LockSmith.swift 和 LockSmithRequest.swift 导入到我的项目中。我还添加了与 matt 博客相同的 KeyChainService.swift 到项目中。但是我遇到了这些问题,我的 xcode 是 6.2。

【问题讨论】:

标签: ios swift


【解决方案1】:

Keychains 应该用于存储用户的电子邮件和密码。以下是一些关于在 Swift 中执行此操作的帖子:

【讨论】:

  • 我还可以存储从 API 返回的令牌吗?
  • 在我发布的最后一个链接中,作者有一个saveToken 方法。我建议您尽可能密切关注该帖子。如果它不起作用,请返回并更新您的问题。
  • @Suragh,我已经将 LockSmith.swift 和 LockSmithRequest.swift 导入到我的项目中。我还添加了与 matt 博客相同的 KeyChainService.swift 到项目中。但是我遇到了这些问题,我的 xcode 是6.2."puu.sh/gGwNV/fb55409cbf.png"
  • 在博客底部有一个更新说:“Xcode 6.1:@godzirra 在 Twitter 上让我知道,让 kSecClassValue = kSecClass.takeRetainedValue() as NSString 不再适用于 Seed 2 。相反,您需要让 kSecClassValue = NSString(format: kSecClass)。这适用于我们提供给在 sn-p 顶部列出的钥匙串查询的所有参数。"
  • 我更新了您的问题,以便其他人更容易看到您的进度。随着您取得更多进展,您可以自己进一步更新您的问题。
【解决方案2】:

如果您只想在应用中存储数据,可以使用以下方法之一

  • NSUserDefaults(适合基本的小细节)
  • CoreData(适用于需要查询的大量动态变化的数据)
  • 文件(适用于静态内容)

在你的情况下,我建议使用 NSUserDefaults

假设您有信息以 NSDictionary 的形式存储。您可以按照以下步骤操作:

[[NSUserDefaults standardUserDefaults] setObject:[yourDictionary objectForKey:@"token"] forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];

稍后您可以像这样检索此密钥

[[NSUserDefaults standardUserDefaults] objectForKey:@"token"];

希望对你有帮助!

【讨论】:

  • OP 想要 Swift 中的答案。另外,这样保存密码不是不安全吗?我认为 Keychain 是应该使用的。
  • 嗯,我不知道 Objective C 语法...对不起,我是 Swift 的新手
【解决方案3】:

如果您正在寻找一个非常简单的插入式钥匙串包装器,您可以看看这个:

https://github.com/ashleymills/keychain.swift

【讨论】:

  • 感谢您的努力,Ashley。我非常感谢您的帮助。它对像我这样的 swift 新手非常有帮助。但是,如果您的库支持 swift 1.2,我将很高兴接受它。谢谢你,先生。
  • @Htarwara6245 当前版本确实支持 Swift 1.2
  • ,谢谢先生。我现在要使用你的lib。如果出现任何错误或问题,我会写在github上。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2017-12-25
相关资源
最近更新 更多