我想將定義爲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