iOS - 正确的用户登录会话存储方式

3
什么是最简单正确的方法来存储会话以告知用户是否已登录?我甚至可以将基本信息存储在内存中(已登录用户的名字、姓氏等)。 我听说过单例对象,但我不确定那是否是一个解决方案。我的主要目标是为应用程序存储基本用户信息。 这种方法可行吗?
[[NSUserDefaults standardUserDefaults] valueForKey:@"someKeyName"] 

我不确定这是否高效,因为我计划使用它来处理大约8个值。


单例模式应该没问题。 - iDev
你想让会话在应用程序终止时仍然保持吗? - Bio
@BioCho 你好,是的,我计划让会话持续存在,即使用户退出应用程序,除非用户手动双击 iPhone 的主页按钮并手动关闭应用程序。 - TMan
1个回答

3

如果您不需要在会话之间存储任何信息,那么单例模式是很好的选择。

例如,如果您想保存用户的电子邮件地址,以便他们每次登录时无需填写它,那么您将需要使用:

[[NSUserDefaults standardUserDefaults] valueForKey:@"someKeyName"];

就像你的问题一样。


好的,非常感谢您的回答。我注意到有一个 valueForKey 和 setObject,在这里有很大的区别吗?同时,在设置完 NSUserDefaults 后同步它们是可以的吗?因为我遇到了一些问题,有时候值被存储了,有时候却没有。 - TMan
2
首先,是的,每次设置后你必须同步,否则可能会出现你提到的不一致情况。其次,是的,valueForKey用于检索值,而setObject:forKey:用于设置值。我个人尝试为每种类型使用自定义setter和getter,例如:如果我使用布尔值,则使用“boolForKey”和“setBool:forKey”。查看NSUserDefaults的类参考以了解可用内容(https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html)。 - ryanwils
1
非常感谢您的输入。谢谢 :) - TMan

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