使用 UserDefaults 为不同用户存储数据
Posted
技术标签:
【中文标题】使用 UserDefaults 为不同用户存储数据【英文标题】:Use UserDefaults to store data for different users 【发布时间】:2018-01-18 09:26:21 【问题描述】:我正在尝试在我的 ios 应用中保存两个不同用户的数据。我确实设法使用这样的 Sharedpreferences 在 android 中保存了两个或多个用户的登录和个人资料详细信息。
getSharedPreferences (String FIRST_USER, int mode)
getSharedPreferences (String SECOND_USER, int mode)
...
通过这种方法,我将只检查当前用户的userid
并在启动时加载SharedPrefs
文件,然后使用相同的KEY - VALUE
对从current_users sharedPref
文件中读取数据。而当用户切换时,只需加载不同的文件,一切都会改变。
我知道 UserDefaults 相当于 iOS 中的 sharedprefs 但我不知道是否 我可以用不同的 SharedPrefs 文件做类似于我在 android 中所做的事情。
在 iOS 编程方面没有任何高经验。
感谢任何帮助。
【问题讨论】:
请提供哪些类型的用户数据可用? 使用 NSArchiever @Jaydeep 这将是简单的 StringValues 一些 API 参数,如用户 ID、名称、mobnum 等。 @Shezad 你能告诉我更多关于 NSArchiever 以及我如何使用它来实现我想要的吗? 【参考方案1】:1.使用以下方法获取保存数据的路径:
func filePath(key:String) -> String
let manager = FileManager.default
let url = manager.urls(for: .documentDirectory, in: .userDomainMask).first
return (url!.appendingPathComponent(key).path)
2.使用以下代码存储您的数据:
NSKeyedArchiver.archiveRootObject(data, toFile: filePath(key: "anyKey"))
3.使用以下代码获取您保存的数据:
if let data = NSKeyedUnarchiver.unarchiveObject(withFile:filePath(key:"anyKey"))
//here you will get your data
print(data)
注意:此处使用与存储数据相同的密钥
【讨论】:
感谢您提供详细信息。我可以使用此代码创建文件,但是当我尝试存储和打印数据时,我什么也得不到。可能我误解了data
thingy..你能对此发表评论吗?我正在这样使用它。创建文件 -> filePath(key:"MyFileName")
.. 存储数据 -> NSKeyedArchiver.archiveRootObject("MY STRING", toFile: filePath(key: "MyFileName")).. to print data ->
let data = NSKeyedUnarchiver.unarchiveObject(withFile:filePath(key :“我的文件名”))。打印(数据)`
第一次不打印。首先,您必须存储数据,然后尝试为两者使用相同的键进行打印
@Joe 它对我来说很好用。你能分享一下你是如何使用它的代码吗???以上是关于使用 UserDefaults 为不同用户存储数据的主要内容,如果未能解决你的问题,请参考以下文章
从特定的核心数据表行中检索值 - 然后将值存储到 UserDefaults
swift--使用UserDefaults来进行本地数据存储