Il mio team ha deciso che i nuovi file dovrebbero essere scritti in modo rapido, e sto vedendo uno strano problema nell'usare KVC in un oggetto Objective-C per impostare una proprietà su un oggetto Swift.Perché non posso utilizzare KVC da un oggetto Objective-C a una proprietà Swift?
mio Objective-C imposta una proprietà in questo modo: [textObject setValue:0.0 forKey:@"fontSize"]
Il mio scopo Swift (textObject
) ha un personalizzato setter/getter per questa proprietà.
var fontSize: CGFloat? {
get {
return internalTextGraphic?.fontSize
}
set {
internalTextGraphic?.fontSize = newValue
}
}
Tuttavia, se ho impostato un punto di interruzione nel set
, non è mai viene colpita.
Ho oggetti Objective-C che ottengono anche questa stessa chiamata, e ho appena implementato -setFontSize
, e l'esecuzione entra correttamente.
Perché non riesco a entrare nel mio metodo set
tramite -setValueForKey
? Ho confermato al 100% che lo textObject
esiste ed è del tipo corretto.
EDIT:
Martin R è corretto, ho dovuto fare il tipo di un non-optional. Questo è il mio codice di lavoro:
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
}
}
}
* "un Swift opzionale non è rappresentabile in Objective-C" * - beh, questo non è vero per classi opzionali/tipi di protocollo, ma è vero per struct/enums, di cui CGFloat è uno. – jtbandes
@jtbandes: hai ragione, risolto - grazie! –