If statement 迅捷-为什么可以';在if语句中使用警报

If statement 迅捷-为什么可以';在if语句中使用警报,if-statement,swiftui,alert,If Statement,Swiftui,Alert,我目前正在浏览#100daysofswiftUI,并就if语句中警报的使用提出了一个快速问题。这个特殊的任务在第二个项目的末尾 代码如下: .alert(isPresented: $showingScore) { if x == 1 { Alert(title: Text(scoreTitle), message: Text("The correct answer was \(countries[correctAnswer])"), dismissBu

我目前正在浏览#100daysofswiftUI,并就if语句中警报的使用提出了一个快速问题。这个特殊的任务在第二个项目的末尾

代码如下:

.alert(isPresented: $showingScore) {
    if x == 1 {
        Alert(title: Text(scoreTitle), message: Text("The correct answer was \(countries[correctAnswer])"), dismissButton: .default(Text("Restart")) {
                self.askQuestion()
        })
    }
}
我觉得这个代码应该可以工作,但是我在警戒线上有一个黄色警报,上面写着:

“警报”初始值设定项的结果未使用


我不知道这意味着什么,如何解决这个问题?

您需要在
.Alert
修饰符中返回
警报,而不是if语句

为此,您可以创建一个返回警报的计算属性:

var alert: Alert {
    if x == 1 {
        return Alert(
            title: Text(scoreTitle),
            message: Text("The correct answer was \(countries[correctAnswer])"),
            dismissButton: .default(Text("Restart")) {
                self.askQuestion()
            }
        )
    } else {
        return Alert(...) // return some other `Alert`
    }
}
并在
.alert
修改器中使用它:

.alert(isPresented: $showingScore) {
    alert
}

只需确保仅在希望显示警报时启用
showingScore

如果
showingScore
条件为
,
做这样的事

if x == 1 {
  showingScore = true
}
.alert(isPresented: $showingScore) {
        Alert(title: Text(scoreTitle), message: Text("The correct answer was \(countries[correctAnswer])"), dismissButton: .default(Text("Restart")) {
                    self.askQuestion()
            })
    }
您的警报将如下所示

if x == 1 {
  showingScore = true
}
.alert(isPresented: $showingScore) {
        Alert(title: Text(scoreTitle), message: Text("The correct answer was \(countries[correctAnswer])"), dismissButton: .default(Text("Restart")) {
                    self.askQuestion()
            })
    }