【发布时间】:2020-05-17 10:39:32
【问题描述】:
我正在使用 Swift 和 SwiftUI 框架为 tvOS 开发一个测验应用程序。我有一个 QuestionBank 类和 Question 结构来设置我的问题,并且我创建了一个 QuizManager 类,它与使用 SwiftUI 编码的游戏视图交互。所以我将使用 Combine 框架传递数据。
但是在 QuizManager 中变得棘手,我想声明 @Published 变量,而其中一些变量需要另一个 #Published 变量来计算。事实上,我现在有 3 个 @Published 变量:
- 问题编号
- 问题文本
- 答案
这是我的 QuizManager 代码:
import Combine
import Foundation
class QuizManager: ObservableObject {
var questionBank: QuestionBank
@Published var questionNumber = 0
@Published var questionText: String
@Published var answers: [String]
func updateQuestion() {
self.questionNumber += 1
}
init() {
self.questionNumber = 0
self.questionBank = QuestionBank()
self.questionText = questionBank.questions[questionNumber].questionText
self.answers = questionBank.questions[questionNumber].answers
}
}
如您所见,我必须先初始化 questionNumber,然后才能使用它来初始化其他 @Published 变量。
【问题讨论】: