gpt4 book ai didi

swift - 在 UserDefaults 中访问字典时类型 'Any' 没有下标成员

转载 作者:行者123 更新时间:2023-11-28 12:03:31 24 4
gpt4 key购买 nike

我正在尝试访问我传递给 UserDefaults 的字典的值,但是我得到了这个错误:

Type 'Any' has no subscript members.

我在 StackOverflow 上四处寻找答案,但我尝试的一切都失败了。

这是我存储在 UserDefaults 中的字典对象,我正在尝试访问 Authorities.levelAcess:

{
accountEnabled = 0;
accountLocked = 0;
Authorities = {
levelAccess = "tier2";
accessType = "3rd party";
};
message = "Logged in Successfully";
profile = "trust";
roles = (
{
authority = "admin";
}
);
status = 1;
}

这是 UserDefaults 的代码:

 let keyDict: Dictionary<String, AnyObject> = json
UserDefaults.standard.set(json, forKey: "dict")

这就是我尝试访问字典的方式:

enter image description here

最佳答案

在您的代码中显示此错误的原因是:如果您尝试选项 并单击,编译器无法result 识别为字典在 result 上,您会看到它的类型是 Any。您必须先将其转换为 [String: AnyObject],然后从中获取“Authorities”。

应该是这样的:

if let result = UserDefaults.standard.dictionary(forKey: "dict") {
print(result)
}

这就是你应该“可选绑定(bind)”字典的方式,因此(假设“Authorities”是一个[String: String]):

if let addresses = result["Authorities"] as? [String: String] {
print(addresses)
}

您也可以一步完成:

if let result = UserDefaults.standard.dictionary(forKey: "dict"),
let addresses = result["Authorities"] as? [String: String] {
print(result)
print(addresses)

let levelAccess = addresses["levelAccess"]
print(levelAccess) // optional
}

最后,您可以从 addresses 获取 levelAcess,如下所示:

let levelAccess = addresses["levelAccess"]

再次注意,levelAccess 将是一个可选 字符串 (String?),这意味着您也应该处理它。

关于swift - 在 UserDefaults 中访问字典时类型 'Any' 没有下标成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49839918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com