我想将定义为RealmOptional
的类型转换为Int
或Float
,具体取决于分配给通用的类型。但是,当我尝试使用switch
声明分发它们时,原来不是RealmOptional<Int>()
而是RealmOptional<Float>()
被归类为Int
的情况。例如,如何在Swift中将RealmOptional转换为Int或Float?
switch value { // value is of type AnyObject?
case is String:
cell.valueLabel.text = value as? String
case is Int:
// RealmOptional<Float> are executed here
let v = value as! Int
cell.valueLabel.text = String(v) // Float is now treated as Int
case is Double:
print("double") // not printed at all
cell.valueLabel.text = String(value!)
default:
break
}
为什么RealmOptional<Float>()
表现为Int
这里?我怎样才能正确地设置文本到value
?
是的,虽然你在switch语句中使用了第一个可能的downcast,但我仍然希望将一个定义为“RealmOptional()”的变量转换为Float(而不是Int),同样的在'RealmOptional ()'的情况下为真。你的第二个代码将在'Int'和'Double'中执行,这不是我正在追求的目标... –
Blaszard
@Blaszard:我的答案已更新。 – dfri
谢谢。但我必须改变它的原因是因为当时不能判断物体的类型;换句话说,它可能被定义为'RealmOptional()','RealmOptional ()',或者只是一个'String'。这就是为什么它首先被输入为“AnyObject?”,我想切换它。 –
Blaszard