Mein Team hat entschieden, dass neue Dateien in swift geschrieben werden sollten, und ich sehe ein seltsames Problem bei der Verwendung von KVC in einem Objective-C-Objekt, um eine Eigenschaft für ein Swift-Objekt festzulegen.Warum kann ich KVC von einem Objective-C-Objekt nicht zu einer Swift-Eigenschaft verwenden?
Meine Objective-C setzt eine Eigenschaft wie folgt: [textObject setValue:0.0 forKey:@"fontSize"]
Mein Swift Objekt (textObject
) eine individuelle Setter/Getter für dieses Objekt.
var fontSize: CGFloat? {
get {
return internalTextGraphic?.fontSize
}
set {
internalTextGraphic?.fontSize = newValue
}
}
Allerdings, wenn ich einen Haltepunkt in der set
gesetzt, es wird nie getroffen.
Ich habe Objective-C-Objekte, die auch diesen Aufruf erhalten, und ich implementiere einfach -setFontSize
, und die Ausführung tritt ordnungsgemäß ein.
Warum kann ich nicht in meine set
Methode durch -setValueForKey
gehen? Ich habe 100% bestätigt, dass die textObject
existiert und der richtige Typ ist.
EDIT:
Martin R ist richtig, ich hatte die Art ein nicht-optional zu machen. Das ist mein Arbeitscode:
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
}
}
}
* "ein Swift optional ist in Objective-C nicht darstellbar" * - Nun, das gilt nicht für optionale Klassen/Protokolltypen, aber es gilt für Strukturen/enums, von denen CGFloat eins ist. – jtbandes
@jtbandes: Sie haben Recht, behoben - danke! –