登录用户数据的核心数据与 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 保存在 NSUserDefault
s 是更好的解决方案。我这样做是因为我同时使用 Mantle 和 Overcoat 来解析服务器响应,并且我的用户与应用程序中的任何其他用户具有完全相同的结构。
【讨论】:
这里的答案很好。说明所有正确的信息 - 服务器端访问和本地访问【参考方案2】:我在开发最近的应用程序时遇到了与您非常相似的情况。我发现NSUserDefaults
是存储用户信息的更合适的解决方案,因为这就是它的明确用途。正如上面的Apple documentation 所说,'NSUserDefaults 类提供了一个与默认系统交互的编程接口。默认系统允许应用程序自定义其行为以匹配用户的偏好。'
根据我的经验,使用 NSUserDefaults 来存储用户信息而不是使用 Core Data 意味着代码要少得多。此外,您无需在每次用户登录您的应用程序时都必须访问 Core Data 存储区的开销)。
作为参考,我在学习在哪里使用 NSUserDefaults 时使用了 this 和 this。
【讨论】:
我最后使用了 NSUserDefaults,您提供的链接非常有用。谢谢!【参考方案3】:如果您计划当时只有一个用户,我将使用 NSUserDefault。在我们的一个应用程序中,我们需要能够管理同时运行的多个用户帐户。我们使用 UserId 作为名称标识符为每个用户构建了一个不同的数据库。让我们记住每个用户的应用程序状态 所以我认为答案将取决于场景。 请记住不要在 userDefault 上保存有价值的信息。如果将电子邮件、用户名等内容保存在应用程序密钥环上可能会更好。有一些 pod 可以让保存和从密钥环中检索就像访问字典一样简单。
祝你好运。
【讨论】:
以上是关于登录用户数据的核心数据与 NSUserDefaults的主要内容,如果未能解决你的问题,请参考以下文章