无法从 Userdefaults 访问数据 - Swift

Posted

技术标签:

【中文标题】无法从 Userdefaults 访问数据 - Swift【英文标题】:Not able to access data from Userdefaults - Swfit 【发布时间】:2019-06-11 09:47:04 【问题描述】:

我正在访问用户默认值:

let data = UserDefaults.standard.object(forKey: identifier)

当我看到数据中的值时,它显示为:

https://i.stack.imgur.com/UOjI8.png

data 的类型是

 po type(of: data)
 Swift.Optional<Any> . //Output

如何访问pageNumber

【问题讨论】:

【参考方案1】:

因为 data 是一个字典才能访问pageNumber,您需要将 data 转换为 Dictionary

guard let data = UserDefaults.standard.value(forKey: identifier) as? [String: Any] else  //fallback here if you need return 
let pageNumber = data["pageNumber"] as? Int ?? 0

【讨论】:

【参考方案2】:

只需在UserDefaults 实例上使用dictionary(forKey:) 方法即可直接从UserDefaults 获取dictionary

返回的dictionary[String:Any]? 类型

if let dict = UserDefaults.standard.dictionary(forKey: identifier) 
    let pageNumber = dict["pageNumber"] as? Int 

注意: pageNumber 的类型为 Int?Unwrap 它可以进一步使用。

【讨论】:

以上是关于无法从 Userdefaults 访问数据 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

Swift:无法将数组保存到 UserDefaults

SwiftUI 小部件中的 UIKit UserDefaults

在 iOS 14 中的主应用程序和小部件之间共享 UserDefaults

Objective C - UserDefaults 重写

无法访问用户默认值

SwiftUI 从 UserDefaults.standard 存储和提取字典