• 15 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Résolvez vos erreurs et finissez l'application

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans ce chapitre, nous allons finaliser l'application ! Pour rappel, nous suivons les étapes suivantes :

  1. Nous allons apprendre à modifier le texte du label. 

  2. Nous allons créer nos tableaux. 

  3. Nous allons sélectionner un élément aléatoire dans chaque tableau. 

  4. Nous allons les combiner pour créer notre phrase.

Les trois premières sont faites, plus que la dernière !

Euh tout doux, mon écran voit jaune !  

C'est-à-dire ?

Regarde, j'ai plein de triangles jaunes !

Ah oui en effet, nous allons régler ça.

Pas de panique, on va y arriver !
Pas de panique, on va y arriver !

Les erreurs dans Xcode

Xcode est un logiciel intelligent. Il relit votre code en permanence et vous indique s’il est correct ou non et même s'il pourrait être amélioré. C'est tellement utile qu'il faut que vous compreniez dès maintenant comment cela fonctionne !

Les types d'erreurs

Xcode génère des erreurs de 2 niveaux différents :

 Les erreurs

Les erreurs sont des problèmes qui empêchent l'exécution de votre code. Si vous essayez de lancer votre application alors que votre projet contient des erreurs, ça ne marchera pas. Vous recevrez le message : "Build Failed"

 Les avertissements

Les avertissements sont des erreurs mineures qui n'empêchent pas votre code de s'exécuter. Parfois, il peut s'agir de suggestions de Xcode pour améliorer la qualité de votre code. Parfois, Xcode vous avertit que votre code est dangereux, c'est-à-dire qu'il est facilement susceptible de crasher. 

Voir les erreurs

Pour voir toutes les erreurs de votre projet, nous allons découvrir un nouvel onglet du navigateur (panneau de gauche) : celui des erreurs !

Le navigateur des erreurs
Le navigateur des erreurs

Ici sont rassemblées toutes les erreurs du projet dans tous les fichiers. En cliquant sur une erreur, Xcode vous renvoie au fichier correspondant. Cela peut être pratique quand une modification dans un fichier entraîne une erreur dans un autre.

Si vous voulez seulement savoir combien d'erreurs contient votre projet, pour vérifier par exemple qu'il n'y en a pas, vous pouvez jeter un coup d'œil en haut de l'interface de Xcode :

À droite, Xcode indique le nombre d'erreurs dans tout le projet
À droite, Xcode indique le nombre d'erreurs dans tout le projet.

Résoudre les erreurs

Pour les résoudre, il y a deux options :

  1. L'icône d'erreur contient un point d'exclamation. Lisez la description et si vous ne trouvez pas la solution seul, je vous suggère de copier la description dans Google. Quelqu'un a probablement rencontré cette erreur et une solution a été trouvée.

  2. L'icône d'erreur contient un point. C'est notre cas ici. Dans ce cas, Xcode est capable de résoudre lui-même l'erreur.

Dans ce deuxième cas, il vous suffit de cliquer sur l'icône (ici le triangle jaune) pour voir la solution que propose Xcode :

   

Il suffit ensuite de cliquer sur Fix pour que Xcode applique le changement.

Nous allons voir maintenant ce que veut dire ce let que nous propose Xcode.

Les constantes

Nous avons une erreur parce que je ne vous ai pas tout dit sur les variables !

En fait, il y en a de deux types différents : les variables et les constantes. Sauriez-vous deviner la différence entre les deux ?

Les variables varient et les constantes... et bien elles restent constantes ! Facile, non ?

Déclarer une constante

Pour déclarer une variable, on utilise le mot-clévar comme variable... Et pour déclarer une constante, on utilise le mot-clé let

Par exemple :

var variable = 0 // Je peux être modifié
let constant = 0 // Je ne peux pas être modifié

Si ensuite, je veux essayer de modifier ces variables :

variable = 1
constant = 1 // Cannot assign to value: 'constant' is a 'let' constant

Xcode ne dira rien pour la première ligne, mais il affichera une erreur rouge pour la deuxième en vous expliquant qu'il ne peut pas modifier la variable, car c'est une constante.

Intérêt des constantes

Soit. Mais quel est l'intérêt de créer une variable qui ne peut pas être modifiée ? 

Souvent, on va avoir besoin d'une variable pour juste stocker une donnée, mais pas forcément pour la modifier. Or stocker une donnée consomme de la mémoire. Et stocker une donnée que l'on peut modifier en consomme bien plus !

Pourquoi ?

Cela nécessite une petite explication.

Les constantes et la mémoire

La mémoire d'un ordinateur fonctionne comme une commode. Imaginez une commode infiniment longue avec des tonnes de tiroirs les uns à la suite des autres.

Prenons la variable suivante comme exemple :

var message = "bonjour"

Pour stocker cette variable, votre ordinateur va stocker chaque lettre dans un tiroir comme ceci :

