Swift 如何使用三元运算符返回值?

Swift 如何使用三元运算符返回值?,swift,swiftui,ternary-operator,Swift,Swiftui,Ternary Operator,使用三元运算符和计算概念返回样式的正确方法是什么。我做错了什么?这是伪代码,但如果我理解正确,您可以这样做: private var titleTextFieldStyle: TextFieldStyle { get { isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle() } } 一年后,我也找不到一个好方法来做这件事 问题在于RoundedBorderTextFieldSty

使用三元运算符和计算概念返回样式的正确方法是什么。我做错了什么?

这是伪代码,但如果我理解正确,您可以这样做:

private var titleTextFieldStyle: TextFieldStyle  {
    get {
        isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
    }
}

一年后,我也找不到一个好方法来做这件事

问题在于RoundedBorderTextFieldStyle()和DefaultTextFieldStyle()不是相同的类型。事实上,它们是相同的类型,所以我不知道为什么这不起作用

我为Text()构建了自己的textStyle修饰符,并使用枚举作为参数to.textStyle(),这样您就不会遇到这些问题

TextField的唯一解决方案是在正文中复制代码:

let result = isEditing ? RoundedBorderTextFieldStyle() : DefaultTextFieldStyle()
return result 

您需要包括更多信息,如
RoundedBorderTextFieldStyle()
&
DefaultTextFieldStyle()
的代码。您可以像这样返回一个计算变量中的函数,这样就会出现其他错误。
var body: some View {
    Group {
        if isEditing {
            TextField("Editing", value: $text)
                .textStyle(RoundedBorderTextFieldStyle())
        }
        else {
            TextField("Not Editing", value: $text)
                .textStyle(DefaultTextFieldStyle())
        }
    }
}