Dans Xcode 9 et Swift 4 je reçois toujours cet avertissement pour certaines propriétés IBInspectable
:
@IBDesignable public class CircularIndicator: UIView {
// this has a warning
@IBInspectable var backgroundIndicatorLineWidth: CGFloat? { // <-- warning here
didSet {
backgroundIndicator.lineWidth = backgroundIndicatorLineWidth!
}
}
// this doesn't have a warning
@IBInspectable var topIndicatorFillColor: UIColor? {
didSet {
topIndicator.fillColor = topIndicatorFillColor?.cgColor
}
}
}
Y a-t-il un moyen de s'en débarrasser ?
Peut être.
L'exact erreur (pas avertissement) que j'ai obtenu en faisant un copier/coller de la classe CircularIndicator: UIView
est:
La propriété ne peut pas être marquée @IBInspectable car son type ne peut pas être représenté dans Objective-C
Je l'ai résolu en faisant ce changement:
@IBInspectable var backgroundIndicatorLineWidth: CGFloat? { // <-- warning here
didSet {
backgroundIndicator.lineWidth = backgroundIndicatorLineWidth!
}
}
À:
@IBInspectable var backgroundIndicatorLineWidth: CGFloat = 0.0 {
didSet {
backgroundIndicator.lineWidth = backgroundIndicatorLineWidth!
}
}
Bien sûr, backgroundIndicator
n'est pas défini dans mon projet.
Mais si vous codez contre didSet
, il semble que vous ayez juste besoin de définir une valeur par défaut au lieu de rendre backgroundIndicatorLineWidth
facultatif.
Ci-dessous deux points pourraient vous aider
Comme il n'y a pas de concept d'optionnel dans l'objectif C, IBInspectable optionnel produit donc cette erreur. J'ai supprimé l'option et fourni une valeur par défaut.
Si vous utilisez certains types d'énumérations, écrivez @objc avant cette énumération pour supprimer cette erreur.
Rapide - 5
//Change this with below
@IBInspectable public var shadowPathRect: CGRect!{
didSet {
if shadowPathRect != oldValue {
setNeedsDisplay()
}
}
}
À
@IBInspectable public var shadowPathRect: CGRect = CGRect(x:0, y:0, width:0, height:0) {
didSet {
if shadowPathRect != oldValue {
setNeedsDisplay()
}
}
}