gpt4 book ai didi

ios - 无法在 Swift 中访问可编码的结构值

转载 作者:行者123 更新时间:2023-11-30 11:06:27 26 4
gpt4 key购买 nike

我正在从服务中以 json 形式获取用户数据并解码为 Codable User 结构。我可以在获取响应的位置访问该属性,但我想在其他地方访问该 User 结构属性,比如说在另一个类、函数等中。

我对此很陌生,我认为理想的方法是“在获取时,将该数据存储到核心数据用户默认值中,并且然后相应地更新我的观点。

请建议什么是最好、最合适的方法,或者是否有任何方法可以直接访问可编码的结构值。

这是我的可编码结构-

struct User: Codable {
let name : String?

enum CodingKeys: String, CodingKey {
case name = "Name"
}

init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
name = try values.decodeIfPresent(String.self, forKey: .name)
}
}

我在某些函数中访问结构的错误方法是 -

UserInfo.CodingKeys.name.rawValue
//Output is the key string - 'Name'

最佳答案

我认为static可以帮助你

struct User: Codable {
let name : String?

private enum CodingKeys: String, CodingKey {
case name = "Name"
}
}

假设在这里获取数据

class FetchingClass{
static var user: User?

func fetchData(){
//After Url request success
do {
//assign directly to static varibale user
FetchingClass.user = try JSONDecoder().decode(User.self, from: data)
} catch _ {
}
}
}

在任何你想要的地方使用这样的方式,而不使用coreDataUserDefaults

class AnotherClass{
func anotherClassFunc(){
//use if let or guard let
if let user = FetchingClass.user{
print(user.name)
}
//or
if let FetchingClass.user != nil {
print(FetchingClass.name)
}
}
}

关于ios - 无法在 Swift 中访问可编码的结构值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52658222/

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