-5
votes

Assigner une propriété à elle-même

Je ne comprends pas cette erreur. Veuillez vérifier le code ci-dessous:

class CardCarousel: UIView {
    var numberOfRatesLabel: UILabel

    var bestRates: BestRates! {
        didSet {
            numberOfRatesLabel.text = bestRates.title
        }
    }

    override init(frame: CGRect) {
        self.numberOfRatesLabel = numberOfRatesLabel
        super.init(frame: frame)

        initComponents()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        initComponents()
    }

    private func initComponents() {
        numberOfRatesLabel = UILabel(frame: .zero)
        self.addSubview(numberOfRatesLabel)
    }
}


2 commentaires

'Self.numberofratesLabel = NumberofratesLabel'. Vous vous assignez une propriété à elle-même, qu'est-ce que vous ne comprenez pas à ce sujet?


Vous attribuez une propriété à elle-même, cela n'a pas de sens.


3 Réponses :


1
votes

dans la ligne suivante: Self.numberofratesLabel = NumberofratesLabel

Vous n'avez aucune déclaration locale pour numéryofrateslabel il est donc égal à Self.numberofratesLabel = Self.NumberofratesLabel Comme il n'y a aucune raison de faire cela, Swift vous empêche de le faire.


0 commentaires

3
votes

Le problème est ici:

var numberOfRatesLabel: UILabel?

override init(frame: CGRect) {
    super.init(frame: frame)

    initComponents()
}


0 commentaires

0
votes

i en place les commentaires ce que je me sens mal à propos de l'initializer J'ai vérifié à ma place maintenant son fonctionnement bien espère que cela fonctionnera également pour vous aussi.

Veuillez lire attentivement les commentaires. P>

override init(frame: CGRect) {
        // this is what you are doing wrong because numberOfRatesLabel class member is not came in to existance without its instance got memory
        // you can comment this line if you want to assign a uilable to the numberOfRatesLabel from other class
        //self.numberOfRatesLabel = numberOfRatesLabel
        super.init(frame: frame)

        initComponents()
    }
    // and still you want to initilize with constructor then you should use convenience Initilizer
    convenience  init(frame: CGRect, num_ofRatLabel : UILabel) {
        self.init(frame: frame)
        self.numberOfRatesLabel = num_ofRatLabel
    }


0 commentaires