2017-09-11 2 views
0

Il existe une méthode pour créer des données. Cette méthode n'a besoin d'être appelée qu'une seule fois. Donc, actuellement c'est la structure:comment initialiser les méthodes dans un UIViewController à l'intérieur d'une méthode viewDidLoad

var dataCreated : Bool? = false 



override func viewDidLoad() { 
    super.viewDidLoad() 

    if dataCreated! == false { 
     createData() 
     self.dataCreated = true 
    } 
} 

Est-ce la bonne façon d'assurer la méthode createData() est appelée une seule fois? Je vous remercie.

+0

Définir "une fois". Une fois par instance de ce contrôleur de vue en cours de création? Une fois chaque fois que l'application est exécutée? Une fois pour la durée de vie de l'application en cours d'installation? – rmaddy

+0

Une fois par instance de ce contrôleur de vue en cours de création –

+0

'viewDidLoad' est seulement appelé une fois par instance d'un contrôleur de vue en cours de création – dan

Répondre

2

Puisque vous voulez seulement createData d'être appelé une fois par instance de votre contrôleur de vue, puis en utilisant viewDidLoad est un bon endroit pour l'appeler. En outre, étant donné que viewDidLoad n'est appelée qu'une seule fois par instance du contrôleur de vue, la propriété dataCreated n'est pas nécessaire. Vous pouvez supprimer cela.

override func viewDidLoad() { 
    super.viewDidLoad() 

    createData() 
} 

Une autre option serait d'appeler createData de la méthode init du contrôleur de vue. Cela dépend de ce à quoi createData doit accéder. Si la méthode createData doit accéder aux vues et aux prises, vous devez utiliser viewDidLoad.

+0

Merci @rmaddy votre solution a fonctionné pour moi –

0

Votre code fonctionnera comme prévu. Vous pourriez préférer calculer si les données ont été créées en vérifiant leur existence plutôt que de suivre une variable booléenne distincte. Bien que cela fonctionnera aussi.