La variable  message coûte 7 tiroirs de mémoire
La variable message coûte 7 tiroirs de mémoire.

En fait pas exactement... Parce que la variablemessage est une variable ! Donc elle peut varier ! Que se passe-t-il alors si au lieu de "bonjour", la variable devient "bonjour, comment ça va ?" ? Il va falloir occuper plein de nouveaux tiroirs ! Mais que fait-on si les tiroirs suivants ont déjà été remplis entre temps avec d'autres variables ? Là, il y a conflit ! 

Pour prévenir cette catastrophe, l'ordinateur va prendre de la marge. Donc en fait voici à quoi ressemble la variable message dans la mémoire :

À la création de la variable, comme l'ordinateur sait que cette variable est susceptible d'être modifiée, il réserve beaucoup de tiroirs supplémentaires ! Évidemment, c'est autant de tiroirs de perdus pour stocker d'autres variables qui permettront d'autres opérations.

D'où les constantes ! Si l'on déclare message comme étant une constante comme ceci : 

let message = "bonjour"

Dans ce cas, elle sera bien stockée sur seulement 7 tiroirs :

C'est donc beaucoup plus optimisé d'utiliser des constantes. Voilà leur principale raison d'être ! Je vous recommande donc d'utiliser dès que possible des constantes.

C'est d'ailleurs ce que vous suggère Xcode :

Variable 'randomIndex1' was never mutated; consider changing to 'let' constant

Il constate que la variable n'est jamais modifiée et nous suggère donc de la déclarer en tant que constante plutôt que variable. Vous pouvez donc transformer les 4 variables concernées en constantes pour supprimer les avertissements.

Votre ViewController.swift devrait ressembler à ça :

import UIKit

class ViewController: UIViewController {
    let celebrities = ["le Steve Jobs", "le Zinedine Zidane", "la Madonna", "le Karl Lagarfeld", "la Scarlett Johansson"]
    let activities = ["du dancefloor", "du barbecue", "de la surprise ratée", "des blagues lourdes", "de la raclette party"]
    
    @IBOutlet weak var quoteLabel: UILabel!

    @IBAction func changeQuote() {
        // On séléctionne un élément alétoire parmi les célébrités
        let randomIndex1 = Int(arc4random_uniform(UInt32(celebrities.count)))
        let celebrity = celebrities[randomIndex1]
        print(celebrity)
        
        // On séléctionne un élément aléatoire parmi les activités
        let randomIndex2 = Int(arc4random_uniform(UInt32(activities.count)))
        let activity = activities[randomIndex2]
        print(activity)
        
        // On modifie le texte
        quoteLabel.text = "Le texte du label est modifié !"
    }
}

C'est du beau travail ! On touche au but, plus qu'une étape !

Créer notre citation

Il ne nous reste plus qu'à combiner les trois parties de notre phrase. Pour cela, nous allons utiliser un outil bien pratique du type String : la concaténation.

La concaténation, c'est l'addition de chaînes de caractères les unes après les autres. Et pour faire une addition, rien de plus simple ! On utilise le signe plus + ! 

Par exemple :

var rapport = "Tout " + "va " + "bien !"
print(rapport) // Xcode affiche dans la console : Tout va bien ! 

Donc pour créer notre citation, nous n'avons plus qu'à assembler les trois parties de notre phrase :

let quote = "Tu es " + celebrity + " " + activity + " !"

Il ne nous reste plus qu'à rajouter ce texte dans le label :

quoteLabel.text = quote

Et voilà ! Votre fonction doit désormais ressembler à :

@IBAction func changeQuote() {
    // On séléctionne un élément alétoire parmi les célébrités
    let randomIndex1 = Int(arc4random_uniform(UInt32(celebrities.count)))
    let celebrity = celebrities[randomIndex1]
    
    // On séléctionne un élément aléatoire parmi les activités
    let randomIndex2 = Int(arc4random_uniform(UInt32(activities.count)))
    let activity = activities[randomIndex2]
    
    // On construit la citation et on l'affecte au texte du label
    let quote = "Tu es " + celebrity + " " + activity + " !"
    quoteLabel.text = quote
}

Vous pouvez tester votre projet ! Lancez l’application et cliquez sur le bouton !

À chaque clic, une nouvelle citation est générée !
À chaque clic, une nouvelle citation est générée !

En résumé

  • Xcode propose 2 niveaux d'erreurs :

    • Les erreurs qui empêchent le code de s'exécuter

    • Les avertissements qui n'empêchent pas le code de s'exécuter

  • Vous devez toujours résoudre les erreurs et avertissements dès qu'ils surviennent.

  • Pour concaténer plusieurs chaînes de caractères entre elles, on utilise le signe plus : +.

Félicitations ! Vous avez créé votre première application iPhone ! 🎉🎊

Vous rendez les gens heureux.
Vous rendez les gens heureux.
Exemple de certificat de réussite
Exemple de certificat de réussite