gpt4 book ai didi

ios - 如何在 swift 中使用单例访问另一个 Controller 中的模型类值?

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

我已经创建了一个带有一些变量的类并且没有用任何默认值初始化,所有变量都应该在发生网络服务调用时分配。所以我已经初始化了类的实例并将值分配给变量。

在这里,我想将这些值访问到整个项目中的所有类文件。是否可以?我不想使用任何保存方法,例如核心数据和用户默认值以及可编码的本地存储。

请帮我解决这个问题?我们试图在另一个 View Controller 中访问模型类值。但是我们得到一个零值。提前致谢。

//MARK: Shared Instance
static let sharedInstance = Singleton()

//MARK: Local Variable
var emptyStringArray : [String]? = nil
var completed : Bool!
var id : Int?
var title : String?
var userId : Int?

//MARK: Init Array
private init() {
}

init(Fromarray dictionary : [String:Any]) {
completed = dictionary["completed"] as? Bool
id = dictionary["id"] as? Int
title = dictionary["title"] as? String
userId = dictionary["userId"] as? Int
}

终于来了

class ViewController2: UIViewController { 

override func viewDidLoad() {
super.viewDidLoad()
let BoolValue = Singleton.sharedInstance.completed
print(BoolValue)
}

最佳答案

这是一个非常糟糕的架构决策。

在众多问题中,第一个问题是 API 调用的结果始终是异步的,因此在您使用它的属性时您无法判断您的类是否已正确初始化。

您通过创建依赖于网络调用的强制解包可选来创建太多歧义。 API调用失败怎么办?如果互联网连接速度很慢,您如何预测此时您的单例“还不错”?在大多数情况下,您将访问 nil,这会使您的应用程序崩溃。

我建议多读一些关于单例模式(如果有必要的话)和 iOS 架构模式的书。

关于ios - 如何在 swift 中使用单例访问另一个 Controller 中的模型类值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52386983/

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