登录用户数据的核心数据与 NSUserDefaults

Posted

技术标签:

【中文标题】登录用户数据的核心数据与 NSUserDefaults【英文标题】:Core Data vs NSUserDefaults for logged in user data 【发布时间】:2015-02-13 14:14:48 【问题描述】:

我有一个应用程序,我已经使用 Core Data 存储了大量商店,用户一旦登录就可以查看这些商店。我目前正在实现应用程序的登录部分,并查看了许多相关问题。他们中的大多数人建议使用NSUserDefaults 来存储非敏感用户数据。我打算存储名字、姓氏、电子邮件、个人资料图片,也许还有地址。该列表将来可能会增加。我的问题是在我的核心数据模型中创建一个用户entity 以存储单个用户对象是一个有效的选择,否则这将是一个不好的做法,我应该使用NSUserDefaults 来实现它?我很想使用 Core Data,因为我已经设置好了所有东西,而且它不会给实现增加额外的复杂性。

【问题讨论】:

【参考方案1】:

我做了这两件事,但对我来说,将我的用户存储在 CoreData 并将我的用户 ID 保存在 NSUserDefaults 是更好的解决方案。我这样做是因为我同时使用 Mantle 和 Overcoat 来解析服务器响应,并且我的用户与应用程序中的任何其他用户具有完全相同的结构。

【讨论】:

这里的答案很好。说明所有正确的信息 - 服务器端访问和本地访问【参考方案2】:

我在开发最近的应用程序时遇到了与您非常相似的情况。我发现NSUserDefaults 是存储用户信息的更合适的解决方案,因为这就是它的明确用途。正如上面的Apple documentation 所说,'NSUserDefaults 类提供了一个与默认系统交互的编程接口。默认系统允许应用程序自定义其行为以匹配用户的偏好。'

根据我的经验,使用 NSUserDefaults 来存储用户信息而不是使用 Core Data 意味着代码要少得多。此外,您无需在每次用户登录您的应用程序时都必须访问 Core Data 存储区的开销)。

作为参考,我在学习在哪里使用 NSUserDefaults 时使用了 this 和 this。

【讨论】:

我最后使用了 NSUserDefaults,您提供的链接非常有用。谢谢!【参考方案3】:

如果您计划当时只有一个用户,我将使用 NSUserDefault。在我们的一个应用程序中,我们需要能够管理同时运行的多个用户帐户。我们使用 UserId 作为名称标识符为每个用户构建了一个不同的数据库。让我们记住每个用户的应用程序状态 所以我认为答案将取决于场景。 请记住不要在 userDefault 上保存有价值的信息。如果将电子邮件、用户名等内容保存在应用程序密钥环上可能会更好。有一些 pod 可以让保存和从密钥环中检索就像访问字典一样简单。

祝你好运。

【讨论】:

以上是关于登录用户数据的核心数据与 NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 与特定核心数据对象的关系连接,无需键映射

J2EE核心开发学习笔记 003struts2的搭建及连接数据库实现用户注册与登录

多个核心数据实例

登录时多个用户访问的核心数据值(iOS Swift)

登录时由多个用户访问的核心数据值(iOS Swift)

后台管理系统的权限控制与管理