我的團隊已經決定應該用swift編寫新文件,而且我在使用Objective-C對象中的KVC設置Swift對象的屬性時看到了一個奇怪的問題。爲什麼我不能將Objective-C對象中的KVC用於Swift屬性?
我的目標C設置一個屬性,像這樣:[textObject setValue:0.0 forKey:@"fontSize"]
我夫特對象(textObject
)具有用於該屬性的自定義設置器/吸氣劑。
var fontSize: CGFloat? {
get {
return internalTextGraphic?.fontSize
}
set {
internalTextGraphic?.fontSize = newValue
}
}
但是,如果我在set
設置斷點,它永遠不會被擊中。
我有Objective-C對象,也得到這個相同的調用,我只是實現 -setFontSize
,並執行正確輸入。
爲什麼我似乎無法通過-setValueForKey
進入我的set
方法? 我已經100%確認textObject
存在並且是正確的類型。
編輯:
馬丁R是正確的,我不得不做出的類型爲非可選。這是我的工作代碼:
var fontSize: CGFloat {
get {
var retFontSize: CGFloat = 0.0
if let fontSize = internalTextGraphic?.fontSize {
retFontSize = fontSize
}
return retFontSize
}
set {
if let textGraphic = internalTextGraphic {
textGraphic.fontSize = newValue
}
}
}
*「一個Swift可選不能在Objective-C中表示」* - 呃,對於可選類/協議類型來說這不是真的,但對於CGFloat就是其中一個的結構/枚舉也是如此。 – jtbandes
@jtbandes:你說的對,修好了 - 謝謝! –