Ekibim yeni dosyaların hızlı bir şekilde yazılmasına karar verdi ve bir Objective-C nesnesinde bir Swift nesnesinde bir özellik belirlemek için KVC kullanımıyla ilgili garip bir sorun görüyorum.KVC'yi bir Objective-C nesnesinden bir Swift Özelliğine neden kullanamıyorum?
Benim Objective-C şöyle bir özellik ayarlar: [textObject setValue:0.0 forKey:@"fontSize"]
Benim Swift nesne (textObject
) bu özellik için özel bir ayarlayıcı/getter vardır. Ben set
bir kesme noktası ayarlarsanız
var fontSize: CGFloat? {
get {
return internalTextGraphic?.fontSize
}
set {
internalTextGraphic?.fontSize = newValue
}
}
Ancak, darbe aldığında asla.
Ben de bu aynı çağrıyı almak Objective-C nesneleri var ve ben sadece -setFontSize
uygulamak ve yürütme düzgün girer.
-setValueForKey
aracılığıyla set
yöntemine neden giremiyorum? textObject
var% 100 onaylı ve doğru tür.
DÜZENLEME:
Martin R ı tip isteğe bağlı olmayan bir yapmak zorunda doğrudur. Bu benim çalışma kodudur:
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
}
}
}
* "Hızlı isteğe bağlı, Objective-C'de gösterilemez" * - iyi, bu isteğe bağlı sınıflar/protokol türleri için geçerli değildir, ancak CGFloat'ın bir olduğu yapılar/enumlar için geçerlidir. – jtbandes
@jtbandes: Haklısın, sabit - teşekkürler! –