Erreur de déclaration attendue lors de la création d'un tableau dans ViewController, impossible de déterminer pourquoi

Tout d'abord, j'utilise Xcode 6 beta 2. Deuxièmement, j'ai une expérience de programmation (basic, VB, langages de script), mais il n'inclut aucune programmation OO sérieuse, et je suis totalement nouveau dans la programmation IOS. Aller directement dans Swift. D'avance, merci à ceux qui peuvent aider. Je me bats depuis quelques jours maintenant.

J'ai du mal à build un simple tableau UIImage. (J'ai supprimé tout autre code pour la simplicité.) J'essaie de comprendre pourquoi déclarer un tableau UIImage et charger des images fonctionne dans viewDidLoad (), mais pas à la "base" de ViewController, qui est où je semble avoir besoin pour d'autres choses à travailler.

(J'ai remarqué qu'il semble être lié au fait qu'il s'agit d'une déclaration de tableau, ce qui amène ma confusion.) Je peux déclarer et assigner des variables UIImage simples dans n'importe quel endroit.

Voici mon code:

// ViewController.swift import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } var icon = UIImage[]() icon.append(UIImage(named: "yes.png")) <<==== expected declaration error icon.append(UIImage(named: "no.png")) } 

Mais ce code ne fait pas:

 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var icon = UIImage[]() icon.append(UIImage(named: "yes.png")) <==== no error, and builds icon.append(UIImage(named: "no.png")) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

Vous ne pouvez avoir que des déclarations de propriété en dehors des methods d'une class. Toutes les fonctionnalités de la class vont à l'intérieur des methods. Lorsque vous déclarez var icon = UIImage[]() dehors d'une méthode, c'est une déclaration de propriété d'instance et un code valide.

Vos deux lignes suivantes tentent de modifier la propriété. Le code en dehors des methods n'est jamais exécuté car il n'y a aucun moyen de l'appeler. Bien que vous puissiez déclarer des propriétés en dehors des methods, vous devez les utiliser dans une méthode de votre class.

Je vous recommand d'en apprendre plus sur la programmation orientée object, car il semble que vous n'en ayez pas encore la compréhension. Vous voudrez peut-être essayer une langue qui a plus de fiabilité et de ressources d'apprentissage que Swift actuellement. Si vous envisagez de faire du développement iOS, il serait utile d'apprendre l'objective-c même si vous voulez utiliser Swift parce que vous aurez une meilleure visibilité sur les API Apple qui sont les mêmes dans les deux langues.