Ios 如何使用if逻辑或三元运算符在Swift中设置枚举事例的原始值?
我正试图根据设备是否为iPhoneX来设置枚举的原始值,我已将其存储为布尔值isiPhoneX。如果isiPhoneX为true,我希望rawValue为0.0,如果不是,则为1.0。三元运算符似乎不符合原始值。但是这个问题有什么解决方法吗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,无法合成一致性 当前面的原始值不是整数时,枚举事例必须声明原始值 枚举大小
公共枚举角度:双{
案例角度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,等等。^^跟进后续问题您可以从开关盒返回单个值。