私のチームは、新しいファイルを迅速に作成し、Objective-CオブジェクトでKVCを使用してSwiftオブジェクトのプロパティを設定する際に奇妙な問題が発生すると判断しました。Objective-CオブジェクトのKVCをSwiftプロパティに使用できないのはなぜですか?
私のObjective-Cはそうのようにプロパティを設定します:[textObject setValue:0.0 forKey:@"fontSize"]
マイスウィフトオブジェクト(textObject
)は、このプロパティのカスタムセッター/ゲッターがあります。
var fontSize: CGFloat? {
get {
return internalTextGraphic?.fontSize
}
set {
internalTextGraphic?.fontSize = newValue
}
}
ただし、set
にブレークポイントを設定すると、決してヒットしません。
Objective-Cオブジェクトにも同じ呼び出しがあり、 -setFontSize
を実装するだけで、正しく実行されます。
私のset
メソッドには、-setValueForKey
で表示されないのはなぜですか? 私は100%確認したtextObject
が存在し、正しいタイプです。
EDIT:
マーティン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
}
}
}
* "Objective-CではSwiftオプションは表現できません" * - これはオプションのクラス/プロトコルタイプでは当てはまりませんが、CGFloatが1であるstructs/enumsに当てはまります。 – jtbandes
@jtbandes:あなたは正しいです、固定です - ありがとう! –