Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用if逻辑或三元运算符在Swift中设置枚举事例的原始值?_Ios_Swift_Enums_Ternary Operator - Fatal编程技术网

Ios 如何使用if逻辑或三元运算符在Swift中设置枚举事例的原始值?

Ios 如何使用if逻辑或三元运算符在Swift中设置枚举事例的原始值?,ios,swift,enums,ternary-operator,Ios,Swift,Enums,Ternary Operator,我正试图根据设备是否为iPhoneX来设置枚举的原始值,我已将其存储为布尔值isiPhoneX。如果isiPhoneX为true,我希望rawValue为0.0,如果不是,则为1.0。三元运算符似乎不符合原始值。但是这个问题有什么解决方法吗 公共枚举角度:双{ 案例角度1=isiPhoneX?0.0:1.0 } 我收到以下错误消息: “Angles”声明原始类型“Double”,但不符合RawRepresentable,无法合成一致性 当前面的原始值不是整数时,枚举事例必须声明原始值 枚举大小

我正试图根据设备是否为iPhoneX来设置枚举的原始值,我已将其存储为布尔值isiPhoneX。如果isiPhoneX为true,我希望rawValue为0.0,如果不是,则为1.0。三元运算符似乎不符合原始值。但是这个问题有什么解决方法吗

公共枚举角度:双{
案例角度1=isiPhoneX?0.0:1.0
}
我收到以下错误消息:

“Angles”声明原始类型“Double”,但不符合RawRepresentable,无法合成一致性

当前面的原始值不是整数时,枚举事例必须声明原始值

枚举大小写的原始值必须是文字

更新: 我没有提到我也有其他不需要三元逻辑的情况,我现在意识到这是相关的。更准确的例子是:

公共枚举角度:双{
案例角度1=isiPhoneX?0.0:1.0
箱角2=5.0
箱角3=6.0
}

RawValue必须在编译时确定。您可以使用计算属性,将自定义逻辑放在交换机机箱中,如下所示:

public enum Angles {
   case angle1

    var doubleValue: Double {
        switch(self) {
            case .angle1: return isiPhoneX ? 0.0 : 1.0
        }
    }
}

RawValue必须在编译时确定。您可以使用计算属性,将自定义逻辑放在交换机机箱中,如下所示:

public enum Angles {
   case angle1

    var doubleValue: Double {
        switch(self) {
            case .angle1: return isiPhoneX ? 0.0 : 1.0
        }
    }
}

您可以使用关联的值

public enum Angles {
    case angle1(Double)
}
像这样使用它

let angle = Angles.angle1(isiPhoneX ? 0.0 : 1.0)

switch angle {
case .angle1(let value):
    print(value)
 }

您可以使用关联的值

public enum Angles {
    case angle1(Double)
}
像这样使用它

let angle = Angles.angle1(isiPhoneX ? 0.0 : 1.0)

switch angle {
case .angle1(let value):
    print(value)
 }

谢谢如果我有其他不需要三元运算符/自定义逻辑的情况,您知道如何使这项工作正常吗?ie:case angle2=5.0,case angle3=6.0,等等。^^跟进后续问题,您只需从开关盒返回单个值即可。谢谢!如果我有其他不需要三元运算符/自定义逻辑的情况,您知道如何使这项工作正常吗?ie:case angle2=5.0,case angle3=6.0,等等。^^跟进后续问题您可以从开关盒返回单个值。