Apprendre le développement d'applications iOS et SwiftUI (2021) | Chris Ching | Skillshare
Menu
Recherche

Vitesse de lecture


  • 0.5x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 2x

Apprendre le développement d'applications iOS et SwiftUI (2021)

teacher avatar Chris Ching, Co-Founder of CodeWithChris.com

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      0:48

    • 2.

      01 : L'écosystème Apple développeur

      3:59

    • 3.

      02 : Tutoriel Xcode

      20:09

    • 4.

      03 : Comment créer des interactions d'utilisateurs

      13:21

    • 5.

      04 : vues de SwiftUI et contenants

      11:40

    • 6.

      05 : Créer le jeu de cartes de guerre

      15:23

    • 7.

      06 : Constantes de variables et types de données

      14:42

    • 8.

      07 : Fonctions de programmation rapide

      21:23

    • 9.

      08 : structures de programmation rapides

      15:22

    • 10.

      09 : Instances de programmation rapides

      26:42

    • 11.

      10 : touches SwiftUI

      15:02

    • 12.

      11 : Propriétés de l'État

      13:46

    • 13.

      12 : Si les déclarations

      14:55

    • 14.

      13 : Challenge bonus

      1:58

    • 15.

      14 : Quoi de prochain ?

      4:15

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

1 444

apprenants

8

projets

À propos de ce cours

Hey, c'est Chris ici.

Je veux simplement vous féliciter, de la première étape de votre parcours App et de vous donner quelques mots de conseils et d'encouragements.

En coup d'œil, cela peut sembler comme cela simplement un cours que vous avez suivi avant mais c'est beaucoup plus plus que cela.

C'est du matériel de formation que j'utilise et using depuis 2013 et des milliers d'apprenants ont passé à son cours de réussie

En outre, ce fait fait de plein effort de temps pour huit ans, cela signifie que les gens m'appuient heureusement de payer pour cette formation parce qu'ils obtient des résultats de résultats. Je vous dis tout cela parce que j'espère que vous ne sous-estimez pas la transformation que vous passerez au 14 jours.

Ces leçons sont conçue pour vous faire découvrir le développement d'applications iOS, même si vous n'avez jamais touché une ligne de code.

Vous apprendrez à découvrir la façon dont des de applications sont créées de la fabrication de codes rapides peuvent être comprises et écrites même par non-codeurs et vous réaliserez votre première appli de votre créateur de codes et vous réaliserez votre première appli en complétant ce défi.

Après avoir terminé ces 14 jours, vous avez la décision de prendre make.. à poursuivre la voie d'apprentissage qui peut potentiellement conduire à une nouvelle carrière ou à une nouvelle entreprise ?

Ou vous avez découvert que le développement d'applications n'est pas pour vous et vous également vous également bien.

Dans l'bout de la question, c'est un moyen solide de se lancer dans le développement d'applications d'iOS et je suis tellement humble que vous apprenez avec moi

Je vous remercie. Merci.

Très bien, j'ai hâte de commencer !

Chris

Rencontrez votre enseignant·e

Teacher Profile Image

Chris Ching

Co-Founder of CodeWithChris.com

Enseignant·e

If you’re a beginner and you want to learn app development step by step, in plain simple terms, then you’ve come to the right place.

Thousands of people, just like you, have used my actionable video and article tutorials to go from a beginner to a full fledged iOS developer.

What makes CodeWithChris different is the focus on staying motivated through small gains while building momentum to get to the finish line and cross the “Hump”.

My effective and motivational approach is why thousands of beginners are finding success using my material.

If you’d like to learn more, join my Skillshare class, visit CodeWithChris.com or search for CodeWithChris on YouTube.

Voir le profil complet

Level: Beginner

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour et bienvenue. Dans ce défi débutant de 14 jours, vous allez commencer votre voyage avec un coup de fouet. Vous allez apprendre comment les applications sont créées et comment elles se retrouvent sur l'App Store. Vous allez vous familiariser avec Xcode et donc commencer votre propre projet d'application. Vous allez apprendre à créer interfaces utilisateur avec l'interface utilisateur Swift. Et vous allez apprendre les bases de la programmation Swift pour pouvoir lire et écrire du code Swift simple. Maintenant, dans les 14 prochaines leçons, vous allez acquérir toutes ces nouvelles compétences. Et vous allez avoir créé votre propre application que vous pourrez installer sur votre appareil et montrer à tous amis et à votre famille ce que vous avez fait. Plus important encore, cependant, vous serez extrêmement confiant et enthousiaste à l'idée de continuer à développer vos compétences en développement d'applications au-delà de ce que nous avons couvert ici. Cela pourrait vraiment être le début de quelque chose de nouveau pour vous. Si vous êtes prêt, retroussons nos manches et commençons. 2. 01 : L'écosystème Apple développeur: Je vais parcourir ce diagramme et après, je vous dirai où trouver toutes les pièces, tout commence par l'IDE Xcode. Aujourd'hui, IDE signifie Integrated Development Environment, qui désigne l'application et tous les outils utilisés par un développeur pour créer quelque chose. Pour le reste de ce cours, nous l'appellerons simplement Xcode. C'est ici que nous créons notre application en écrivant du code Swift, construisant l' interface utilisateur ou l'interface utilisateur, et en la connectant à toutes nos données. Swift est le langage de programmation que nous utilisons pour exprimer notre logique et indiquer au système ce que nous voulons faire. Nous pouvons même créer l' interface utilisateur via le code swift, comme vous le verrez bientôt. Désormais, l'interface utilisateur Swift est un framework d'interface utilisateur qui nous permet de créer rapidement des applications pour toutes les plates-formes Apple. un des avantages de l' apprentissage de Xcode, interface utilisateur rapide et rapide est qu'il s'agit des mêmes compétences et outils utilisés pour créer toutes les applications pour toutes les plateformes d' Apple, y compris iOS, iPadOS, TVOS, WatchOS, et Mac OS. Et dans certains cas, votre application pourra fonctionner sur plusieurs plates-formes sans beaucoup de changements. Maintenant, une fois votre application créée, vous pouvez la distribuer avec l'App Store d'Apple. Pour ce faire, vous rejoindrez le programme Apple Developer Program, qui nécessite des frais d'inscription annuels. Une fois inscrit, vous avez accès à plusieurs avantages, notamment le portail Connect App Store, vol d'essai et le portail de provisioning. Il existe d'autres avantages , notamment l'accès au logiciel bêta et le support des ingénieurs Apple. Et je vais fournir un lien vers la liste complète ci-dessous. Le portail de provisioning vous donne accès à des outils d'identification et de signature de code de votre application. C'est comme mettre votre signature sur l'application pour qu'Apple puisse identifier qui l'a créée. Et c'est important pour la sécurité des utilisateurs finaux qui téléchargent votre application. Et c'est également important pour vous, car cela empêche les codeurs malveillants de se faire passer pour vous. Une fois que votre application est dans un état testable, vol de test vous permet d'inviter des utilisateurs à télécharger et à tester votre application bêta. Il sera possible de vous envoyer des commentaires et des rapports de bogues directement via le programme de vol d'essai. Utilisez le vol d'essai pour vous assurer que votre application est aussi soignée que possible avant le lancement. Enfin, l'App Store Connect est l'endroit où vous allez créer l' élément atlas pour votre application, y compris toutes les métadonnées et les captures d'écran. Si votre application a des achats dans l'application, c'est également là que vous les configurerez. Une fois que votre application est testée et que la liste est prête, vous pouvez télécharger l' application depuis Xcode vers l'App Store Connect à partir de là, l'équipe de certification d' Apple examinera votre application pour s'assurer qu'elle répond à l'application. Consignes de qualité du magasin. Cela prend quelques jours et ne vous inquiétez pas si vous échouez, car vous pouvez corriger ce qu'ils signalent et le soumettre à nouveau pour examen. Si tout semble bien, ils approuveront l'application et votre application sera en ligne. Félicitations. Très bien, alors où pouvez-vous trouver ces différents éléments de l'écosystème Apple Developer Ecosystem ? Vous pouvez télécharger Xcode gratuitement depuis le Mac App Store. Je vais fournir un lien ci-dessous. Vous n'avez pas besoin d'obtenir l'interface utilisateur Swift ou Swift. Ceux-ci viennent juste avec Xcode. En ce qui concerne le programme Apple Developer, je vais fournir un lien vers la page Inscription ci-dessous. Je tiens à mentionner que l'adhésion au programme Apple Developer Program est complètement facultative si votre objectif n'est pas de distribuer des applications dans l' App Store, n'y adhérez pas. Vous pourrez toujours apprendre comment créer des applications pour vous-même. C'est donc l'écosystème Apple Developer. C'est le processus que je vais vous guider si vous continuez avec ce parcours d'application. À la fin de ce parcours d'apprentissage, vous allez créer vos propres applications l'aide de tous les outils que nous avons couverts, même si vous n'avez pas d'expérience de codage pour le moment, je vous promets que vous serez surpris de ce que vous pouvez faire d' ici la fin de ce défi. Dans la prochaine leçon, nous allons plonger directement dans Xcode. Très bien, je vous y verrai. 3. 02 : Tutoriel Xcode: Bonjour et bienvenue. Dans ce tutoriel Xcode, vous allez vous familiariser avec l'environnement de développement dans lequel vous allez créer des applications. Je vais vous montrer où télécharger Xcode et comment démarrer un nouveau projet d'application. Ensuite, nous allons passer en revue les principaux domaines de Xcode et ensuite quels sont les quatre fichiers de votre projet d' application. Enfin, nous terminerons la leçon avec quelques conseils rapides sur la façon de naviguer dans Xcode. Très bien, cela dit, plongeons dedans. Commençons par parler de l'endroit où trouver Xcode. C'est gratuit, donc vous n'avez pas besoin de payer pour cela. Il suffit de lancer le Mac App Store sur votre ordinateur , puis de rechercher Xcode. Vous allez accéder à une page comme celle-ci dans les résultats de recherche. Cliquez dessus et vous pourrez le télécharger gratuitement. Je l'ai donc déjà téléchargé. C'est pourquoi il est dit mise à jour ici. Je veux juste que vous ignorez l'avertissement ici. Il s'agit en fait d'une application très volumineuse avec de nombreuses fonctionnalités différentes. Il est compréhensible qu' il y ait quelques bugs. Et si vous regardez les commentaires, il y a des gens qui se plaignent d'autres choses sans rapport avec l'application. Ils se plaignent de la façon dont Apple gère leur entreprise , etc. Et certains d'entre eux sont très, très vieux. Je veux que vous preniez note de ces informations importantes. Cliquez sur ce bouton juste pour vérifier quelles sont les conditions requises pour installer Xcode. Et vérifiez également que vous disposez de suffisamment d'espace libre sur le disque dur. après mon expérience, il faut en fait plus d'espace sur le disque dur au fil du temps. Ensuite, ce qu'il dit ici. Donc, si vous avez quelque chose comme 12 concerts gratuits, il se peut que vous ne vous laissiez pas installer cela car pendant le processus d'installation, il prend plus d'espace et je pense qu'il se débarrasse d' un tas de fichiers et il s'arrête à cette taille. Cependant, avec le temps, lorsque vous téléchargez des composants de développement supplémentaires et des simulateurs iOS supplémentaires, cela peut augmenter encore. Assurez-vous donc d'avoir suffisamment d'espace disque dur. Très bien, donc si, pour une raison quelconque vous ne pouvez pas accéder au Mac App Store, vous pouvez également visiter la page Xcode officielle du site des développeurs Apple. L'URL est donc développeur dot apple.com slash Xcode. Et vous pouvez immédiatement cliquer sur le lien Ressources ici. Ensuite, vous serez redirigé vers une page où vous pourrez télécharger Xcode ici, elle vous emmène sur le Mac App Store. En fait, vous pouvez également télécharger des versions bêta de Xcode. Maintenant, je ne le recommanderais pas parce que souvent c' est plutôt buggé. Il existe un logiciel bêta. Je recommande donc de m'en tenir aux sorties officielles. Si, pour une raison quelconque, vous souhaitez télécharger une ancienne version de Xcode, vous pouvez faire défiler la page vers le bas et cliquer sur ce lien ici. Maintenant, pour télécharger les versions bêta du logiciel Apple, vous devez être inscrit à leur programme Apple Developer Program, dont nous avons parlé dans la leçon précédente. Pour télécharger des versions plus anciennes de Xcode, je ne pense pas que vous ayez besoin d'être inscrit à ce programme. Je pense que vous avez juste besoin d'un identifiant Apple gratuit. Enfin, si vous êtes sur un PC, vous exécutez Windows. Consultez les ressources au début du cours pour connaître les options qui s'offrent à vous. Très bien, alors profitez maintenant de l'opportunité de télécharger et d'installer Xcode si ce n'est pas déjà fait, puis lancez-le pour la première fois. Lors de votre premier lancement, il vous demandera votre mot de passe administratif pour installer des composants de développement supplémentaires. Vous allez vouloir le faire. Allez-y et entrez votre mot de passe administrateur. Une fois cela fait, continuons avec le reste de la vidéo. Très bien, alors parlons maintenant de la façon de démarrer un tout nouveau projet Xcode. Il doit s'agir du premier écran de bienvenue que vous voyez lorsque vous lancez Xcode. Si vous ne voyez pas cela, ne vous inquiétez pas, vous pouvez toujours accéder à Fichier Nouveau et choisir le projet. Sinon, à partir de cet écran d' accueil, vous pouvez cliquer sur Créer un nouveau projet Xcode à partir d'ici. À partir de là, vous allez choisir un modèle pour votre nouveau projet. Vous allez configurer les propriétés du projet pour cela, puis vous allez choisir un emplacement pour l'enregistrer. Commençons donc par choisir un modèle. Le plus basique à nos fins est sous iOS et application. Alors allez-y et choisissez cela et cliquez sur Suivant. Ensuite, vous allez configurer les propriétés de votre projet. Donc, si vous n'avez pas d' équipe ici, ne vous inquiétez pas. Plus tard, vous pourrez ajouter votre compte Apple ici , puis configurer l'équipe pour le projet. Une chose dont vous voudrez vous assurer, c'est de définir ici l' identifiant de votre organisation. Si vous avez une entreprise ou un site Web, vous pouvez utiliser le nom de style de domaine inverse ici, com dot, quel que soit le cas. Et vous pouvez même utiliser votre prénom et votre nom de famille ici si vous le souhaitez. Ensuite, vous indiquerez ici le nom de votre application ou le nom du produit. Donc ici, si je le mets en test, vous verrez que cet identifiant de bundle est une combinaison de l'identifiant de l'organisation et du nom du produit. Et cela forme ensemble cet identifiant unique de bundle. Cet identifiant de bundle est utilisé à différents endroits pour identifier votre application, par exemple dans l'App Store ou dans le portail de provisionnement, ou dans l'App Store Connect. C'est donc très important. Ne vous inquiétez pas, vous pouvez modifier l'identifiant de l'ensemble de votre projet ultérieurement. Je veux simplement attirer votre attention sur la façon dont il est formé et sur son utilisation. Très bien, le prochain. Dans votre interface, vous allez vous assurer que l'interface utilisateur Swift est sélectionnée. Et pour le cycle de vie, vous allez vous assurer que l'application Swift UI est sélectionnée. Et enfin, pour la langue, choisissez rapide et pour ces options, laissez-les toutes non cochées ou si elles sont cochées, décochez-les simplement. Maintenant, une brève note sur ces listes déroulantes ici. Au fil du temps, au fur et à mesure que le développement d'applications pour iOS a évolué, il y a eu quelques langages de programmation et plusieurs façons de créer des interfaces utilisateur. Le plus récent et le plus grand est l'interface utilisateur rapide et rapide. C'est donc ce que nous voulons utiliser. Allons de l'avant et touchons Next. Si vous êtes satisfait de toutes vos sélections ici, puis choisissez un endroit pour l'enregistrer. Je vais juste l' enregistrer sur mon bureau qu'il soit facile à trouver. Puisque j'ai déjà son projet là-bas, j'allais juste le remplacer. Très bien, Bienvenue dans votre tout nouveau projet Xcode. Maintenant, cela peut sembler écrasant avec tous les différents panneaux et zones, mais ce n'est pas si complexe une fois que vous savez comment il se décompose, il n'y a en fait que quatre grandes zones de Xcode. Commençons par la très, très gauche. Ici, nous avons le panneau de navigation ou la zone de navigation, comme vous pouvez le voir ici, nous avons une liste de fichiers de tous les différents fichiers de notre projet d'application. La zone du navigateur a en fait différents onglets pour naviguer dans différentes choses, ce que nous verrons dans les prochaines leçons pour l'instant, il est réglé sur le premier onglet et nous avons un liste de nos fichiers. Lorsque vous cliquez sur un fichier, il modifie ce qui est affiché dans cette grande zone principale, appelée zone de l'éditeur. Il nous permet de modifier les fichiers que nous avons choisis dans le navigateur de fichiers, vous pouvez voir qu'il s'adapte au type de fichier que vous choisissez. Choisissez un fichier rapide à points, il s'agit de fichiers de code. Si je choisis ce fichier de ressources XC, s'agit d'une bibliothèque d'images, donc ça me montre quelque chose comme ça. La zone d'édition est un endroit où modifier le fichier que je choisis ici. Le dernier onglet se trouve donc sur le côté droit et c'est ce qu'on appelle la zone de l' inspecteur. Et cela m'affiche soit informations supplémentaires supplémentaires sur ce que j'ai sélectionné la zone de l'éditeur, il me permet de configurer ou de modifier la chose que je sélectionne dans la zone de l'éditeur en fonction sur quel type d'éditeur je travaille actuellement. Par exemple, il s'agit d'un éditeur de code car je regarde un fichier swift à points. Lorsque je survole ou que je sélectionne le mot clé ici, si je suis dans cet onglet d'aide rapide, il m'affiche des informations rapides sur la raison pour laquelle sert ce code ou ce mot-clé. Le panneau de l'inspecteur comporte également quelques onglets différents ici. Par exemple, il s'agit d'un onglet Identity. Il me montre des informations sur ce fichier que j' ai sélectionné pour savoir où il se trouve et quelle application il est inclus dans et si nous construisions notre interface utilisateur. Maintenant, si je devais sélectionner un de ces éléments et accéder à cet onglet, cela me permettrait de le configurer. Pour résumer, le panneau de l' inspecteur est contextuel par rapport à ce que vous sélectionnez dans la zone de l'éditeur. Et la zone de l'éditeur est contextuelle rapport à ce que vous sélectionnez dans la zone du navigateur. Tout provient donc de ce que vous avez choisi ici, sur le côté gauche, en premier. Ensuite, en haut, nous avons la barre d'outils ici. Permettez-moi de vous expliquer ce que c'est. Il y a un bouton à gauche et à droite pour masquer et afficher le navigateur et l'inspecteur. Ceux-ci sont pratiques si vous n'avez pas beaucoup d' écrans immobiliers. La prochaine chose sur laquelle je veux attirer votre attention est au milieu ici. Il s'agit de la barre d'état. Il vous indique ce qui se passe actuellement. Que fait Xcode ? Avez-vous des erreurs ? Avez-vous des avertissements, etc. À gauche, vous disposez d'un menu déroulant pour sélectionner un simulateur. Et ce simulateur iOS est essentiellement un appareil virtuel qui apparaît à l'écran où vous pouvez exécuter votre application et la tester. Vous n'avez pas vraiment besoin d'un appareil physique. Si vous en avez un, même très récent, branchez-le et que vous souhaitez exécuter votre projet Xcode sur votre appareil réel, vous constaterez qu'il sera sélectionnable à partir d'ici une fois que vous l'aurez branché. Ensuite, à gauche de ce menu, vous verrez quelques boutons ici pour exécuter votre projet. Si vous cliquez sur ce bouton, votre projet sera exécuté dans ce simulateur. En appuyant sur le bouton d'arrêt, vous cesserez d'exécuter votre projet dans le simulateur. Et puis sur le côté droit, il y a aussi deux autres boutons. Il s'agit du bouton bibliothèque où vous allez trouver différents éléments d' interface utilisateur, différents moyens de modifier ces éléments. Extraits de code dans les ressources que vous avez ajoutées au projet, les couleurs que vous avez spécifiées pour votre projet, etc. Ce petit panneau de bibliothèque est utile pour effectuer une recherche. Et pour sélectionner et ajouter rapidement des éléments dans la zone de l'éditeur. Nous allons y arriver dans la prochaine leçon. Mais pour l'instant, c'est la zone de la bibliothèque. Cela, vous n'en utiliserez probablement pas trop au début. Il s'agit d'un bouton de révision ou de révision de code qui vous montrera si vous utilisez le contrôle source, comment vos fichiers ont été modifiés au fil du temps. Ce sont donc les quatre principaux domaines de l'interface utilisateur Xcode. Très bien, passons maintenant en revue les fichiers de votre nouveau projet. Commençons par le haut. Il s'agit du nœud racine ou du fichier de votre projet. Si vous l'avez sélectionné, la zone de l'éditeur se transforme dans cet écran de configuration pour que vous puissiez modifier certains des détails relatifs à votre projet. Par exemple, voici l'identifiant du bundle qui est modifiable. Vous pouvez configurer l'orientation de l'appareil sur quels appareils et sur quelles plates-formes peuvent s'exécuter, ce genre de choses. Si nous descendons d'un niveau, vous pouvez voir qu'il y a deux dossiers ici. Celui-ci contient tous vos fichiers de code et vos fichiers de projet. Ce produit contient la sortie. Lorsque vous créez votre application et la compilez, elle se transforme en cette application, qui est finalement le petit paquet déployable que nous envoyons dans l'App Store. Vous n'avez pas vraiment à en faire trop ici, mais c'est là qu'il est stocké. Très bien, jetons un coup d'œil à ce dossier. Il sera nommé d'après nom de votre produit, app dot swift. Et vous pouvez voir ici avec cette balise principale, c'est le point d'entrée de votre application. À ce stade, il n'y a pas trop de choses à configurer ici. Tout ce qu'il fait, c'est créer première vue que l'utilisateur voit, c' est-à-dire la vue du contenu. Et vous pouvez voir que ce nom correspond à un point de vue de contenu rapide. Jetons donc un coup d'œil à ça. Ce fichier représente la vue que l'utilisateur voit. Vous pouvez maintenant créer des vues supplémentaires, mais par défaut, vous pouvez commencer par cette vue de contenu. Et oui, c'est tout le code ici. Cela signifie que l'interface utilisateur est générée par le code. Mais il existe également un moyen visuel de personnaliser l'interface utilisateur, que vous verrez dans la leçon suivante. Passons à autre chose avec nos autres fichiers. Comme je l'ai déjà mentionné, est notre bibliothèque d'actifs. C'est ici que nous pouvons stocker les couleurs de notre application, ainsi que les icônes de l'application, ainsi que toutes les autres images que nous souhaitons ajouter à notre projet. Il suffit de le faire glisser et de le déposer ici. Et c'est notre atout image. Eh bien, pas seulement des images, mais aussi une bibliothèque d'actifs. Ensuite, nous avons une info.plist et il s'agit quelques informations de configuration supplémentaires pour le projet. Nous avons ici un aperçu du contenu, et il s'agit d'une autre bibliothèque de ressources, mais ce n'est que pour les actifs de pré-production. Donc, seules les images, le texte, les couleurs et les choses comme cela que vous testez comme l'indique l'aperçu du nom, s'il s'agit d'un atout qui arrivera finalement à l'application que vous allez pousser le App Store, vous pouvez ensuite le placer dans la bibliothèque de ressources ici. C'est donc une explication rapide de tous les fichiers de votre projet en quelques mots. Dans les prochaines leçons, nous allons approfondir chacun d'eux et vous verrez comment chacun de ces fichiers joue un rôle dans la construction de votre application. La dernière chose que je veux faire dans cette leçon est de vous donner quelques conseils rapides sur la navigation dans Xcode en termes de navigation dans vos fichiers, mais aussi en termes d'édition de code. Alors, tout d'abord, parlons de la navigation et des fichiers. Vous remarquerez ces deux flèches ici. Ils sont très pratiques car ils vont vous permettre accéder au dernier fichier que vous avez regardé. Et même si cela semble un peu trivial maintenant, lorsque vous sautez autour de l'édition et des fichiers, cela devient vraiment pratique. Au lieu de devoir resélectionner ce fichier dans le navigateur, vous pouvez simplement revenir en arrière et revenir à ce fichier précédent. Vous remarquerez également que vous pouvez avoir plusieurs onglets ici. Vous pouvez donc maintenir le contrôle enfoncé et cliquer sur un fichier et vous pouvez toujours choisir Ouvrir dans un nouvel onglet. Vous pouvez également ouvrir une nouvelle fenêtre si vous le souhaitez. Donc, comme je l' ai déjà sous forme d'onglet, cela ne va pas ouvrir un deuxième onglet pour moi. Maintenant, si vous voulez avoir des choses côte à côte, vous pouvez également le faire. Disons donc que je voulais regarder ces deux fichiers côte à côte. Je peux donc fermer ça. Ensuite, je peux aller de l'avant et ajouter un autre volet de l'éditeur sur le côté droit, sorte que je puisse diviser ma zone d'édition en deux zones d'édition. Vous pouvez voir qu' ici, je regarde la vue du contenu qui se trouve rapidement ici. Examinons l'application de test. Ce sont donc des zones indépendantes. Je voudrais peut-être me débarrasser de ma toile. Et puis je peux voir les deux SPFO comme ça. Si vous préférez qu'ils soient empilés horizontalement, vous pouvez maintenir la touche Option enfoncée. Et vous pouvez voir que cette icône change. Bien, si vous appuyez à nouveau sur ce bouton, il va ajouter une autre zone de l' éditeur à droite. Vous allez donc vous diviser en trois. Vous pouvez également maintenir la touche Option enfoncée et ajouter un éditeur en bas. Donc, c'est ce que tu fais. Vous pouvez également le faire ici, maintenir la touche Option enfoncée et le faire. Il s'agit maintenant d'un moyen rapide de lancer un fichier dans une vue d'éditeur fractionné. Disons donc que je regarde l'application de test et que je souhaite ouvrir la vue du contenu en tant que zone d'éditeur distincte. Je peux maintenir la touche Option enfoncée et cliquer sur le fichier que je veux ouvrir dans une vue d'éditeur distincte. Voici donc quelques-unes des façons dont vous pouvez travailler avec vos fichiers. Pour résumer, vous pouvez naviguer. Vous pouvez y retourner et aller de l'avant. Vous pouvez avoir différents onglets. Ensuite, vous pouvez également diviser votre zone d'édition en plusieurs instances de l'éditeur. Maintenant, je veux parler de l'édition du code , car c'est beaucoup ce que vous allez faire. Et le code semble assez court en ce moment, mais il peut s'allonger. Il est donc pratique de savoir quelques façons de faire face à cela. En haut, vous allez voir ce genre de menu de chapelure. Et vous remarquerez que c'est le nœud racine qui correspond à cela, n'est-ce pas ? Il s'agit d'un dossier ou d'un groupe, vous pouvez le voir. Et puis il s'agit de la vue du contenu, qui est le fichier que vous consultez, qui se trouve ici à l'intérieur des tests. Et ici, nous pouvons réellement cliquer dessus et vous pouvez accéder à différentes sections de votre code. Vous pouvez voir que la vue de contenu correspond à cela. Le corps correspond à ça, non ? C'est donc un excellent moyen de passer à différentes sections de votre fichier de code au cas où votre fichier de code serait assez long. Vous pouvez également ajouter différents commentaires ici qui correspondront à ce que vous voyez ici. Vous pouvez voir ici que j'ai créé ma propre documentation et elle l'ajoute ici. C'est donc un excellent moyen d'organiser votre dossier. Nous allons reparler de cela à l'avenir. Ne vous inquiétez pas si cela va un peu trop vite. Bon, maintenant on va parler de ce petit bouton ici. Vous m'avez vu utiliser cela pour ouvrir la toile, mais vous pouvez également ouvrir cette mini-carte ici. Et cette mini-carte vous montrera un aperçu de votre fichier de code. Vous pouvez faire glisser ceci pour parcourir votre code. Malheureusement, je ne peux pas le faire beaucoup ici car ce fichier de code n'est pas très long. Mais si vous aviez un fichier de code très long, il vous montrerait les grandes lignes de ce fichier de code ici. Et vous pouvez naviguer très facilement en cliquant dessus et en le faisant glisser. Vous remarquerez que même si je l'ai souligné, il va me montrer les différentes parties de mon code correspondant à ce que nous avons ici. Encore une fois, il ne s'agissait que de quelques conseils d'incendie rapides. Ne vous inquiétez pas si cela est passé trop vite, car nous utiliserons tous ces éléments ensemble dans les prochaines leçons. Il s'agit donc d'un tutoriel rapide pour vous aider à démarrer. Pas si compliqué une fois que vous savez où les choses vont bien, juste pour résumer, vous avez découvert où télécharger Xcode et comment démarrer un nouveau projet d'application. Vous apprenez à quoi sert chacun des fichiers de votre projet. Et vous apprenez les principaux domaines de Xcode, y compris le navigateur, l'éditeur, l' inspecteur et la barre d'outils. Enfin, vous apprendrez également quelques conseils rapides sur la façon de naviguer avec ce Xcode. Maintenant, ne vous inquiétez pas si c'est un peu écrasant en ce moment, vous vous sentirez comme chez vous avec Xcode, car nous l'utilisons plus souvent ensemble dans les prochaines leçons pour vous aider à vous installer, J'ai créé une feuille de triche Xcode que vous pouvez imprimer et garder à vos côtés lorsque vous apprenez à utiliser Xcode Je vous recommande fortement d'essayer de créer votre propre projet Xcode sur votre propre ordinateur juste pour vous entraîner davantage. Dans la prochaine leçon, et nous allons utiliser Xcode pour construire notre première interface utilisateur. Très bien, je vous y verrai. 4. 03 : Comment créer des interactions d'utilisateurs: Bonjour et bienvenue. Dans cette leçon, vous allez apprendre à utiliser Xcode pour créer des interfaces utilisateur avec Swift UI. Nous allons d'abord apprendre comment prévisualiser l'application afin que vous puissiez réellement voir à quoi ressemble l'interface utilisateur. Ils ne vous montrent pas comment utiliser Xcode pour construire visuellement l' interface utilisateur ou l'interface utilisateur. Jusqu'à présent, l'apprentissage a été assez passif, ce qui signifie que vous pouvez simplement vous asseoir et regarder les vidéos. Mais à partir de maintenant, nous allons passer à un apprentissage plus actif. Je veux que vous fassiez ce que je fais, que vous le répliquiez sur votre propre projet Xcode. Et je veux que vous tentiez tous les défis que vous rencontrez, c'est la meilleure façon d'apprendre. Et franchement, si vous voulez simplement vous asseoir et regarder les cours sans faire le travail. Vous ne tirez pas le meilleur parti de votre temps. Cela a été mon expérience personnelle et je pense que ce sera la même chose pour vous. Donc, si vous êtes prêt, nous allons commencer à nous salir les mains. Allons-y. Commençons par créer un tout nouveau projet Xcode. Nous allons choisir l'application iOS. Et je vais appeler ce test d'interface utilisateur. Assurez-vous simplement cycle de vie de l'interface utilisateur Swift est une application d' interface utilisateur rapide et que la langue est rapide. À part cela, vous pouvez le nommer comme vous voulez. Allons de l'avant et sauvegardons notre projet. Et comme je l'ai mentionné dans la leçon précédente, point de vue de contenu Swift représente votre vue. Mais comme vous pouvez le constater, c'est tout du code. Alors, comment voyez-vous réellement à quoi ressemble votre interface utilisateur ? Eh bien, il y a deux façons différentes. La première méthode consiste à lancer votre application dans un simulateur iOS, comme je l'ai déjà mentionné. Allons de l'avant et faisons cela d'abord. Sélectionnez-en un qui vous plaît. Je vais donc sélectionner l'iPhone 11. Et je vais appuyer sur ce bouton de construction et d'exécution. C'est maintenant la première fois que vous lancez le simulateur iOS. Ça va prendre du temps pour démarrer, tout comme pour démarrer un vrai appareil pour moi parce que j'ai déjà lancé le simulateur. Cela se passe vraiment, très rapidement. Comme vous pouvez le constater, par défaut, votre projet porte un label Hello World. Nous allons en parler dans une seconde. Mais tout d'abord, permettez-moi de vous montrer l'autre façon de prévisualiser votre application. Allons de l'avant et arrêtons notre projet. Et cela va empêcher l'application de fonctionner dans le simulateur. La deuxième méthode consiste à prévisualiser votre application dans ce canevas ici. Cela fait partie de la zone d'édition. Si vous ne voyez pas cela, vous pouvez cliquer sur ce petit bouton ici et assurer qu'il y a une coche à côté de Canvas. Et si vous regardez un fichier rapide à points, qui est une vue, vous allez pouvoir voir ce Canvas. Sinon, si vous regardez ce fichier de point d'entrée ici, vous pouvez voir qu' il n'y a pas d'aperçu. Revenons donc à la vue du contenu. Assurez-vous que nous avons notre aperçu ici et cliquez sur CV. Il va le construire et l'exécuter. Et ensuite, vous allez voir l'aperçu ici. Une fois encore. Si c'est la première fois que vous le faites, cela peut prendre un peu de temps. Utilisons les commandes de zoom vers le bas et effectuons un zoom arrière un peu pour que nous puissions tout voir. Maintenant, juste à côté de la batte, il y a quelques choses que je veux mentionner ici. s'agit simplement d'un aperçu, alors que lorsque vous le lancez dans le simulateur, vous installez réellement cette application un appareil virtuel afin pouvoir interagir avec elle et la tester. Ici, il s'agit d'un aperçu avec lequel vous ne pouvez pas interagir, mais il y a un moyen de le faire. Donc, si vous cliquez sur ce bouton ici, aperçu en direct, il passe dans un mode où c'est exactement comme le simulateur que vous avez vu auparavant. Mais c'est dans ce canevas d'aperçu. Vous pouvez donc aller de l'avant et appuyer sur Stop. Et encore une fois, il devient un aperçu normal. C'est uniquement à des fins de prévisualisation. Une autre chose intéressante dans l'utilisation ce canevas d'aperçu est que vous pouvez cliquer sur ce bouton ici et vous pouvez choisir un autre appareil. Vous pouvez choisir une mise en page, choisir le mode sombre ou le mode clair, et vous pouvez choisir un certain nombre de choses différentes. C'est la façon préférée de prévisualiser votre interface utilisateur car lorsque vous construisez votre interface utilisateur à l'aide du code de ce côté, vous pourrez voir les choses changer sur la droite ici sans avoir pour relancer l'application dans le simulateur. Très bien, nous allons maintenant nous plonger et parler de la façon dont nous allons réellement construire l'interface utilisateur. Assurez-vous donc que le point de vue du contenu est rapidement surligné et allez de l'avant et masquez le navigateur de fichiers. Maintenant, il y a un tas de code ici qui composent la vue. Mais nous allons l'approfondir plus tard lorsque vous apprendrez quelques notions de base de la programmation Swift pour l'instant, pour éviter toute confusion, je voulais juste attirer votre attention sur une chose, qui est ce code ici. Ce que j'ai mis en évidence à l'écran, c'est ce qui génère cette étiquette que vous voyez dans l'aperçu. Notez que nous avons un mot-clé texte. Nous avons le texte Helloworld que vous pouvez voir ici. Et nous avons également cet élément de rembourrage ici, qui donne le rembourrage autour du mot. Jetons un coup d'œil à ce morceau de code et décomposons ce code. En fait, je vais juste aller de l'avant et le supprimer. Comme vous pouvez le constater, Xcode va lancer toutes sortes de plaintes et d'erreurs. Mais ne vous inquiétez pas, nous allons le réparer tout de suite. Maintenant, nos éléments d'interface utilisateur doivent vivre entre ce support d'ouverture et ce support de fermeture. Et vous ne pouvez avoir qu'un seul élément d'interface utilisateur. Maintenant, cela n'a pas de sens, car nos interfaces utilisateur sont composées de plusieurs éléments. Mais c'est là que les éléments de conteneur entrent en jeu. Et je vais vous en montrer quelques-uns dans cette leçon. Pour l'instant, recréons cet élément de texte. Ce que nous écrivons, c'est ce mot-clé texte suivi d'une paire de crochets comme celui-ci, des crochets arrondis. Et puis à l'intérieur, nous avons deux guillemets. Ensuite, nous mettons le texte que nous voulons afficher. Alors, je vais juste dire bonjour. Mais vous remarquerez que ce cadre bleu est très serré contre mon texte de bonjour. Si vous vouliez ajouter le rembourrage, vous écrirez un point. Ensuite, vous n'avez qu'à taper rembourrage et à l'aide de la saisie semi-automatique, vous pouvez simplement sélectionner celui-ci juste là. Et comme ça, nous avons recréé cette étiquette avec un rembourrage. Ici, il s'agit de l'élément de texte ou de l'étiquette. Cette partie avec le rembourrage à points. C'est ce qu'on appelle un modificateur. Et vous pouvez considérer un modificateur comme une pièce jointe à un élément qui en modifie l'apparence et le comportement. Dans ce cas, ce modificateur de remplissage ajoute du rembourrage aux éléments de texte de sorte que s'il y a un élément juste à côté de celui-ci, il y aura de l'espace autour de notre élément de texte. Et il existe en fait de nombreux autres modificateurs que nous pouvons ajouter à nos éléments d' interface utilisateur. Par exemple, je peux ajouter un arrière-plan appelé arrière-plan, et je l'ajouterai simplement à la fin du remplissage. Et je vais dire que l'arrière-plan de cette étiquette doit être bleu. Vous pouvez donc voir que notre canevas d' aperçu représente très bien ce que nous écrivons ici à travers le code. S'il y a un moment où les choses sont désynchronisées, peut-être que le code que vous écrivez ici indique que l' arrière-plan doit être vert, mais vous ne le voyez pas ici. Le code est considéré comme la source de vérité car, en fin de compte, le canevas d'aperçu et même ce que vous voyez dans le panneau Inspecteur ne sont que des représentations visuelles du code. Et cela m'amène à mon prochain point, c' est-à-dire lorsque vous construisez l'interface utilisateur, vous n'avez pas besoin d'écrire du code. Il y a tellement de façons visuelles de créer le code. Effacons cet élément de texte et encore une fois, et laissez-moi vous montrer quelques-unes des façons dont vous pouvez créer visuellement l'interface utilisateur. J'ai déjà parlé du panneau de la bibliothèque. Vous pouvez donc voir ici que nous pouvons simplement sélectionner, rechercher l' élément de texte sélectionné et le faire glisser dans notre éditeur de code ici. Ensuite, nous pouvons modifier le texte de l'espace réservé, mais nous n'avons même pas besoin de le modifier ici. Si vous cliquez sur cet élément de texte et que vous allez dans le panneau de l' inspecteur, vous pouvez le modifier ici comme ça. Et ensuite, dans ce panneau d' inspecteur, vous verrez qu' il y a un tas de modificateurs que nous pouvons ajouter. Donc, pour ajouter le rembourrage, je pourrais cliquer dessus pour ajouter uniquement le rembourrage supérieur. Et vous pouvez voir que le code change. Et c'est spécifier qu'il n'y a qu'un seul rembourrage sur le dessus. Et vous pouvez le voir reflété ici. Ou je peux cliquer sur celui-ci ici et activer ou désactiver le rembourrage. Et vous pouvez voir maintenant que j'ai du rembourrage de tous les côtés. Ainsi, en plus de certains des modificateurs que vous voyez ici, il existe une zone de texte dans laquelle vous pouvez rechercher d'autres modificateurs. Je peux donc rechercher l' arrière-plan et cliquer dessus. Ensuite, sélectionnez ce fond bleu, comme vous pouvez le voir ici. Et puis je peux aussi ajouter ce rembourrage. Désormais, en plus d'utiliser les modificateurs que vous voyez ici et de cette zone de texte Ajouter un modificateur, vous pouvez également utiliser la bibliothèque pour ajouter des modificateurs. Ce premier onglet vous donne donc tous les éléments de l'interface utilisateur que vous pouvez ajouter à votre vue ici sur le deuxième onglet ou sur les modificateurs. Comme vous pouvez le voir, il y a le rembourrage, il y a celui de l'arrière-plan. Alors, comment procéder pour ajouter ces modificateurs ? Eh bien, il suffit de cliquer et de le faire glisser. Mais ici, vous devez vous assurer faire glisser jusqu'à la fin du code. Parce que si vous le faites glisser accidentellement au milieu de votre code, cela peut ne pas prendre, ou vous pourriez obtenir quelque chose comme ça. Il s'agit clairement d'une erreur. Nous allons donc défaire ça. Comme si cela ne suffisait pas, il y a deux autres façons vous montrer comment modifier visuellement les éléments de votre interface utilisateur au lieu d'écrire du code. Tout d'abord, finissons de configurer cet arrière-plan et nous allons sélectionner bleu juste là, ou peut-être le vert. Ok, ça ne change pas ça. Cela change donc cela, mais cela ne change pas ici. Je vais donc choisir la couleur, et nous allons faire du vert, des minuscules g. Très bien, pour que vous puissiez maintenir la touche Commande enfoncée sur votre clavier et cliquer sur l'élément de l'interface utilisateur depuis votre aperçu ici. Et puis il y a un certain nombre de choses que vous pouvez faire avec cet élément, y compris celui-ci, montrer Swift UI inspector. Et encore une fois, vous obtenez cet Add Modificateur, TextField, ce que vous pouvez rechercher des modificateurs à ajouter. Je vais donc en ajouter un qui s'appelle Blur. Vous pouvez voir qu'il brouille la couleur verte. Et vous pouvez voir que maintenant mon arrière-plan est vert flou. Vous pouvez maintenant faire la même chose du côté de l'éditeur de code. Vous pouvez donc maintenir la commande enfoncée et cliquer sur l'élément de texte et vous obtenez ce menu. Vous pouvez à nouveau cliquer sur Afficher l'inspecteur d'interface utilisateur Swift. Et de là, vous pouvez voir que ce menu ressemble à l'inspecteur ici. Et nous pouvons également ajouter des modificateurs. Pour illustrer mon point de vue, je vous ai montré de nombreuses façons de modifier visuellement votre interface utilisateur. Vous n'avez pas besoin d' écrire le code. Mais au fil du temps, comme vous le faites de manière visuelle, vous voyez le code généré maintes et maintes fois. Vous arriverez à un point où c'est si familier, ce sera plus rapide pour vous de le taper plutôt que de cliquer partout. C'est donc un moyen très pratique d' apprendre le code de l'interface utilisateur. N'est-ce pas plutôt cool ? Xcode a parcouru beaucoup de chemin dans le passé. Avant, il était très difficile d'utiliser le constructeur d'interface visuelle avec Xcode, mais l'interface utilisateur Swift a vraiment changé les choses pour le mieux. Maintenant, dans cette leçon, vous allez apprendre à utiliser l'élément de texte et modifier son apparence et son comportement à l'aide de modificateurs. En plus de cela, vous apprenez également que l'interface utilisateur est réellement générée à partir du code Swift. Cependant, Xcode propose une multitude de façons de créer visuellement votre interface utilisateur. Et lorsque vous construisez visuellement votre interface utilisateur via le Canvas précédent ou le panneau de l'inspecteur, comme nous l'avons démontré, le code rapide l'éditeur de code est automatiquement mis à jour pour refléter ces modifications. C'est donc un excellent moyen d'apprendre le code Swift. La prochaine fois que nous nous asseyons ensemble, je vous présenterai des vues et des conteneurs supplémentaires que vous pourrez utiliser pour créer interfaces utilisateur plus complexes. Très bien, je vous y verrai. 5. 04 : vues de SwiftUI et contenants: Bonjour et bienvenue. Dans cette leçon, vous allez apprendre à utiliser différents éléments d'interface utilisateur et conteneurs. Et puis à la fin de la leçon, je vais vous montrer quelques interfaces utilisateur que j' aimerais que vous essayiez de construire vous-même comme pratique. N'oubliez pas que vous allez tirer beaucoup plus parti de ce cours si vous vous êtes arrêté tout au long la leçon et que vous essayez de reproduire ce que j'ai fait sur votre propre projet Xcode. C'est assez bien de parler. Passons à la partie amusante. Très bien, c'est vrai, vous avez donc appris l'élément de texte. Maintenant, je veux vous montrer l'élément image. Nous allons donc aller de l'avant et effacer cela. Et pourquoi ne pas utiliser la bibliothèque pour rechercher l'élément image ? Allons donc faire glisser et déposer l'image ici. Maintenant, le problème est que nous n'avons aucune image à afficher. Mais avant de vous dire comment spécifier cela, je viens de remarquer qu'il est en quelque sorte dans le même format que l'élément de texte, n'est-ce pas ? Il y a le mot-clé image ici, puis il y a un ensemble de crochets arrondis. Et au milieu, nous allons mettre le nom de notre image. Maintenant, ce nom d'image correspond à n'importe quel élément graphique que nous avons placé dans notre bibliothèque d'actifs. Donc, si nous ouvrons notre navigateur de fichiers et nous allons dans notre bibliothèque de ressources, vous pouvez voir que tout est vide. Nous n'avons rien ici. Allons de l'avant et mettons une image ici. Si vous accédez aux ressources de la leçon, vous verrez un fichier zip appelé Ressources du logo. Et allons-y et décompressons-les. Et puis, à l'intérieur, vous trouverez une image locale. Vous allez trouver trois dossiers en fait. Et ils sont nommés de la même manière, sauf avec un apt à x, puis ajoutez trois x. Et c'est littéralement deux fois plus gros que le premier. Et celle-ci est trois fois plus grosse que la première. Et la raison pour laquelle ils sont disponibles en différentes tailles est qu' il existe des appareils iOS avec des résolutions d'écran différentes. Ainsi, en ajoutant les trois tailles, la plateforme choisira la bonne taille à utiliser pour la résolution d'écran. Il est affiché sur. vous suffit donc de saisir les trois et de les faire glisser dans la bibliothèque de ressources comme ceci. Il va être assez intelligent pour savoir que ces trois personnes appartiennent au même groupe. Et il va lui donner un nom. Vous pouvez toujours le renommer pour pouvoir cliquer dessus et le nommer comme vous le souhaitez. Mais ce nom ici est ce que vous allez faire référence dans l'élément image. Alors allez-y et entrez des guillemets, nom de cette ressource d'image, et vous devriez le voir apparaître ici. Oh, en fait, prévisualisation automatique, mise à jour, pause, allez-y et appuyez sur Resume. Très bien, là-dedans, nous voyons notre image. Désormais, par défaut, il affiche l'image à la taille de la ressource graphique que vous avez importée. Toutefois, si vous souhaitez le redimensionner, le mettre l'échelle vers le haut ou vers le bas, vous pouvez ajouter un modificateur appelé redimensionnable. Lorsque vous atteindrez cela, il pourra s'étirer. Quand il s'étire si vous voulez maintenir le rapport hauteur/largeur, car vous pouvez voir ici tout est étiré et il ne ressemble pas à l'image d'origine. Vous pouvez ajouter un autre modificateur appelé rapport hauteur/largeur. Et n'oubliez pas, même si je tape ces modificateurs via le code ici, vous pouvez toujours les ajouter via ce menu. Vous pouvez le trouver juste là. Ensuite, le modificateur de rapport d'aspect vous permet sélectionner différentes manières d'évoluer. Donc, si je dis « apte », il va le mettre à l'échelle pour qu'il rentre dans les limites. Mais avec le maintien du rapport d' aspect. Et pendant que nous ajoutons ces modificateurs, il serait bon de mentionner qu'une bonne pratique consiste à appuyer sur Entrée sur vos modificateurs ici afin qu'ils soient alignés. Parce que certains éléments peuvent avoir une liste de modificateurs et qu'en les plaçant tous sur une nouvelle ligne, ils mettent automatiquement en retrait sous l'interface utilisateur les éléments auxquels ils se rapportent et il devient très facile de lire. Très bien, vous connaissez maintenant les éléments de texte et les éléments d'image. Comment allons-nous combiner les deux ? Comment faire pour avoir plus d'un élément pour notre interface utilisateur ? C'est ici que les éléments de conteneur entrent en jeu. Allons donc dans notre bibliothèque et recherchons v stack. C'est celui auquel je fais allusion, pile verticale. Et vous pouvez aller de l'avant et cliquer dessus et le faire glisser ici. Maintenant, vous allez avoir des erreurs parce que cela compte comme un élément. Maintenant, il semble que Xcode n'ait pas rattrapé son retard, mais ce ne serait pas une interface utilisateur valide. Essentiellement, nous avons deux éléments ici. Ce que nous voulons faire, c'est que nous voulons prendre notre image et je vais couper ce code et je vais le coller entre ce support d'ouverture et le support fermeture de la pile verticale. À l'intérieur de la pile verticale, vous pouvez placer jusqu'à 10 éléments et les empiler verticalement les uns sur les autres. Donc, je vais aussi le mettre ici. Un élément de texte comme ça. Et vous pouvez voir que maintenant je suis capable d'avoir deux éléments et qu'ils sont automatiquement empilés l'un sur l'autre. En plus de la pile verticale, il existe également une pile horizontale. Et au lieu de la pile, c'est la pile H. Et si vous changez cela par un dos H, vous verrez qu'il est maintenant empilé horizontalement l'un à côté de l'autre. Et il y a aussi une pile appelée Zed Stack, je suis au Canada, ou une pile si vous préférez. Et cela place les choses les unes sur les autres les éléments en haut étant les plus éloignés à l'arrière. Vous pouvez donc voir que notre élément de texte Hello se trouve au-dessus de l'image. Maintenant, ce qui est cool, c'est que vous pouvez imbriquer ces différents éléments de conteneur. Donc je peux avoir, disons, je veux que mon image, logo soient l' arrière-plan et, en haut, je veux devoir texter des éléments côte à côte. Je peux donc utiliser une pile H ici. Et plutôt que de le taper ou de le faire glisser depuis la bibliothèque, je vais vous montrer une autre façon d' intégrer vos éléments dans les piles. Si vous maintenez la touche Commande enfoncée et que vous cliquez sur l'élément, vous avez déjà vu ce menu. Vous pouvez l'intégrer dans la pile H et cela va simplement créer cela pour vous. Et c'est probablement la façon la plus simple de le faire. Donc, dans cette pile H, je vais ajouter Hello World. Vous pouvez voir ici que maintenant mon image se trouve derrière cette pile H avec deux éléments de texte. Maintenant, il semble assez intuitif d'utiliser ces piles, n'est-ce pas ? Mais comment arrangez-vous les éléments de cette taxe ? Eh bien, il y a quelques options. Donc, si je clique sur cette pile ici, jetons un coup d'œil à la pile. Je vais donc aller de l'avant et cliquer dessus. Celui-ci a en fait un alignement. Ce cerf ne le fait pas parce qu' il met tout en place l'un sur l'autre. Mais pour la pile H et la pile, il y a un alignement. Vous pouvez donc choisir de tout aligner par leur milieu, tout aligner sur leurs lignes de base ou de tout aligner par le haut. Et vous pouvez également ajouter un espacement. Vous pouvez voir ici que j' ajoute un espacement de trois. Vous pouvez voir comment il modifie le code et y ajoute un espacement. Maintenant, c'est trop peu pour que vous remarquiez que laissez-moi ajouter 20. Vous pouvez voir qu' il y a maintenant un écart. Très bien, vous avez donc appris que vous pouvez aligner les éléments à l'intérieur d'une pile et que vous pouvez également ajouter un espacement entre les éléments d'une pile. Mais je veux vous montrer une autre façon d'organiser les éléments à l'intérieur d'une pile. Pour ce faire, je vais changer cette pile en pile V. Nous allons donc obtenir quelque chose comme ça. Disons maintenant que je voulais que ce logo soit en haut et que je voulais que mes deux étiquettes de texte soient en bas. Une façon de le faire est en fait d'ajouter de l'espacement dans ma pile v, non ? Disons donc que j'en ajoute 100. Vous pouvez voir qu' ils sont écartés. Si je peux en ajouter plus, 300. Mais il s'agit d'une valeur fixe. Et comme vous le savez, il existe une tonne de tailles et de résolutions d'écran différentes. Ce n'est donc pas une bonne façon de s'en approcher. Laissez-moi me débarrasser de cette valeur d'espacement. Au lieu de cela, nous pouvons utiliser un élément appelé entretoise. Permettez-moi donc de vous montrer comment cela fonctionne. Entre l'élément d'image et la pile H contenant les deux éléments de texte. Je vais insérer un élément d'espacement. Et le nom de cet élément est entretoise, suivi de deux crochets arrondis. Ce que fait cet élément d'espacement, c'est prendre tout l'espace disponible. Il se dilate et repousse tout. Vous pouvez voir que j' ai l'image ici. J'ai l'entretoise qui prend autant de place que possible. Et puis ma pile H contenant les deux éléments. intéressant avec l'élément d' espacement, cependant, est qu'il joue bien avec d'autres éléments d'espacement dans la même pile. Donc, si je monte ici au-dessus du logo et que j'ajoute un autre élément d'espacement, ce qui finit par se produire, c'est que les deux éléments d'espacement occupent tous les deux un espace égal. Vous pouvez voir au-dessus et au-dessous du logo de la guerre, il y a une quantité égale d'espace. Si j'ajoute un troisième élément d'espacement sous ma pile H, que pensez-vous qu'il va se passer ? Eh bien, les trois espaces où les éléments vont partager les espaces blancs disponibles. Ainsi, les premiers éléments d'espacement ici, le second ici, et le troisième est là, et tout cela a un espace égal. C'est un excellent moyen d' espacer les choses de façon égale. En fait, je pourrais faire la même chose avec ma pile H au lieu de spécifier l'espacement ici. Et remarquez cette fois que je vais simplement supprimer cet espacement 20 là. Au lieu de le changer dans l'inspecteur. Je peux y ajouter une entretoise. Je vais copier ça. Et vous pouvez voir ici que ça prend tout l'espace disponible, poussant mes deux étiquettes sur le côté. Mais si j'en ajoute un ici du bon côté, il va le pousser au milieu. Et puis, si j'en ajoute un au milieu, ça va rendre tout cela équidistant. Génial. Vous avez appris à utiliser l'image et l'espace pour les éléments en plus de l'élément de texte. Vous apprendrez également à utiliser les conteneurs Stack, HCI Stack et Zed Stack. La prochaine fois que nous nous asseyons ensemble, nous construirons l'interface utilisateur du jeu. 6. 05 : Créer le jeu de cartes de guerre: Bonjour et bienvenue. Dans cette leçon, nous allons construire l'interface utilisateur du jeu de cartes de guerre. En fait, je vais vous amener à le construire vous-même d'abord parce que je pense que vous pouvez le faire. Allez. Je vais vous faire commencer. Vous essayez honnêtement, puis nous examinerons la solution ensemble. Deal. Allez, tu as eu ça, faisons-le. Très bien, nous allons commencer par un projet Xcode, lancer Xcode et créer un tout nouveau projet Xcode. Nous allons choisir une application sous iOS. Et tu peux nommer ça comme tu veux. Mais je vais appeler ce défi de guerre parce que c'est ce que c'est et c' un défi que je suis sûr que vous pouvez faire. Interfaces Le cycle de vie de l'interface utilisateur Swift est une application d'interface utilisateur rapide et la langue est rapide. Laissez le reste non coché, et sauvegardons cela quelque part. Je vais donc juste l' enregistrer sur mon bureau. Très bien, voici notre tout nouveau projet Xcode. Allons d' abord à la bibliothèque de ressources car nous allons ajouter tous les éléments d'image dont nous avons besoin pour cette application. Si vous allez dans le dossier Ressources du cours sous cette leçon, vous trouverez un fichier zip contenant toutes les ressources d'image. Alors allez-y et décompressez ça. Ensuite, glissons tous ces éléments dans la bibliothèque de ressources. Vous devriez maintenant récupérer la carte, l'arrière-plan de l'application entière. Et puis vous devriez avoir des cartes deux à 14 et non, vous ne manquez pas le panier numéro un. L'as est carbone-14. Et la raison pour laquelle je les ai numérotés de cette façon, c'est parce que nous allons utiliser ce numéro à la fin des noms de cartes ici pour représenter la valeur. Et nous allons comparer cette valeur pour voir quelle carte l'emporte sur l'autre. Ensuite, nous aurons une image du bouton Deal et une image de logo. Maintenant, au cas où je ne l'ai pas mentionné auparavant, nous avons trois tailles différentes pour chaque image car il existe des résolutions d'écran différentes pour les appareils iOS. Donc, tous les appareils les plus récents ont un écran super Retina et ils utilisent donc ceux a3x et je ne pense pas qu'ils fabriquent des appareils qui utilisent la seule image. Mais cette application date d'il y a longtemps et nous avons reconstruit à de nombreux moments différents, donc nous avons toujours les trois. Permettez-moi maintenant de vous montrer l'interface utilisateur terminée. Et c'est le résultat final que vous allez essayer de réaliser vous-même. C'est à ça que ça ressemble. Ne faites pas trop attention à l'espacement tant que vous avez généralement tout au bon endroit. Je pense que c'est génial. Une autre chose à mentionner est qu'il s'agit d'un bouton, mais comme nous n'avons pas encore parcouru les boutons, hésitez pas à utiliser un élément d' image pour cela. Et ce sera parfait lorsque nous passerons à l'utilisation de boutons. Et je peux vous montrer comment changer cet élément d'image par un bouton. Une autre chose que je dois vous mentionner est le concept de zone de sécurité. Maintenant, la zone de sécurité est cette région qui commence ici juste sous leur encoche, et elle se termine ici juste au-dessus de ce petit guidon. Et dans certains cas, il y a aussi des marges à gauche et à droite. Et tout ce qui se trouve dans cette région se trouve dans la zone de sécurité. Maintenant, cette zone est garantie de ne pas être obstruée. N'importe quoi en dehors de la zone de sécurité. Ainsi, tout ce qui se trouve dans ce coin ou ce coin peut être obstrué comme vous pouvez le voir par des icônes ou au moment. Et évidemment, il y a ce guidon ici qui pourrait aussi bloquer les choses. Si vous voulez un arrière-plan plein écran, comme cet arrière-plan vert que nous avons ici, vous devrez ignorer la zone de sécurité car, par défaut, lorsque vous ajoutez des éléments à la vue, il va essayer de rester dans la zone de sécurité. Il y a donc un modificateur que je ne vous ai pas encore montré. C'est ce qu'on appelle ignorer la zone de sécurité que vous pouvez appliquer à une image qui lui permettra étendre au-delà de la zone de sécurité qu'elle atteigne les bords. Et c'est probablement la seule autre information manquante dont vous avez besoin. plus de cela, vous avez appris les piles, vous avez appris les éléments d'image et de texte, tout ce dont vous pourriez avoir besoin pour créer cette interface utilisateur. Alors allez-y, mettez cette vidéo en pause et essayez-la vous-même. Et ensuite, nous reviendrons ensemble et je vous expliquerai comment construire cela. Bon retour. Comment avez-vous pu créer cette interface utilisateur ? Félicitations, si vous êtes capable de construire ceci ou quelque chose qui ressemble à celui-ci. Et si vous êtes resté coincé ou que vous n' étiez pas en mesure de vous inquiéter parce que nous allons le faire maintenant. Et souvent, je trouve que si vous l'essayez vous-même et que vous êtes coincé et que plus tard, trouvez la solution. Ce sont souvent les meilleures expériences d'apprentissage. Très bien, voyons ça ensemble maintenant. Maintenant, avant de plonger et de commencer à construire cette interface utilisateur, je veux prendre un moment pour décomposer en quelque sorte les éléments que je peux voir ici. Donc, tout d'abord, je vois que nous aurons besoin d'une pile ZED parce que. Nous avons une image derrière tous ces éléments. De sorte que cette pile va nous permettre de positionner les éléments les uns sur les autres. Ensuite, nous avons une pile V où les éléments sont empilés verticalement les uns sur les autres. Vous pouvez donc voir une pile V qui traverse toute cette interface utilisateur de haut en bas. Maintenant, certains éléments de cette pile V seront contenus dans une pile H, comme ces deux cartes côte à côte, par exemple. Et cet élément ici va être une pile H de piles TUV. Il s'agit donc d'une pile V contenant les deux éléments de texte. Il s'agit d'une pile V contenant les deux éléments , puis vous les encapsulez dans une pile H. C'est donc la panne que je vois. Et maintenant, nous allons passer rapidement dans notre vue de contenu, et nous allons le construire. Très bien, donc ici, je regarde le contenu Vue.js Swift. La première chose que je vais faire est de changer ce simulateur en iPhone 11. Et nous allons appuyer sur Resume. Et dans quelques secondes, temps peut être plus long, vous verrez un aperçu ici. Parfait. Modifions maintenant cet élément de texte par défaut. Débarrasse-toi de ça. Mettons une pile z là, ouvrons une paire de crochets bouclés. Maintenant, ce qui se cache derrière tous ces éléments, c'est une image. Et l'image que nous avons est appelée arrière-plan. Remarquez qu'il n'atteint pas jusqu'au sommet. Maintenant, il chevauche un peu cette zone de sécurité. J'ai dit que la zone de sécurité était sous le cran juste ici. Vous voyez donc qu'il déborde, mais ça ne va pas vraiment jusqu'ici. Nous pouvons donc ajouter un modificateur appelé ignorer la zone de sécurité. Lorsque vous faites cela, il va tout couvrir. Donc, d'accord. Alors, que va-t-il y avoir en plus de ce contexte ? Comme je l'ai déjà dit, nous allons avoir une pile verticale contenant tous ces éléments. Le premier est le logo. Ensuite, nous aurons une pile H avec deux cartes, puis un élément image représentant le bouton Deal. Ensuite, nous aurons les piles verticales de score dans une pile horizontale. Permettez-moi donc de taper ça pour que cela soit un peu plus logique. Commençons par le logo en haut. Nous allons avoir une image et le nom de notre actif d'image est le logo. Vous pouvez donc voir qu'il apparaît juste à la bonne taille. Et c'est parce que notre ressource image est de cette taille. Bon, maintenant mettons une pile H ici. Et à l'intérieur, nous allons mettre deux autres éléments d'image. Nous allons mettre la carte, allons aussi mettre la carte. Et puis la carte trois. Nous avons donc deux cartes dans une pile H. Ensuite, nous allons mettre un autre élément d'image. Et ça va être le bouton Deal. Et maintenant, les étiquettes de partition. Il va donc s'agir d'une pile H. Mais à l'intérieur de la pile, nous avons en fait deux V. Merci. Chaque VSAT contient deux éléments de texte. Nous allons donc avoir Player et nous aurons le score réel. Et puis pour celui-là, nous allons avoir un processeur. Et nous allons avoir le score réel, le processeur. Nous avons donc en gros tous nos éléments disposés. Maintenant, ajoutons-leur un peu d'espacement. ce faire, nous pouvons utiliser des entretoises. Commençons donc par ajouter une entretoise juste au-dessus la pile H des deux cartes sous l'image du logo. Je vais donc mettre un élément d' espacement juste là. Et ce que vous avez appris sur les éléments d' espacement, n'est-ce pas ? Il occupe tout l'espace disponible. Toutefois, si vous avez plusieurs éléments d'espacement dans le même conteneur, il va diviser uniformément cet espace entre les deux entretoises. Je vais donc mettre une autre entretoise juste en dessous des cartes. Vous pouvez donc maintenant voir qu'il y a deux espaces égaux. Je vais mettre une autre entretoise sous le bouton Deal ou l'image pour l'instant. Ensuite, je vais mettre une entretoise sous les étiquettes de partition. Vous devez donc vous assurer ne pas le mettre au mauvais endroit ici. Nous voulons le mettre sous cette pile H. Et si vous cliquez sur ce crochet de fin, vous pouvez voir que Xcode allume brièvement les crochets de départ afin que vous puissiez vérifier que c'est là que vous le souhaitez. Très bien, et la dernière chose à faire est de placer un élément d'espacement au-dessus du logo de la pensée. C'est donc juste ici. Maintenant, d'un point de vue vertical, tout est bien espacé. Pour cette pile H avec les deux cartes. Pourquoi ne pas y mettre des espaces ? Commençons donc par mettre une entretoise entre les deux cartes. Et puis l'espace avant toutes les cartes et l' entretoise après les cartes. Nous allons faire la même chose avec les étiquettes de texte ici. Dans cette pile H. Nous allons mettre une entretoise entre la taxe des deux V. Ensuite, nous allons mettre une entretoise avant l'informatique. Et l'espace ou après. Très bien, et maintenant, la dernière chose à faire est de changer les couleurs de police de ces éléments de texte. Et aussi pour modifier la pondération de leurs polices et leur taille de police. Et peut-être ajouter un peu d'espace entre la partition et l'étiquette. Bon, alors cliquons sur cet élément de texte et regardons ce que nous pourrions faire. Par conséquent, si vous recherchez la police dans le panneau de l' inspecteur, vous pouvez choisir l'une de ces tailles de police prédéfinies. Pour celui-ci, choisissons un titre. Et vous pouvez le voir. Il devient un peu plus audacieux là-bas. Changeons ça en blanc. Nous allons faire la même chose pour l'étiquette du processeur. Nous allons le changer en gros titres. Nous allons changer la couleur en blanc. Ensuite, pour le score réel, nous allons changer la police , disons sous-titre. Et nous allons également changer la couleur en blanc. Et pour cette étiquette de partition, nous allons la changer en sous-titre, et nous allons également la changer en blanc. Très bien, et si nous voulions le faire réellement, je pense que dans l'interface utilisateur d'origine, je l' avais comme grand titre. Je vais donc changer ça. Je vais donc changer le 0 de sous-titre en gros titre. Maintenant, afin d'ajouter un peu de rembourrage entre l'étiquette et la partition ici. Ce que vous pouvez faire, c'est choisir l'étiquette. Commençons par le joueur ici. Et cliquons sur ce rembourrage inférieur. Activez donc cela. Et ensuite, vous pouvez changer ce numéro par, disons 20. Vous pouvez voir cette augmentation. Et ça semble un peu trop. Alors peut-être que nous allons rester avec 10. Nous ferons la même chose avec le processeur ici, puis cliquez sur le rembourrage inférieur, puis nous ajouterons 10. Vous pouvez voir le code correspondant ici. Il ajoute du rembourrage, mais il ne spécifie que le bord inférieur et à 10 points. Et c'est une bonne pratique chaque fois que vous modifiez quelque chose, visuellement, en ajoutant un modificateur ou en changeant quelque chose dans le panneau de l'inspecteur ici, c'est une bonne pratique de jeter un coup d'œil à ce qui a changé sur le côté code, juste pour que vous puissiez vous souvenir au fil du temps, plus vous le voyez, plus vous vous souvenez que, hé, si je voulais la changer en police de style titre, je devrais juste ajouter un modificateur de police de points et passer dans une option de titre. Même chose pour la couleur de premier plan pour cet élément de texte, premier plan, couleur point blanc. Vous n'avez pas besoin d'essayer de le mémoriser, mais faites simplement attention à cela. Et au fil du temps, vous allez simplement vous en souvenir. Et le taper finira être plus rapide que de devoir cliquer visuellement et configurer les choses via le panneau de l'inspecteur ou le canevas d'aperçu. Très bien, dernière chose à faire, assurez-vous sauvegarder le projet et c'est terminé. Dans cette leçon, vous avez construit l'interface utilisateur du jeu de cartes de guerre, mais pour répondre à mais pour répondre à l'interaction des utilisateurs et modifier par programmation les images de cartes, nous allons devoir apprendre une programmation rapide. Ainsi, dans les quatre prochaines leçons, vous allez être initié aux bases du codage avec Swift. Maintenant, si c'est la première fois que vous apprenez à coder, prenez-le lentement et n' essayez pas de mémoriser les mots-clés. Et après cela, nous reviendrons sur cette interface utilisateur de jeu de cartes de guerre et lui donner vie avec du code. Très bien, je vous y verrai. 7. 06 : Constantes de variables et types de données: Bonjour et bienvenue. Dans cette leçon et dans les trois prochains, vous allez apprendre les bases du langage de programmation Swift. Voici maintenant les compétences que vous devrez posséder pour terminer le jeu de cartes de guerre, ainsi que pour créer l' application de fonctionnalités que nous allons faire ensemble. Maintenant, si vous n'avez jamais codé auparavant, je sais que cela peut sembler un peu intimidant, mais je veux vraiment que vous vous en tiriez et que vous fassiez vraiment attention. En fait, ouvrez Xcode sur votre propre machine et tapez exactement ce que je vous montre. Cela va vraiment aider à renforcer la structure de la langue et de tous les mots-clés. Il n'est pas nécessaire de mémoriser quoi que ce soit. Je vous garantis qu'à la fin de ce module, vous écrirez votre propre code Swift. Très bien, plongeons dedans. Je veux commencer par examiner le cycle de vie de View Update d'une application simple et vous montrer où le code Swift joue un rôle dans chaque partie du cycle de vie. Commençons par ce que vous avez déjà appris dans les leçons précédentes que l' interface utilisateur est générée à partir du code Swift. Nous appellerons cela votre code de vue. Il génère une interface utilisateur que votre utilisateur peut voir. Désormais, généralement avec une application, nous disposons d'une sorte de données que nous voulons récupérer et afficher. Par exemple, une application de nouvelles. Nous voudrions récupérer ces données à partir d'une source de données, puis les récupérer dans notre application et les afficher dans notre interface utilisateur. Vous pouvez utiliser le code Swift pour cela. Le code Swift peut aller chercher les données, puis traiter dans un format que notre application peut comprendre. Ensuite, en utilisant le code Swift, nous pouvons également lier ces données à notre code de vue afin que lorsque l'interface utilisateur est rendue à partir de ce code de vue, ces données puissent être affichées à l'utilisateur. De plus, lorsque l' utilisateur interagit avec l'interface utilisateur, exemple en appuyant sur un bouton, nous pouvons utiliser le code Swift pour capturer cet événement et y répondre. Maintenant, en fonction de ce que l'utilisateur a utilisé, nous pouvons utiliser du code Swift pour modifier nos données. Lorsque ce changement de données se produit parce que nous avons lié ces données à notre code de vue. Ces données sont automatiquement détectées et la nouvelle interface utilisateur est restituée avec les données mises à jour afin que l'utilisateur puisse voir ce qui a changé. Maintenant, ce cycle est essentiellement tout ce que l'application fait encore et encore. Et nous allons explorer plus en détail cette application, voir et mettre à jour le cycle de vie dans les prochaines leçons. Mais pour l'instant, je veux juste que vous compreniez que le code Swift a un rôle à jouer dans chaque partie de ce cycle de vie. des dernières leçons, vous avez déjà vu le code de création de l'interface utilisateur. Vous savez donc à quoi ressemble ce code de vue. Passons notre attention sur la partie données où nous pouvons voir quel code Swift est utilisé pour suivre les données. De plus, à quoi cela ressemble-t-il même dans notre application ? Afin d'essayer une partie du code Swift et de trouver la réponse à notre question, utilisons un terrain de jeu Xcode. Un terrain de jeu est un moyen léger tester une partie de notre code sans s'engager dans un projet d'application à part entière que nous pouvons réaliser ici. Pensez-y dans le terrain de jeu Xcode comme votre doodle pad, mais pour le code, commencez simplement un nouveau. Allez dans Fichier, cliquez sur Nouveau, puis cliquez sur Playground. Nous allons choisir une aire de jeux vierge. Et donnons un nom. Et gardons ça quelque part. Nous allons fermer cet onglet du navigateur en cliquant sur ce bouton car nous n'en avons pas besoin. En bas, dans le coin inférieur gauche, vous remarquerez que nous avons un bouton appelé qui montre la zone de bogue. Allez-y et cliquez dessus pour révéler ce plateau. Cette zone de console de débogueur est endroit où nous allons générer beaucoup de données. Alors allumez-le, assurez-vous de voir cette petite zone en bas. Et puis ce bouton, je veux que vous cliquiez dessus tout de suite, il va exécuter le terrain de jeu. Il va exécuter toutes les lignes de code dans la zone de l'éditeur ici. Notez cependant que vous avez également ce petit bouton bleu Run le long des numéros de ligne. Cela vous permet de sélectionner la ligne à laquelle vous souhaitez exécuter le code. Donc, si je survole à la ligne trois et que je clique sur le bouton ici, il va exécuter les lignes 123 par opposition à ce bouton ici, qui exécute tout. La première fois que vous gérez ce terrain de jeu, cela peut prendre un certain temps. Vous montrez le spinner jusqu'à une minute. Je veux que vous le fassiez et que vous le laissiez fonctionner jusqu'à ce qu'il soit prêt à continuer. Et cela va nous permettre d' exécuter du code dans la partie suivante. Pour l'instant, allons simplement supprimer ces lignes de code afin que nous puissions commencer à nouveau. Très bien, maintenant que votre configuration, revenons à notre question initiale. quoi ressemblent les données et comment utilisons-nous le code Swift pour les suivre ? Examinons quelques types de données différents. Commençons d'abord par un type de données commun, un morceau de texte. Dans Swift, vous entourez les textes de guillemets comme celui-ci. Et c'est ce qu'on appelle une chaîne de données. Ajoutons une note pour nous-mêmes ici avec deux barres obliques. Lorsque vous faites cela, il s'agit d'un commentaire, et c'est un moyen pour nous de laisser une note ou un petit morceau de documentation pour nous rappeler à nous-mêmes ou à d'autres personnes qui pourraient consulter notre code, ce que fait ce code. Et lorsque Xcode voit ces deux barres obliques, il n' exécutera pas cette ligne. Jetons maintenant un coup d'œil à un autre type de données, les entiers. Donc, quelque chose qui ressemble à ça. Dans Swift, c'est ce qu'on appelle int, abréviation de entier. Et qu'en est-il des nombres décimaux ? Eh bien, oui, c'est aussi un type de données que Swift peut reconnaître et gérer. Chacun d'entre eux. Ils sont connus comme un double. Swift peut également gérer les valeurs booléennes. Donc, des choses comme vraies et fausses. Dans Swift, c'est ce que l'on appelle bool. Maintenant string, int, double et bool. Tous ces types de données sont appelés types de données et c'est ainsi que Swift classe les données. Désormais, ce ne sont pas tous les types de données disponibles, mais ce sont de loin les types de données les plus courants que vous utiliserez, moins au début. Et c'est un excellent point de départ pour nous. Très bien, examinons maintenant la création et le suivi des données. Dans Swift, il existe de nombreuses façons de suivre les données, mais deux d'entre elles sont des méthodes basiques utilisation de variables et de constantes. Revenons à notre terrain de jeu Xcode et jetons un coup d'œil à un exemple. Commençons par nos données Hello String ici. Maintenant, ces données en soi vont nous être inutiles , à moins que nous ayons un moyen de les référencer et de les suivre. Et nous pourrions le faire avec une variable. Voyons donc comment déclarer une variable pour suivre cette donnée bonjour. Nous utilisons donc le mot-clé var et c'est pour déclarer une nouvelle variable. Ensuite, nous saisissons le nom de la variable. Ce nom est celui que nous allons utiliser pour référencer ces données et les rappeler. Je vais donc appeler ce MyVar, puis nous le suivons avec deux points. Ensuite, nous mettons le type de données que cette variable va suivre. Puisque les données que nous voulons référencer sont des données de chaîne, je vais mettre une chaîne ici. Ensuite, nous sommes généralement dans la même ligne que celle que nous déclarons la variable, nous affectons les données à la variable à suivre. Et nous pouvons le faire en utilisant l'opérateur d'affectation, qui n'est qu'un symbole égal. Ensuite, sur le côté droit, nous mettons les données que nous voulons attribuer à cette variable. Je vais prendre ça et le déplacer ici. Donc, ce que dit cette ligne de code, c'est que nous déclarons une nouvelle variable appelée MyVar. Nous disons qu'il garde le suivi des données de type chaîne. Ensuite, nous attribuons ces données de chaîne Hello à cette variable. C'est un peu comme si nous attachions une étiquette à cette donnée appelée MyVar. Maintenant, chaque fois que je veux référencer ces données, il suffit de le référencer par le nom de la variable. Essayons donc ça. Nous pouvons utiliser une commande spéciale qui va envoyer les données dans la zone de console ci-dessous dans le terrain de jeu. Et cette commande est simplement imprimée suivie de deux crochets arrondis. Et entre ces crochets, vous placez la variable ou les données que vous souhaitez générer. Je vais donc le faire. Et puis, ici, je vais arrêter mon terrain de jeu et réexécuter tout le code qu'il contient. Et puis, comme vous pouvez le voir en bas et il dit bonjour, que le contenu de MyVar, c'est exactement ce à quoi nous nous attendions. Notez que lorsque je fais référence à ma variable, je n'ai plus besoin d'utiliser le mot-clé var. Il s'agissait uniquement de déclarer la variable. Et une fois que j'ai déclaré ma variable, je peux simplement la référencer par sa fin de nom. Je peux également y réaffecter de nouvelles données. Je peux l'utiliser encore et encore. Je n'ai pas à le déclarer à nouveau. Par exemple, après que je l'ai déclaré bonjour attribué, je peux me retourner et lui attribuer autre chose. Assignons cette chaîne de données appelée world à MyVar. Et essentiellement, ce que nous avons fait ici, c'est que nous avons dit à cette variable plutôt que de suivre cette donnée. Alors, à quoi vous attendez-vous si j'exécute le code dans le terrain de jeu maintenant ? Nous ne produirions le monde que parce MyVar ne suit plus cette donnée bonjour. Je voudrais maintenant souligner le type de données de la variable. Si je spécifie que MyVar est un type de chaîne, je ne peux suivre que des éléments de données de chaîne. Par exemple, si j' avais un entier comme 100 et que j'ai essayé de l' attribuer à MyVar, j'obtiendrai une erreur qui n'est pas autorisée. Ce que je dois faire à la place, c'est déclarer une nouvelle variable de type int pour suivre cette donnée int. Nous allons donc utiliser le mot-clé var et le nommer. Et puis deux-points , puis le type de données que je veux suivre. Et maintenant, c'est tout à fait correct. Essayons de l'imprimer. Xcode ne va pas vous aider à corriger automatiquement les erreurs d' orthographe. Très bien, donc nous avons un monde et 100. Maintenant que nous codons davantage ensemble, vous commencerez à remarquer différents types de conventions de dénomination, comme ce que vous voyez ici où mes noms de variables commencent par une lettre minuscule, et puis chaque mot suivant dans mon nom de variable commence par une majuscule. est donc qu'une convention de dénomination standard. Vous pouvez vraiment faire tout ce que vous voulez. Mais lorsque vous commencez à coder davantage et à travailler en équipe, il est important de le faire. Norme que tout le monde utilise, et c'est courant. Bien, une autre chose dont je veux parler avant de passer au sujet suivant est le fait qu'il y a des raccourcis dans Xcode. Vous n'avez pas vraiment besoin de saisir toutes les informations. Par exemple, ici, nous déclarons que cette variable, mon int, est un type int et que nous lui attribuons des données entières. Mais le fait est nous pourrions en fait omettre ce type de données et simplement l'attribuer 102. Lorsque nous le faisons, Xcode peut voir qu'il s'agit d'un élément de données int. Donc, il va supposer que mon int ne sera suivi que par types. Maintenant, cette même règle s'applique toujours. Je veux dire, après que Xcode ait déduit que cette variable est de type n parce que vous lui avez attribué 100. Je ne peux pas y assigner une chaîne. Cela ne sera pas autorisé car Xcode est, a déjà détecté qu'il devrait s'agir d'un type n. Il en va de même ici. Je n'ai pas besoin de spécifier le type de données. Si je vais lui attribuer immédiatement un morceau de données de chaîne parce que cela indique à Xcode qu'il s' agira d'une variable de type chaîne. n'est donc qu'un petit raccourci vous épargner un peu de frappe. Très bien, vous avez donc appris à déclarer une nouvelle variable, lui attribuer des données et à rappeler ces données en utilisant le nom de la variable. Vous avez également appris comment attribuer nouvelles données à cette variable. Parlons de l'autre façon de suivre les données. Constantes. constantes sont donc comme des variables, sauf que vous ne pouvez pas réaffecter des données une fois que vous y avez assigné le premier élément de données. Donc, comment déclarer une constante pour garder une trace de ces données de chaîne. Au lieu du mot-clé var, vous utilisez le mot-clé let. Et ensuite, le reste est identique à une variable. Nous commençons donc par un nom constant, mon deux-points, puis vous avez deviné que le type de données suivi de l'opérateur d'affectation. Ensuite, nous allons déplacer ces données vers la droite de cet opérateur d' affectation comme ça. Essayons maintenant de référencer cette constante. Essayons d'imprimer les données dans mon contexte. Comme vous pouvez le constater, il fonctionne comme prévu. Maintenant, essayons de faire ce qui n'est pas permis. Essayons de lui attribuer autre chose. Et comme prévu, nous ne pouvons pas réaffecter des données car il s'agit d'une constante. Les constantes sont maintenant utiles. C'est un outil supplémentaire que nous pouvons utiliser si nous ne nous attendons pas à ce que ces données changent. Nous n'avons donc jamais besoin d'y apporter de modifications. Alors, quand utiliseriez-vous une constante plutôt qu'une variable ? Eh bien, cela dépend vraiment de ce que vous essayez de faire. Vous allez probablement utiliser des variables la plupart du temps en raison de leur polyvalence et du fait que les données changent. Cependant, la meilleure pratique consiste à préférer les constantes aux variables là où elles produisent sens. En fait, Xcode est assez intelligent pour savoir si vous utilisez une variable et que vous ne finissez jamais par modifier cette variable, il vous suggérera de changer ce mot-clé var un mot-clé let et d' utiliser une constante à la place. Très bien, faisons un récapitulatif rapide avant de terminer la leçon, vous avez appris le cycle de vie de View Update et comment le code Swift y joue un rôle. Vous avez découvert les types de données tels que string, int, bool et double. Vous avez appris comment utiliser des variables et des constantes pour référencer des données. Vous faites de grands progrès jusqu'à présent. Et dans la prochaine leçon, je vous apprendrai comment organiser vos instructions de code en fonctions. Très bien, je vous y verrai. 8. 07 : Fonctions de programmation rapide: Bonjour et bienvenue. Dans la leçon précédente, vous avez pris connaissance des variables et des constantes Swift. Vous apprendrez comment créer des données et déclarer une variable ou une constante afin de les suivre. Pendant cette leçon, vous allez apprendre à organiser, regroupez vos instructions de code. Ainsi, ce numéro un, toutes les instructions de code que vous avez regroupées peuvent fonctionner ensemble pour une tâche commune. Et la deuxième, une fois que votre code est organisé en groupes, vous pouvez choisir le groupe de manteaux à exécuter en fonction de la tâche à accomplir. Ces groupes ont des instructions de code appelées fonctions dans Swift. Examinons maintenant le diagramme du cycle de vie de la mise à jour de la vue de la leçon précédente et voyons où fonctions peuvent jouer un rôle dans ce cycle de vie. N'oubliez pas que lorsque l'utilisateur interagit avec l'interface utilisateur, code Swift capture cet événement et y réagit. Eh bien, nous pourrions avoir quelques fonctions différentes en fonction de la façon dont l'utilisateur interagit avec notre interface utilisateur. Par exemple, l'utilisateur qui appuie sur un bouton peut déclencher l'application à changer d'écran. Dans ce cas, nous allons peut-être exécuter la fonction a pour effectuer cette tâche. Ou d'autre part, que se passe-t-il si l'utilisateur appuie sur un article pour voir plus de détails ? Dans ce cas, nous allons exécuter la fonction B pour afficher l'écran des détails. Passons maintenant en revue le code qui effectue la récupération des données. Par exemple, il se peut que nous ayons une fonction C qui récupère les données, peut-être le code réseau. Et il saisit les données et les donne ensuite à la fonction D comme entrée. Et la responsabilité de cette fonction pourrait être de traiter ces données et de les transformer en un format que notre application peut comprendre. La fonction D prend donc ces données en entrée et génère les données formatées pour notre application. Maintenant, je pourrais continuer, mais comme vous pouvez le constater, les fonctions sont une composante de base de la programmation rapide. C'est partout. Voyons maintenant comment créer nos propres fonctions. Très bien, donc ici j'ai un tout nouveau terrain de jeu Xcode et nous allons jeter un coup d'œil à la syntaxe de la fonction. Et au cas où je ne l'ai pas encore expliqué, la syntaxe du mot est simplement un mot décrivant la structure ou la grammaire de la langue. Donc, la syntaxe de fonction pour déclarer une nouvelle fonction, vous commencez par le mot-clé func FUN, voir. C'est une fonction géniale. Ensuite, vous le suivez par le nom de la fonction. Et puis un ensemble de parenthèses sont des crochets arrondis, puis un ensemble de crochets bouclés. À l'intérieur de l'ensemble de crochets bouclés, vous placez vos instructions de code, tout ce que vous voulez exécuter ou exécuter chaque fois que nous appelons cette fonction. Permettez-moi donc de faire quelques déclarations ici. Disons de déclarer deux constantes comme celle-ci, puis imprimons un plus b. Donc si je l'exécute maintenant et que j'exécute toutes ces lignes de code, rien ne se passera. Vous ne voyez aucune sortie. Et c'est parce que nous n'avons pas vraiment appelé cette fonction. Pour appeler et exécuter cette fonction, suffit de la référencer par le nom de la fonction. C'est donc mon FUN, C, suivi des parenthèses de paires, et c'est ainsi que vous exécutez tout le code entre les deux. Essayons donc ça. Je vais arrêter de m'exécuter et ensuite relancer mon terrain de jeu. Et nous en avons 30 comme prévu. Si je voulais réexécuter ces instructions, je peux simplement l'appeler à nouveau. Et si je l'imprime, il exécute maintenant deux fois ce code. Maintenant, je veux revenir à cette vue, mettre à jour diagramme du cycle de vie pendant une seconde seulement. Parce que si vous remarquez dans cette zone de récupération de données, j'ai dit que nous pourrions avoir deux fonctions, c et les fonctions dy, où C récupérerait les données et les transmettrait en D comme paramètres d'entrée. Cette fonction D peut donc fonctionner avec ces données et formater la façon dont nous avons besoin. Une fonction capable d'accepter des données pour travailler avec elle est donc une fonctionnalité très puissante. Jetons un coup d'œil à la façon dont nous déclarerions une fonction qui accepterait une sorte de données d'entrée. Très bien, je vais donc effacer ces deux lignes et je vais modifier ma fonction ici. Au lieu de déclarer deux constantes, a et b, je vais spécifier que a et b doivent être transmises à la fonction. Nous procédons donc à l'utilisation de paramètres de fonction entre les deux crochets arrondis. C'est là que nous devrions spécifier tous les paramètres que nous voulons transmettre à cette fonction. Vous pouvez passer plusieurs paramètres, mais en fait, commençons par un et commençons par un. Donc, d'abord je mettrais le nom du périmètre, donc je voudrais que ce soit huit. Et puis je mettrais deux-points spécifiés par le type de données que ce paramètre est. Puisque je m'attends à ce que ce soit, je vais déclarer ce paramètre comme suivi du type de données int. Et puis je peux effacer cette constante d'ici. Comme vous pouvez le constater, cela ressemble presque une déclaration variable ou une déclaration constante, sauf sans var et sans gauche. Nous spécifions ici que chaque fois que cette fonction est appelée, un paramètre int doit être transmis avec lui. Et il va être référencé par ce nom de paramètre a à l'intérieur de cette fonction. Donc maintenant, vous pouvez voir que nulle part je n'ai déclaré une variable a ou une constante a, mais je peux quand même mettre a mon équation a plus B parce que a est transmis en tant que paramètre. Jetons donc un coup d'œil à ce à quoi ressemblerait cette fonction. Maintenant, je vais compter sur la saisie automatique. Je vais donc taper MON FUN et vous pouvez voir dès que je fais ça, il détecte ma fonction ici. Je vais donc aller de l'avant et cliquer dessus. Et vous pouvez voir que maintenant, dans le processus d' appel de cette fonction, je dois également transmettre un ensemble de données entiers. Donc je vais aller de l'avant et passer là-dedans, passant quelque chose de différent dans le passé et cinq, vous pouvez voir ici, cela indique c'est le paramètre que je transmets. Allons de l'avant et arrêtons, exécutons et lançons à nouveau mes lignes de code. Et cette fois, la sortie est de 25, car 5 étaient passés dans la fonction. Plus 20, c'est 25. En revenant à nouveau au diagramme du cycle de vie de View Update, fonction D accepte l' entrée en tant que paramètre, mais elle renvoie également la sortie. C'est donc une autre caractéristique très puissante des fonctions. Être capable de prendre en compte certaines entrées, travailler avec ces données et de fournir une sortie à la couleur de la fonction. Jetons un coup d'œil à notre terrain de jeu et voyons comment spécifier qu'une fonction doit renvoyer certaines données. Donc, pour modifier cette fonction pour indiquer qu'elle va renvoyer certaines données. Nous montons ici juste après le support arrondi pour le périmètre, et juste avant le début des supports bouclés. Ici, nous écrivons un tiret suivi d'un symbole supérieur à, ce qui ressemble à une sortie semblable à une flèche. Ensuite, nous spécifions le type de données de la sortie. Donc, ce que je vais faire, c'est que je vais générer la somme de A et B au lieu de l'imprimer sur la console. Je vais donc effacer cette ligne. Et puis je vais produire un int. C'est donc là que je spécifie qu' après ce tiret plus grand que le symbole. Maintenant, vous pouvez voir que Xcode génère des erreurs maintenant car en plus de spécifier que votre fonction renvoie un int, vous devez en fait renvoyer un int à l'intérieur des instructions de code. Ainsi, en tant que dernière ligne de notre code, nous pouvons utiliser le mot-clé retour, ce qui signifie que ce sont les données que nous allons renvoyer depuis la fonction. Ensuite, nous spécifions les données que nous voulons renvoyer. Donc je vais retourner un plus b. Et tout est, eh bien, gardez à l'esprit que quel que soit le type de données que vous spécifiez ici dans la déclaration de fonction, c'est le type de données que vous avez pour revenir en cas d'inadéquation. Par exemple, si j'ai spécifié que cette fonction renvoie un int, mais que je retourne une chaîne. Comme un morceau de texte. Vous allez voir Xcode. Plaignez-vous de cela aussi parce que c'est incorrect. Nous allons donc retourner a plus b et nous allons retourner un int. Alors pourquoi ne pas exécuter notre fonction maintenant et voir ce qui se passe ? Il ne se passe rien. Eh bien, que se passe-t-il ? Je retourne un plus b. Donc voici ce qui se passe. Appeler cette fonction renvoie ces données, mais j'ai besoin référencer et de suivre ces données, n'est-ce pas ? Et c'est à ça qu'est une variable. Je vais donc déclarer une variable ici, var. Déclarons constants en fait, puisque je ne vais pas changer cela, ma somme soit égale au résultat de cette fonction. Pour que vous puissiez comprendre ce taux de déclaration de code, nous déclarons une constante appelée ma somme. Ensuite, nous appelons cette fonction sur la même ligne qui renvoie 25 et nous affectons 25 à ma somme. Je peux donc maintenant imprimer ma somme. Et vérifions que nous obtenons la sortie. On y va. Avant d'aller de l'avant, il y a deux choses très importantes que je veux mentionner. Donc, cette instruction de retour met fin à l'exécution de cette fonction. Ainsi, une fois cette instruction de retour exécutée, l'exécution revient hors de cette fonction. Donc toutes les déclarations de code que vous avez posées ici, disons que j'avais retourné un b juste là, et que j'ai imprimé un plus b ici. Cette instruction d'impression ne sera pas exécutée de code C après que le retour ne sera jamais exécuté. Il est donc important de garder à l'esprit que lorsque vous écrivez un retour et qu'il exécute cette ligne de code, l'exécution s'arrête et sort de cette fonction. Une autre chose que je voulais mentionner est ce type de retour. Donc, plus tôt, lorsque je vous ai dit que la déclaration d'une fonction n'avait pas un type de retour comme celui-ci. Eh bien, c'est vrai. C'est juste que le type de retour était nul. Et le vide ne signifie rien. Laissez-moi donc faire une démonstration de base, laissez-moi simplement déclarer une autre fonction ici. Je vais juste appeler ça un microphone pour voir à l' époque , je vous ai dit que c'était une déclaration de base d'une fonction, mais en fait, c'était un raccourci. La déclaration complète comporte en fait un type de vide de retour comme celui-ci si vous ne retournez rien. Mais c'est juste que lorsque vous ne retournez rien, vous n'avez pas besoin de spécifier le type de vide de retour. Donc, j'ai juste pensé que je l'avais mentionné. Vous savez donc ce que signifie ce mot clé vide. Donc, si vous voyez une fonction qui a un type de vide de retour, vous savez que cela signifie essentiellement qu'elle ne renvoie rien. Bon, donc maintenant, réinitialisons un peu. Ça commence à devenir un peu désordonné. Donc, effacons tout sauf ça, sauf notre fonction ici. Maintenant, je veux vous montrer comment nous pouvons passer plusieurs paramètres. Donc, au lieu de spécifier être ici, mettons B dans la liste des paramètres ici et faites-le passer à la place. Ok, alors laissez-moi effacer cette ligne de code pour que l'on obtienne B d'apparaître. Eh bien, comment ajouter un autre paramètre à celui-ci ? Ce que vous faites est simplement de mettre une virgule , puis de déclarer un autre paramètre pour votre fonction. Facile, non ? Nous allons nommer celui-ci, suivi par deux points, puis le type de données B, qui sera un autre entier. Très bien, nous allons maintenant jeter un coup d'œil à la façon dont nous appelons cette fonction avec deux paramètres. Mon func, vous pouvez le voir ici. Non, il suffit de spécifier, oh, une chose rapide est que lorsque vous appelez des fonctions, un moyen simple de remplir les paramètres de la liste consiste à appuyer sur la touche tabulation. Cela vous amène simplement au paramètre suivant que vous devez remplir. Je vais donc mettre 2 et 3. Exécutons tout ce code et nous obtenons un résultat. Nous n'obtenons aucun résultat. N'oubliez pas que j'ai effacé ma ligne de code. Alors pourquoi ne pas simplement imprimer le résultat au lieu de l' attribuer à une variable cette fois ? Je vais donc passer directement cet appel de fonction dans ma déclaration d'impression. Cela va imprimer la sortie de ma fonction. Allons de l'avant et lançons ce code et nous en recevons 5. Maintenant, il est évident que vous pouvez avoir plus de deux paramètres. Il suffit de placer une virgule entre chaque paramètre de votre fonction. Et puis une autre chose que je voulais mentionner qui est plutôt cool avec les paramètres, c'est que vous pouvez spécifier une valeur par défaut pour un paramètre. Par exemple, pour le paramètre b, je pourrais en faire une donnée d'entrée facultative en spécifiant une valeur par défaut pour ce paramètre. Si je fais cela, cela signifie que lorsque cette fonction est appelée, transmission des données pour le paramètre b sera facultative. Jetons un coup d'œil à la façon dont cela fonctionne. Donc, après avoir spécifié le type de données pour mon paramètre b, je peux mettre un signe égal, puis je peux lui donner une valeur. Supposons que 0 soit la valeur par défaut. Si b n'est pas transmis , B sera juste 0. Maintenant, effacons mon appel de fonction, essayons de l'appeler à nouveau et jetons un coup d' œil à ce que le menu de saisie semi-automatique nous montre. Ici, vous pouvez voir qu'il existe maintenant deux formes différentes de mon appel de fonction, une avec les paramètres a et b. Je transmets donc les deux éléments de données. Et l'un est simplement de passer un paramètre a. Si je fais cela, v va juste être 0. Mais si je passe dans les deux, disons que je passe encore 23, alors B sera trois au lieu de 0. C'est donc une façon de rendre vos périmètres optionnels. Je veux maintenant parler des étiquettes d'arguments. Comme vous pouvez l'imaginer, plus nous avons de paramètres, plus les choses seront déroutantes en ce qui concerne ces appels de fonctions, surtout lorsqu'il s'agit de noms de paramètres tels que A et B. parfois, a et B est logique dans le contexte du code à l'intérieur de la fonction. Mais à la couleur de la fonction, A et B. Ils ne signifient rien. Il existe donc une fonctionnalité spéciale appelée étiquettes d'arguments. Laissez-moi vous montrer à quoi cela ressemble. Je vais donc déclarer une nouvelle fonction ici. Je vais aussi appeler ça mon func. Et je vais le faire , tu sais quoi ? Je vais simplement copier cette fonction et en faire une copie et vous montrer comment, comment les étiquettes d'argument la modifient. Un argument étiqueté passe donc devant chaque paramètre. Ainsi, chaque paramètre peut avoir sa propre étiquette d'argument, et vous ne faites placer un nom devant ce paramètre. Je vais appeler ce premier paramètre. Je vais lui donner une étiquette d'argument appelée premier numéro. Et pour mon deuxième paramètre, je vais lui donner un argument appelé deuxième numéro. C'est donc littéralement tout ce que c'est. Une étiquette d'argument est un nom situé devant le nom du paramètre séparé par un espace. Examinons comment cela affecte l'appel de fonction. Si je tape ma fonction, vous pouvez voir ici que j' ai toujours ces deux premières, A et B, et c'est à partir de la première fonction ici. Mais regardez ici, j'ai le premier numéro, le premier numéro et le deuxième numéro. Et cela correspond à ma deuxième fonction ici, car le deuxième numéro est toujours facultatif, n'est-ce pas ? Parce que j'ai cette valeur par défaut. Donc, si j'appelle ça. Mon appel de fonction devient ce myfunc premier numéro 1, deuxième numéro 3. Cependant, en interne à l'intérieur de cette fonction, je fais toujours référence à ces paramètres à l'aide de a et b. Donc les étiquettes d'argument sont là. Un moyen pour vous de distinguer le nom d'un appel de fonction par rapport façon dont il est référencé dans le code. Alors que si vous omettez les étiquettes d'argument, comme nous l'avons fait ici, les noms de paramètres sont utilisés à la fois pour l'appel de fonction et le référencement de ces paramètres à l'intérieur de la fonction. J'espère que vous remarquerez la différence ici. Une astuce intéressante que vous pouvez faire avec les étiquettes d' argument est que si vous ne voulez pas afficher de texte dans votre appel de fonction, vous pouvez utiliser un trait de soulignement comme étiquette d'argument. Donc, si vous faites cela, voyons ce qu'il advient de votre appel de fonction. Donc mon func, vous pouvez voir ici ces deux-là correspondent à ce que j'ai fait ici, en utilisant des traits de soulignement pour les étiquettes d'argument. Donc, si vous utilisez un trait de soulignement pour l'étiquette d'argument, les appels de fonction deviennent myfunc. Ensuite, le premier élément de données, virgule, le deuxième élément de données. n'y a pas de nom de paramètre, il n'y a aucune étiquette d'argument dans votre appel de fonction. Cela rend les choses vraiment succinctes, vraiment soignées et bien rangées, mais cela rend aussi les choses plus déroutantes si on ne sait pas quels sont ces paramètres censés être quatre. Il y a donc beaucoup de polyvalence ici. Ma préférence personnelle est simplement de le faire de la première façon. Et je ne spécifie généralement aucune étiquette d'argument. Et j'utilise simplement les noms de périmètre. Ok, la dernière chose que j'ai promise avant de finir avec fonctions, c'est que je ne sais pas si vous l'avez remarqué, mais nous avons déclaré deux fonctions différentes ici, toutes deux avec le même nom de fonction. Nous ne pouvons pas faire cela avec des variables, n'est-ce pas ? Si vous essayez de déclarer la variable a, puis la variable a à nouveau, vous obtiendrez une erreur sur la seconde. Et Xcode va se plaindre, vous ne pouvez pas redéclarer la variable 8. Pour les fonctions. Les choses sont un peu différentes. Les fonctions ont ce qu'on appelle une signature de fonction. Et cela comprend le nom de la fonction, la liste des paramètres, puis le type de retour. Alors saisissons myfunc et jetons un coup d'œil à ce que nous donne le menu de saisie automatique. Comme vous pouvez le constater, ces quatre variantes portent le même nom de fonction appelé myfunc. Mais parce que les valeurs des paramètres, les étiquettes d' argument sont différentes, Xcode est capable de discerner et savoir quelle fonction nous essayons d'appeler, n'est-ce pas ? Donc, si j'appelle celui-ci et que je ne spécifie aucun nom de paramètre ni aucune étiquette d'argument. Il sait que j'essaie d'appeler ce deuxième ici parce que cette méthode appelle, cet appel de fonction. Je veux dire, il ne correspond pas à ce premier. Alors que si je fais ma fonction et que je spécifie les étiquettes de paramètres a et b, alors il sait certainement que j'essaie d'appeler le premier parce que cet appel, cette liste de paramètres ici correspond ici. Ok, donc je vous ai promis que nous sommes allés un peu plus loin que vous n'avez probablement besoin de savoir en ce moment en vous montrant toutes ces options et les façons dont les fonctions peuvent être flexibles car nous codons davantage ensemble, vous me verrez simplement utiliser des formes de fonctions plus basiques, mais au moins payer maintenant vous en savez beaucoup plus et je suis sûr que vous pouvez apprécier la puissance de ces fonctions. Très bien, cette leçon était très remplie d'action. Faisons un récapitulatif avant de terminer la leçon. Tout d'abord, vous avez appris à déclarer une fonction de base, puis à déclarer des fonctions acceptant les données d'entrée en tant que paramètres. En outre, vous apprendrez comment déclarer une fonction avec plusieurs paramètres. Et encore une fois, fonctionne quand il est presque aussi utile s'il ne pouvait pas produire de données, n'est-ce pas ? Vous apprendrez comment procéder en utilisant les types de retour et le mot-clé retour. Vous avez également entendu parler des étiquettes d' arguments. Enfin, vous avez appris les signatures de fonctions. Vous faites de grands progrès. Et dans la prochaine leçon, je vais vous montrer comment organiser vos fonctions en deux structures. Je vous y verrai donc. 9. 08 : structures de programmation rapides: Bonjour et bienvenue. Jusqu'à présent, vous avez appris les variables et les constantes et comment elles sont utilisées pour suivre les données. Vous avez également pris connaissance des fonctions d' organisation et de regroupement des instructions de code. Pendant cette leçon, vous allez en apprendre plus sur les structures ou les structures. Et ce sont les éléments de base qui représenter vos données ou de représenter quelque chose dans votre application. structures regroupent les fonctions que les variables et les constantes, tout ce que vous avez appris jusqu'à présent dans les dernières leçons, tout dans un petit paquet soigné. Très bien, plongeons et voyons de quoi il s'agit. Faisons maintenant un récapitulatif rapide. Tout d'abord, vous aviez des manteaux, des choses comme celles-ci. Ensuite, je vous ai montré comment utiliser fonctions pour les organiser et les regrouper. Maintenant, avec les structures, vous pouvez regrouper vos fonctions. Vous pouvez également avoir des variables et des constantes, suivre les données à l'intérieur de votre structure, mais en dehors de n'importe quelle fonction. Et nous allons en parler un peu plus tard dans cette leçon. Jetons maintenant un coup d'œil à notre diagramme de cycle de vie de mise à jour de vue. Pour le code de vue qui représente son interface utilisateur, vous pouvez créer une structure pour représenter votre écran d'accueil et tout le code de vue votre écran d'accueil se trouve dans cette structure. Si vous aviez un deuxième écran dans votre application, vous pouvez créer une autre structure pour ce deuxième écran. Et tout le code de vue de ce deuxième printemps entrerait dans cette structure. Dans ce cas, chaque structure représente un écran différent dans votre application. Passons maintenant à la partie récupération de données de ce diagramme. Vous pouvez créer une structure et l'appeler gestionnaire de données. Et vous allez mettre tout le code et les fonctions liés à la récupération et fonctions liés à la récupération au traitement des données l'intérieur de cette structure de gestionnaire de données. Dans ce cas, la structure ne représente pas un filtrage de votre application, elle représente plutôt un élément crucial de votre application. Comme vous pouvez le constater, les structures sont très flexibles et légères et elles sont utilisées partout dans votre application. Passons maintenant à un terrain de jeu Xcode et voyons comment nous pouvons déclarer notre propre structure. Bon, donc ici j'ai une toute nouvelle aire de jeux vide. Voyons comment définir nos propres structures. abord, vous commencez par le mot-clé struct, suivi d'un espace, puis du nom de votre structure. Je vais donc appeler celle-ci ma structure. Ensuite, vous mettez un espace et vous ouvrez un ensemble de crochets bouclés. À l'intérieur des crochets bouclés, vous mettiez tout le code dans votre structure, et c'est tout. Nous avons déclaré notre propre structure. Avant d'aller de l'avant et de jeter un coup d' œil à ce qu'il y a à l'intérieur de la structure, je tiens à souligner la convention de dénomination de la structure. Remarquez que j'ai commencé par une majuscule. Il s'agit de la convention standard. C'est différent du boîtier chameau que nous avons utilisé pour les variables, les constantes et les noms de fonctions. Ceux-ci ont commencé par une lettre minuscule, et chaque mot suivant commençait par une majuscule. Alors que pour les structures, il commence par une majuscule, puis chaque mot suivant a une majuscule. Très bien, maintenant que vous connaissez le nommage des structures, allons à l'intérieur et regardons comment nous organisons les choses à l'intérieur de la structure. Donc, généralement en haut de la structure, à l'intérieur des crochets bouclés, nous déclarerions ici toutes nos variables et constantes utilisées pour suivre les données liées à la structure. Maintenant, ils ont un nom spécial, comme je l'ai mentionné plus tôt, et nous y reviendrons plus tard dans cette leçon. Ainsi, ici, après avoir déclaré toutes les données de suivi des variables et des constantes de cette structure, la section suivante est toutes les fonctions liées à la structure. À présent, il n'y a pas de sections clairement définies dans une structure. Vous savez, tout le code se situe entre les crochets bouclés. Mais généralement, c'est ainsi que vous organisez tous les différents éléments de code à l'intérieur de votre structure. Ainsi, en haut, les variables et les constantes, puis en bas, toutes les fonctions. Ainsi, comme vous pouvez le constater, les structures sont parfaites pour regrouper des fonctions, les variables et les constantes sont liées pour une chose. Mais les structures sont généralement conçues pour représenter quelque chose dans votre application dans le diagramme du cycle de vie View Update que vous avez vu précédemment Nous avons vu des exemples une structure utilisée pour représenter un écran de votre ainsi que pour représenter un composant essentiel de votre application comme Network Manager. Alors pourquoi ne pas faire un autre exemple, et je vais vous montrer une structure un peu plus concrète. Nous allons le modéliser après quelque chose. Plus tôt dans le diagramme du cycle de vie de View Update, vous avez vu que nous pouvions utiliser des structures pour représenter une vue dans notre application. Allons-y avec ça. Disposons d'une application de chat hypothétique. Et disons que cette structure représente ma vue de chat. Je vais donc changer le nom de ma structure en mode chat. Maintenant, sous variables et constantes, j'ai peut-être une variable pour suivre le message, comme le message de chat que je saisis dans la boîte de discussion. Je vais donc appeler ce message. Et le type de données que ce serait serait probablement une chaîne de caractères. Et je vais lui attribuer une chaîne vide, rien entre les deux, juste deux guillemets. C'est ce que l'on appelle une chaîne vide. Maintenant, sous les fonctions, je pourrais avoir des groupes de code qui effectueraient différentes tâches à l'écran. Par exemple, lorsque l'utilisateur appuie sur le bouton Envoyer le chat, il exécute un code pour envoyer le message de chat au serveur. Je déclarerais donc une fonction. Donc c'est funk, suivi par, appelons ça envoyer le chat et deux parenthèses arrondies. Et je vais ouvrir une paire de supports bouclés. Et à l'intérieur, je mettais le code pour envoyer un message de chat. Et puis, entre les variables et les constantes et les fonctions, j'aurais le code de vue pour cet écran et comme tout le code de l'interface utilisateur. Maintenant, dans cette structure d' affichage du chat, nous avons un petit paquet soigné contenant tout le code de cet écran. Maintenant, j'ai mentionné plus tôt que les variables et constantes que vous déclarez en haut de la structure ont un nom différent. Maintenant, je veux vous dire ce que c'est. Cette déclaration de variable que j'ai ici message. Il s'agit d'une propriété de la structure de la vue du chat. Si j'avais des déclarations variables ou constantes supplémentaires, celles-ci seraient appelées propriétés du chat. Est-ce que vous structurez également ? Et ici, les fonctions ont également un nom différent. Une fonction à l'intérieur d'une structure est connue comme une méthode de cette structure. Cette fonction d'envoi de chat est donc en fait une méthode de la vue du chat. Nous allons maintenant mettre à jour nos commentaires ici pour que nous utilisions la terminologie appropriée au lieu des variables et des constantes ici. Je vais renommer cela, bien pas renommé, mais simplement retaper mon commentaire et appeler ces propriétés. Et au lieu de fonctions, on va appeler ces méthodes, juste pour que nous soyons clairs. Désormais, à l'intérieur d'une structure, propriétés et les méthodes peuvent réellement fonctionner ensemble pour remplir les tâches de la vue de discussion. Jetons un coup d'œil à certaines des façons spéciales dont ils peuvent travailler ensemble. Jetons maintenant un coup d'œil à cette méthode d'envoi de chat. Par exemple, si nous écrivons le code ici pour envoyer un message de chat, le code ici pour envoyer un message de chat, il serait certainement utile d'accéder au message réel dans cette propriété de message, n'est-ce pas ? Eh bien, nous le pouvons vraiment. Donc, si j'ai écrit quelque chose comme ça, imprime puis entre parenthèses, je mets le nom de la propriété. En fait, je peux accéder à ces données. Et la raison en est que cette propriété est déclarée dans le cadre de cette structure. La portée de la structure est donc tout ce qui se trouve entre ces deux supports bouclés, essentiellement les crochets bouclés qui s'ouvrent et se ferment de la structure. Donc toutes les méthodes que je déclare ici, par exemple, si j'en déclare une autre, appelons celle-ci supprimer le chat. Parce que ces deux méthodes sont également dans la même portée. Vous savez, c'est dans la portée de la vue du chat. Je suis en mesure d'accéder à la propriété. Les propriétés que vous déclarez ici sont évaluables pour tout ce qui se situe dans le même champ d'application. Cela inclut donc toutes les méthodes déclarées ici. Maintenant, je dois dire que chaque méthode a sa propre portée locale. Cette méthode d'envoi de chat a donc une portée à l'intérieur ici. Et cette méthode de chat de suppression a sa propre portée entre ces crochets bouclés. Donc, si je déclare une variable dans ma méthode d'envoi de chat, disons que le préfixe var est égal à Chris, disons. Et disons que j' utilise ce préfixe et que j'ai précédé mon message de chat. Donc, tout le message de chat serait dit Chris, puis quelque chose. Alors peut-être que je vais imprimer un préfixe plus un message pour obtenir ce genre d'effet. Et je voulais faire la même chose dans le chat de suppression. Si j'essaie d'accéder à la variable de préfixe, à taper, à imprimer, préfixe et au message ici à l'intérieur de la méthode delete chat, vous verrez cela, se plaint Xcode. Nssa ne trouve pas de préfixe dans l'étendue car cette variable n'est pas déclarée dans la même étendue. Il est déclaré dans le cadre de l'envoi du chat. Alors, comment pourrions-nous régler cela ? Eh bien, l'une des façons dont nous pourrions le faire est de transformer cette variable de préfixe en propriété que nous avons déclarée en haut de notre structure. Vous savez, déplacez-le hors de la portée du chat Sen et placez-le ici dans le champ de la vue du chat. Maintenant que je déclare mon préfixe comme propriété de la vue du chat, vous pouvez voir que les erreurs disparaissent. Et je peux accéder à cette propriété de préfixe à l'intérieur. Les deux envoient un chat et suppriment des méthodes de chat. Je veux maintenant parler d' un autre type de propriété. Commençons par définir quelles sont ces propriétés ici. Ces propriétés sont appelées propriétés stockées. Et la raison en est que lorsque vous accédez à ces propriétés et que vous les référencez par leur propre nom, il vous renvoie simplement la valeur stockée. Il existe un autre type de propriété dans lequel, lorsque vous y accédez, elle doit calculer ou calculer la valeur avant de vous la renvoyer. Jetons donc un coup d' œil à quoi ressemble ce deuxième nouveau type de propriété. Permettez-moi donc de commencer par effacer cette propriété de préfixe ici et en supprimant cela. Ensuite, je vais déclarer ce nouveau type de propriété. Il commence comme normal. Utilisez l'espace VAR, puis le nom de la propriété calculée. Je vais appeler ça un message avec un préfixe, suivi du nom. Au lieu de lui attribuer des données, vous ouvrez un ensemble de crochets bouclés. Et ici, vous pouvez placer le code de calcul pour calculer la valeur que vous retournerez lorsque cette propriété est appelée. Une chose cependant, étant donné que la valeur n'est pas immédiatement connue, Xcode ne peut pas déduire quel est le type de données. Vous devez donc spécifier le type de données après le nom de la propriété calculée. Donc, après un message avec préfixe, je vais mettre deux points et je vais mettre une chaîne parce que c'est le type de valeur que cette propriété va renvoyer. C'est différent de ce message de propriété stockée ici où je peux réellement utiliser le raccourci et effacer le type de données. Donc c'est juste que le message var est égal à chaîne. Et je peux le faire car j'attribue immédiatement une valeur à cette propriété. Ainsi, xcode peut examiner cette valeur et il peut déterminer et déduire quel doit être le type de données de cette propriété. Avec une propriété calculée, je dois spécifier explicitement le type de données. Très bien, donc pour mon message de propriété calculé avec préfixe, jetons un coup d'œil au code l'intérieur des crochets bouclés. Ici, je vais utiliser le mot-clé retour, comme avec les fonctions, non ? Je vais revenir. Chris dit, il s'agit donc d'un message chaîne plus. Donc maintenant, dans ma méthode d'envoi de chat, au lieu d'imprimer le préfixe plus le message, je peux simplement renvoyer un message avec un préfixe. Même chose pour supprimer le chat. Au lieu de préfixe plus message, je vais renvoyer un message avec un préfixe. Ainsi, chaque fois que cette propriété est accessible, elle exécute le code à l'intérieur ces crochets bouclés et le renvoie comme valeur de cette propriété et elle doit le calculer. C'est pourquoi on l'appelle une propriété calculée. Maintenant, avec les propriétés de l'ordinateur, il existe également un raccourci. S'il n'y a qu'une seule ligne de code ici, je n'ai pas besoin du mot-clé retour car Xcode peut supposer que cette seule ligne de code va générer les données que je veux renvoyer pour mon ordinateur propriété. Je peux donc simplement supprimer le mot-clé retour. Cependant, si j'ai plusieurs lignes de code, j'aurais certainement besoin ce mot-clé de retour car Xcode ne sait pas quelle ligne de code est censée être la valeur renvoyée. Par exemple, à l'intérieur de ma propriété d'ordinateur, si je dis que le préfixe est égal, dit Chris, et puis ici, j' ai le préfixe plus le message. Il ne va pas savoir quelle instruction de code renvoie la valeur. Je dois donc utiliser le mot-clé retour comme ça. Et ça va bien se passer. En ce qui concerne les propriétés calculées, il y a certainement plus de choses dont nous pouvons parler, mais cela suffira pour l'instant. Dans les chapitres ultérieurs de ce cours. Nous allons certainement revoir les propriétés calculées. Très bien, faisons un bref récapitulatif avant de terminer cette leçon, vous avez appris à déclarer une structure de base. Vous avez pris connaissance des propriétés et des méthodes de la structure, vous en avez appris davantage sur la portée et vous en apprendrez également sur les propriétés calculées. Maintenant, je sais que le plus dur est enrouler la tête autour de ces concepts. Au fur et à mesure que nous codons davantage ensemble, vous allez voir ces concepts mis en pratique. Je veux juste dire une chose avant que nous ne finissions. Vous l'avez fait. Si vous êtes tout nouveau dans le codage de ces trois leçons, c'est celles qui se battent. Dans la leçon suivante, je vais vous montrer comment ces concepts sont liés à votre projet Xcode actuel. Très bien, je vous y verrai. 10. 09 : Instances de programmation rapides: Bonjour et bienvenue. Vous avez donc appris que beaucoup de Swift au cours des dernières leçons, vous avez commencé avec des variables, des constantes et des types de données. Ensuite, vous avez appris les fonctions. Ensuite, vous découvrirez les structures que vous pouvez regrouper tous ces éléments pour représenter ou modéliser quelque chose dans votre application. Maintenant, cette leçon va être la dernière pièce du puzzle. Je ne dis pas que vous allez être un maître rapide ou quoi que ce soit. Mais à la fin de cette leçon, vous verrez comment tous les concepts et le code s' harmonisent et fonctionnent ensemble dans une application d'interface utilisateur rapide. Très bien, cela dit, plongeons directement. Bon, commençons par une aire de jeux vide. Vous souvenez-vous de l'époque où vous avez appris les fonctions et que je vous ai appris à déclarer une fonction en utilisant le mot-clé func suivi du nom de la fonction. Disons ma fonction suivie d'un ensemble de parenthèses puis d'un ensemble de crochets bouclés. Et à l'intérieur des crochets bouclés, nous aurions le code de la fonction. Mais il s'agit simplement d'une déclaration de fonction indiquant qu'aucun code n'est exécuté, rien ne se passe. Ce n'est que lorsque nous appelons la fonction que le code à l'intérieur de cette fonction est exécuté correctement ? J'appellerais donc la fonction en disant ma fonction, puis les parenthèses. Si je lance mon terrain de jeu maintenant, vous pouvez voir qu'il sort Hello dans la console. Les structures sont donc comme ça aussi. Lorsque nous déclarons une structure à l'aide du mot-clé struct suivi du nom de la structure. Disons donc ma structure, suivie d'un ensemble de crochets bouclés. Ensuite, nous avons mis le code à l'intérieur de cette structure. Laissez-moi déplacer ma fonction ici, et déclarons une propriété ici, le message var est égal à bonjour. Et puis imprimons mon message de propriété à l'intérieur de ma fonction. Il s'agit simplement d'une déclaration d'une structure. Il ne fait rien. Pensez-y comme un plan directeur pour un bâtiment. Pour que nous puissions utiliser cette structure, nous devons la donner vie. Nous devons créer ce qu'on appelle une instance de la structure. Vous pouvez penser à cela comme transformer ce plan de construction en un bâtiment réel. Alors, comment pouvons-nous créer une instance de cette structure ? Eh bien, c'est facile. Il suffit d'écrire le nom de la structure suivi d'une paire de parenthèses comme celle-ci. Maintenant, juste au cas où vous seriez encore floue sur le concept de création d'une instance de structure. Permettez-moi de vous donner quelques analogies différentes pour vous aider à comprendre ce concept. Certaines personnes trouvent cela plus facile lorsque je dis que la déclaration d'une structure ou de la déclaration de cette structure est un peu comme un plan pour une voiture ou un plan d'architecture pour une maison. En utilisant ce plan ou en utilisant ce plan d'architecture, je peux créer des voitures et créer des maisons, et ce sont là les objets réels. Alors que le plan d'architecture ou le plan d'architecture ressemble davantage à un modèle. Il décrit simplement comment cette chose va fonctionner une fois que vous l'aurez donné vie. C'est donc ce qui se passe ici. Il s'agit d'une déclaration d'une structure. Il décrit toutes ses propriétés et fonctions. Vous savez, les choses qu'il peut faire. Et ce n'est que jusqu'à ce que nous la donnions vie en créant une instance que nous pouvons réellement l'utiliser. Maintenant que nous en avons créé une instance, explorons ce que nous pouvons en faire. Maintenant, tout d'abord, nous devons suivre cette instance car elle est considérée comme un élément de données, nous devons en garder une trace et avoir un moyen de la référencer. Créons donc une variable appelée Je vais juste appeler ça un souci de simplicité. Et je vais attribuer cette nouvelle instance à ma variable . Si cette instance est un élément de données , quel est le type de données de cette donnée ? Et quel type de données cette variable contient-elle ? Eh bien, le type de données est le nom de votre structure. C'est vrai. Je peux donc modifier ma déclaration de variable à partir de var a, var a deux-points, ma structure. Oui, votre structure est son propre type de données. Donc, cette instance que vous avez créée, le type de données est ma structure. Maintenant, cette petite instance possède superpouvoirs parce que nous l'avons conçu de cette façon. Il peut contenir des données dans sa propriété message, et il peut générer ce message à l'aide de la méthode myfunction. Alors, comment pouvons-nous accéder à ces éléments de cette instance ? C'est là que la notation par points entre en jeu. Jetons un coup d'œil à ce qu'est la notation par points. Faisons donc référence à la variable a, suivie d'un point ou d'un point. Et comme vous pouvez le voir dans le menu de saisie semi-automatique, vous pouvez choisir un message qui accède à la propriété, ou vous pouvez sélectionner ma fonction qui va exécuter le code dans cette méthode. Ainsi, en utilisant la notation par points, vous pouvez accéder aux propriétés et aux méthodes de cette instance. Essayons ça. Donc, tout d'abord, je vais attribuer quelque chose à la propriété de cette instance. Je vais assigner, disons bonjour. Et puis je vais imprimer. A.Me, juste pour vous montrer que je peux effectivement accéder à cette propriété et que je peux l'imprimer. Prochaine. Au lieu d'utiliser cette déclaration d'impression ici, je vais simplement appeler la méthode de cette instance. Je vais appeler ma fonction. Et je vais réexécuter ce code. Et nous sommes toujours élevés parce que le code à l'intérieur de cette méthode imprime simplement la propriété. Maintenant, ces petites instances sont tout à fait le héros de l'action, n'est-ce pas ? Il peut faire toutes les choses pour lesquelles nous l'avons conçu. Maintenant, comme cette déclaration de structure ressemble à un Blueprint ou à un plan d'architecture, cela signifie que nous pouvons créer autant d'instances que nous le voulons. Nous allons donc créer une seconde instance. Cette fois, je vais déclarer une autre variable, car pour stocker une autre instance de ma structure. Maintenant, il est important de noter qu'il s' agit d'instances complètement indépendantes. En revenant à l'analogie du plan de la voiture, c'est comme si l'usine automobile fabriquait deux voitures à partir du même plan. Ces deux voitures sont traitées comme deux voitures différentes. La même chose ici. Je viens de créer deux instances de ma structure. Par exemple, si j'attribue un message à un message élevé, j'imprime la perle sur le message, ou je me permets d'attribuer autre chose à be.message et je l'imprime. Vous verrez que pour un point myfunction appelant cette méthode, il s'affiche en haut. Et quand j'imprime b.me, il sort monde sur la console. Vous pouvez donc constater que chaque instance garde le suivi de ses propres valeurs dans la propriété message. Vous savez maintenant que vous devez créer une instance d'une structure pour pouvoir l'utiliser. Examinons comment les instances de structures peuvent fonctionner ensemble. Maintenant, pour utiliser un exemple antérieur de la leçon précédente, supposons que j'ai une vue de discussion dans mon application J'ai donc déclaré une structure pour représenter cette vue. Il regroupe toutes les propriétés, le code de vue et les méthodes associées à ma vue de chat. Supposons que j'aie une autre structure pour regrouper tout le code réseau ou le code de la base de données pour enregistrer les données. Déclarons quelque chose comme ça ici. Donc struct, appelons cela le réseau, ou appelons-le le gestionnaire de base de données. D'accord ? Et supposons que j'ai une méthode ici. Donc, c'est amusant, appelons cela sauvegarder les données. Et le paramètre d'entrée pour cela correspond aux données que nous voulons enregistrer. Disons donc que je déclare un seul paramètre appelé data et qu'il en fasse un type de chaîne, et qu'il renvoie une valeur, il va renvoyer une valeur booléenne, true ou false, indiquant si c'était réussi ou non. Vrai pour un succès, faux pour échec. Et dans la vraie vie, il ne serait pas possible retourner instantanément un résultat comme celui-ci, car en fonction conditions du réseau et d'autres facteurs, vous ne voulez pas attendre les données à enregistrer. Donc, vous ne voulez pas que l'exécution s'arrête. Mais par souci de simplicité, disons simplement que nous pouvons retourner le résultat immédiatement. Ainsi, lorsque vous entendez cela, ce code enregistre les données et renvoie un résultat booléen. Dans cet exemple, je vais juste revenir vrai. Je vais donc tourner une valeur codée en dur parce que je ne vais pas implémenter cette méthode. La principale chose que je veux vous montrer est comment la vue du chat va utiliser le gestionnaire de base de données pour enregistrer le message. Donc, dans la vue de chat, dans ce cas, envoyer une méthode de chat, par exemple, je pourrais créer une instance du gestionnaire de base de données. Disons que var d b est égal au gestionnaire de base de données, suivi d'un ensemble de parenthèses. Et comme cela, j'ai créé une nouvelle instance de ce gestionnaire de base de données. Et maintenant, si je voulais enregistrer mon message, j'appellerais que c'est la méthode de données sauvegardées. Donc db dot a enregistré des données et je transmettrais ma propriété message en tant que données d'entrée. Je vais passer un message. Mais rappelez-vous que lorsque j'appelle cette méthode de données sauvegardées, elle renvoie une valeur booléenne pour indiquer si l'enregistrement a réussi ou non. Je peux donc attribuer la sortie de cette méthode à une constante. Je vais dire que c' était un succès, n'est-ce pas ? Je vais donc attribuer cette sortie booléenne une nouvelle constante appelée succès. Ou peut-être que je vais juste dire que c'est un succès. Et puis, ici, je peux écrire du code. Vérifiez la valeur booléenne réussie. En cas d'échec. Afficher l'alerte à l'utilisateur. Dans les prochaines leçons, vous allez apprendre à rédiger ces déclarations en fonction des conditions. Mais pour l'instant, ce commentaire devra faire. Le principal plat à emporter. Pour cet exemple que je vous montre, c'est le fait que dans la méthode d'envoi d'un chat de la structure d'affichage du chat, il utilise d'autres méthodes de structures en créant une instance de celle-ci. C'est ainsi que les instances de structures peuvent fonctionner ensemble pour que votre application fonctionne. Et c'est essentiellement tout ce qu'est votre application. Il s'agit de différentes instances de structures travaillent ensemble pour produire les vues, gérer l'entrée utilisateur et exécuter la logique. Je veux maintenant parler des niveaux d'accès pendant une seconde. Supposons, par exemple, dans mon gestionnaire de base de données, je disposais d'une sorte d'informations que je suivais en tant que propriété dont seul le gestionnaire de base de données avait besoin. Cela ne serait pertinent pour aucune autre structure. C'est peut-être un nom de serveur ou quelque chose du genre. Permettez-moi donc d'écrire une nouvelle propriété dans mon gestionnaire de base de données appelée nom du serveur. Et je vais lui attribuer une chaîne appelée serveur un. Maintenant, cette propriété ne serait pas intéressante pour aucune autre structure, mais comme vous pouvez le voir dans la méthode send chat, j'ai déclaré cette instance du gestionnaire de base de données. Si j'écris un point db en utilisant la notation par points, je peux accéder à cette propriété de nom de serveur. Et parfois, vous ne voudrez peut-être pas exposer ces choses. Vous pouvez donc spécifier un niveau d'accès devant cette propriété. Donc devant le nom du serveur var, cette propriété, je peux mettre le mot clé privé, donc maintenant devient le nom du serveur var privé. Et ce faisant, cette propriété reste accessible uniquement dans le cadre du gestionnaire de base de données. Comme vous pouvez le constater, je peux toujours accéder au nom du serveur à l'intérieur de la méthode de données enregistrées. Très bien, c'est dans la même portée, mais dans la méthode de discussion centrale de la vue du chat ici. Si j'utilise à nouveau la notation par points, pour mon exemple, vous pouvez voir que je ne peux pas accéder à ce but de propriété ou que je ne peux pas le voir. De plus, vous pouvez faire la même chose avec les fonctions. Je peux donc mettre privé devant le mot-clé func. Et maintenant, vous pouvez voir que Xcode se plaint. Je ne peux pas exécuter cette méthode à partir de la méthode de chat sun de la vue de chat. Il est maintenant recommandé de savoir quelles propriétés et méthodes doivent être accessibles à d'autres instances et à d' autres structures et de marquer que tout le reste est privé. Cela est un moyen proactif d' empêcher les comportements inattendus et les bogues de surgir. Très bien, et maintenant pour la dernière partie de la leçon, je veux relier tout ce que vous avez appris jusqu'à présent à une application d'interface utilisateur rapide dans XCode. Allons-y et faisons-le. Très bien, alors allons maintenant commencer un tout nouveau projet d'application iOS. Je vais juste nommer ce projet de test et m'assurer que les interfaces Swift UI et cycle de vie sont des langues d' application Swift UI Swift, et nous sommes prêts à y aller. Je vais donc juste enregistrer cela sur le bureau et nous allons abord sauter dans la vue de contenu. Maintenant, je vais juste changer ça pour iPhone 12 et je vais cliquer sur CV. Mais l'important, c'est que la principale chose que je voulais vous montrer, c' est le code, non ? Jetez un coup d'œil à cette structure. Vous savez que cela signifie que la vue de contenu est une structure. Il y a des mots-clés et des morceaux de code que nous allons passer en revue pour l'instant parce que nous ne l'avons pas encore appris et ce n'est pas le bon moment pour le revoir. Je vais donc passer en revue quelques choses en voulant vraiment souligner les concepts que vous avez appris jusqu'à présent et vous montrer où ils s'intègrent. Il s'agit donc d'une déclaration de structure. Permettez-moi de réduire ce code pendant une seconde. là que tu y vas. Vous pouvez donc voir qu'il s'agit d'une structure. La vue de contenu est le nom de la structure suivie d'une vue deux-points. Et nous allons y arriver dans une seconde. Ensuite, vous pouvez voir les crochets bouclés contenant tout le code de cette structure. Très bien, alors allons-le à nouveau. Et jetons un coup d'œil à ce que nous avons obtenu d'autre. En bas, ici. Nous avons le mot clé var. C'est donc le début d'une propriété. Le nom de cette propriété est body. Ok, donc après ça, on a un côlon et on a une certaine vue. Et nous y reviendrons dans une seconde. Mais vous pouvez voir qu'il y a un ensemble de crochets bouclés ici. Cela vous indique qu'il s' agit d'une propriété calculée. Laissez-moi réduire à nouveau le code. Et vous pouvez voir qu' en effet, cela ressemble à un type de données de corps var de propriété calculée, puis un ensemble de crochets bouclés à l'intérieur est le code qui est calculé ou calculé pour renvoyer la valeur lorsque cette propriété est accessible. Pouvez-vous donc voir tous ces concepts que nous avons appris au cours des quatre dernières leçons ? Est-ce qu'ils reviennent ? Je veux maintenant parler de ce point de vue et d'un point de vue. Parlons donc cette vue des deux-points dans abord de cette vue des deux-points dans la déclaration de la structure. en juger par la façon dont vous avez utilisé les deux-points auparavant, vous pouvez penser qu'il s'agit du type de données de la structure, mais pas tout à fait. Cela n'a pas vraiment de sens, n'est-ce pas ? N'oubliez pas que le nom de la structure elle-même est le type de données des instances de cette structure. Quelle est donc cette vue deux-points après le nom de la structure ? Eh bien, lorsque vous déclarez une structure, les deux-points après le nom de la structure indiquent que cette structure suit un protocole. Dans ce cas, il suit le protocole de vue. Que pensez-vous quand vous entendez le mot protocole ? Eh bien, pour moi, je pense à cela comme un ensemble de règles ou un ensemble d'actions. Par exemple, un peu comme le protocole d'urgence incendie qu'un bâtiment peut avoir pour savoir ce qu'il faut faire en cas d'incendie. Ou comme le code du bâtiment qu' un promoteur doit suivre pour construire une maison sûre. De même, dans Swift, un protocole est une spécification ou un ensemble de règles que la structure doit suivre. Cette partie de vue deux-points indique que cette vue de contenu suit le protocole de vue. Terminologie informelle de Swift. vue de contenu est conforme au protocole de vue. Maintenant, une chose importante à mentionner est que l'écriture de deux-points suivis du protocole consiste à dire et déclarer que vous êtes conforme au protocole. Mais en fait, c'est un peu comme lever la main en déclarant quelque chose. Mais respectez-vous réellement les règles de ce protocole ? Le code à l'intérieur de cette structure doit donc satisfaire aux spécifications de ce protocole. Dans ce cas, pour que le protocole de vue soit conforme à celui-ci, nous devons disposer d'une propriété body qui renvoie une vue. Comme vous pouvez le voir ici, notre structure d'affichage du contenu satisfait effectivement cette règle. C'est pourquoi il est conforme au protocole de vue. Maintenant que vous comprenez ce que sont les protocoles, vous pouvez voir que le type de données de cette propriété body est en fait n'importe quelle valeur conforme au protocole de vue. Oui, dans ce cas, le type de données de cette propriété n'est pas réellement du type de données, mais il s'agit en fait de n'importe quel type de données conforme à un certain protocole, dans ce cas, le protocole de vue. Ainsi, à l'intérieur de ce code pour cette propriété calculée, il doit renvoyer une instance conforme au protocole de vue. Ouvrons ce code et voyons ce que nous avons. Donc, ce que nous avons ici, nous avons une seule déclaration de code. Et rappelez-vous ce que j'ai dit à propos des propriétés calculées. S'il ne s'agit que d'une seule instruction de code, vous pouvez omettre le mot-clé retour, mais je vais le spécifier explicitement pour que ce soit clair pour vous. Alors, que se passe-t-il ici ? Il semble que nous créions une instance de structure textuelle. Une façon de le comprendre est maintenant si vous allez dans le volet des utilitaires ou le volet de l'inspecteur et que vous accédez à l' onglet d'aide rapide ici. Et il suffit de placer votre curseur sur ce que vous voulez regarder. Je vais donc cliquer sur ce texte. Comme vous pouvez le voir ici, texte est en effet une structure. Nous sommes donc en train de créer une instance de la structure textuelle. Cependant, vous remarquerez que création de cette instance est différente de façon dont nous l'avons fait auparavant car nous avons utilisé un ensemble de parenthèses vides. Je suis ici lorsque nous créons une instance de cette structure textuelle, nous transmettons des données d'entrée. Donc oui, vous pouvez réellement transmettre des données d'entrée en tant que paramètre à la création d'une instance d'une structure. C'est ce que l'on appelle des initialiseurs. Maintenant, nous n'en avons pas encore parlé et nous le ferons dans les prochaines leçons. Mais pour l'instant, comprenez simplement qu'il existe un moyen de transmettre des données d'entrée à la création d'une instance d'une structure. C'est exactement ce qui se passe ici. Vous vous demandez peut-être si cette structure textuelle est-elle conforme au protocole de vue ? Eh bien, il doit écrire car selon cette propriété body, tout ce qui est renvoyé pour cette propriété calculée doit être conforme à cela. Encore une fois, plongeons dans l'aide rapide. Je vais donc survoler des textos. Je vais descendre. En fait, je vais ouvrir la documentation des développeurs. Maintenant, si vous utilisez Xcode 1.112, un bogue s'est écrasé lorsque vous essayez d'ouvrir cette fenêtre. Il vous suffit donc de mettre à jour Xcode de ces plantages pour vous. C'est donc la documentation pour les textes. Vous pouvez voir qu' il s'agit d'une structure. Et si vous faites défiler jusqu'au bas, je vais ignorer tout ça parce que je veux juste vous montrer qu'il est conforme à deux protocoles. Mais ce qui nous intéresse c' est qu'il est conforme au protocole. Très bien, une autre chose que je tiens à souligner , c'est que cela, rappelez-vous cela dès le début. Il s'agit d'un modificateur. Et maintenant, pour vous, cela doit paraître assez familier, n'est-ce pas ? Parce qu'on dirait que nous appelons une méthode. C'est une notation par points ici. Nous sommes en train de créer une instance de la structure textuelle. Ensuite, nous appelons la méthode de remplissage sur cette instance. Voyez si je l'ai mis sur la même ligne. Cela peut vous paraître un peu plus familier. Très bien, j'espère que les points commencent à se connecter. Aucun jeu de mots n'est prévu. Bon, donc pour relier cela à la leçon précédente sur les structures où je vous ai montré comment déclarer une structure. Nous avions quelques sections différentes, n'est-ce pas ? En haut de la page, nous déclarerions nos propriétés. Et en fait, cette propriété corporelle est considérée comme un droit de propriété. Mais il contient également notre code de vue. C'est donc là que va notre code de vue. Et ensuite, ici, nous déclarerions les méthodes de cette structure. Ok, donc je pense que vous comprenez que cette structure appelée vue de contenu représente la vue principale ou l'écran principal de cette application. Mais n'avons-nous pas dit que les structures elles-mêmes ne font vraiment rien. Vous devez en créer une instance pour qu'elle fonctionne. Eh bien, où créons-nous une instance de vue de contenu ? Pour cela, nous devons remonter jusqu'au point d'entrée de l'application, c' est-à-dire ici. Vous pouvez donc voir que c'est aussi une structure et le nom de cette structure est le nom de votre projet et il est conforme à un protocole appelé application. Examinons donc l'aide rapide et voyons quoi consiste ce protocole. créant une application en déclarant une structure conforme au protocole de l'application, implémentez la propriété body calculée requise pour définir le contenu de l'application. Nous avons maintenant une autre propriété calculée par le corps. Je vais sauter une partie de cette scène dans le groupe Windows. Je tiens à souligner que c'est ici que nous créons une instance, cette structure de vue de contenu. Voyez-vous comment tout va bien ensemble ? De plus, revenons à la vue du contenu et laissez-moi vous montrer autre chose. Donc, pour cela, je vais ouvrir la toile à nouveau. Et je vais reprendre l'aperçu. Regardez cette structure ici. C'est ce qui alimente l' aperçu que vous voyez ici. Cette structure n'est pas vraiment utilisée dans votre application. C'est uniquement pour un aperçu dans le Canvas ici. Il est donc conforme au protocole du fournisseur de prévisualisation. Et il y a une propriété appelée prévisualisations, mot clé statique ignorer. Pour l'instant, nous allons expliquer cela dans une prochaine leçon. Et ici, vous pouvez voir qu'une instance de votre structure de vue de contenu est en cours création et c'est en fait ce qui est affiché ici. En fait, je peux appliquer des modificateurs à cette instance et cela va changer ce que nous avons ici. D'accord, donc je peux utiliser la notation par points pour appeler des modificateurs, qui maintenant, vous savez, ne sont que des méthodes, non ? ce point de vue ou de cette instance. En fait. Au lieu de le faire, pourquoi ne pas utiliser la méthode visuelle et voir comment cela modifie le code ? Donc, 10, j'ai un aperçu de ce changement. En fait, je vais changer le schéma en mode sombre. Vous pouvez donc voir qu'il ajoute un modificateur à cette instance. Changeons également l' appareil en iPod touch. Vous pouvez voir qu'il ajoute un autre modificateur appelé périphérique de prévisualisation. Que se passe-t-il si je crée un autre aperçu ? Parce que vous pouvez cliquer sur ce bouton ici, et il va créer un autre aperçu ici. Vous pouvez voir ce qu' il advient du code. Eh bien, il a créé une autre instance de vue de contenu et il a ses propres modificateurs. Maintenant, il est regroupé par un conteneur, un conteneur appelé groupe, que nous n'avons pas encore vraiment couvert, mais à l'avenir, nous saurons simplement qu'il regroupe les vues. Cette instance de vue de contenu est donc pour celle-ci ici, et cette instance est celle-ci ici. Voyez-vous, je peux changer ce schéma en lumière. Et vous pouvez voir que cela change ici. Et je peux changer cet appareil en iPhone 12. Et les changements qui modifient là-bas. Ce sont donc des instances indépendantes. J'étais beaucoup à prendre en compte et c'est pourquoi je ne vous recommande jamais de mémoriser quoi que ce soit. Plus vous vous entraînez, tôt cela deviendra une seconde nature pour vous. Faisons un récapitulatif rapide, n'est-ce pas ? Vous avez appris comment créer des instances de votre structure. Vous avez appris à utiliser la notation par points pour accéder aux méthodes et aux propriétés de vos instances. Vous avez également appris les niveaux d'accès. Vous pouvez donc contrôler quelles propriétés et quelles méthodes sont accessibles avec la notation par points. Enfin, vous avez vu comment tous ces concepts sont liés à une application d' interface utilisateur rapide dans Xcode. Maintenant, dans les leçons suivantes, nous allons revenir à notre jeu de cartes de guerre , prendre toutes ces nouvelles connaissances rapides et donner vie à ce jeu de cartes de guerre. Dans la leçon suivante, je vais vous montrer comment utiliser l'élément bouton pour gérer l'interaction de l'utilisateur. Très bien, je vous y verrai. 11. 10 : touches SwiftUI: Bonjour et bienvenue. Dans les quelques leçons précédentes, vous avez appris les bases de la programmation Swift. Et je vous ai montré comment ces concepts s'appliquaient à votre projet Xcode. Revenons maintenant à l'interface utilisateur et aux vues Swift. Plus précisément aujourd'hui, je veux parler de la vue bouton. Plongeons directement dedans. accord, donc j' ai un tout nouveau projet Swift ici ? Je pensais que nous examinerions ensemble la création quelques instances de boutons dans un nouveau projet de quelques instances de boutons dans un nouveau projet avant de revenir au jeu de travail dur pour utiliser l' instance de bouton là-bas. Nous allons donc supprimer cette vue texte ici. Dans la création de certains cas, un bouton est une structure semblable à celle de ce texte. Et nous devons créer une instance de boutons. En d'autres termes, nous devons instancier un bouton et ce n'est qu'une autre façon de le dire. Allons de l'avant et tapez le bouton, puis ouvrons un support arrondi gauche. Et cela va faire apparaître notre menu de saisie semi-automatique. Il existe plusieurs méthodes d' initialiseur différentes que nous pouvons utiliser pour créer une instance de bouton. Et ces méthodes d'initialiseur, n'oubliez pas, ne sont que des façons différentes de créer une instance lors de la transmission de certaines données. Deux des plus courantes que vous allez utiliser est celle-ci ici, où vous passez une chaîne. Et ce protocole de chaîne de type de données signifie simplement tout ce qui est conforme à ce protocole de chaîne et qu'un morceau de texte le fait. Celui-ci vous permettra de simplement passer un morceau de texte à utiliser comme étiquette de bouton. Et cela vous permettra également de transmettre un bloc de code à exécuter lorsque vous appuyez sur ce bouton. Examinons donc ces paramètres plus en détail. Ce premier paramètre pour l'étiquette du bouton est donc assez simple. Ici, il suffit de passer un morceau de texte. Je vais appeler ce bouton, cliquez sur moi. Et si nous effectuons une mise à jour, notre aperçu fera n'importe quoi avant de spécifier le deuxième paramètre. Le type de données de ce paramètre d'action est quelque chose que vous n'avez pas encore vu. Mais ça ressemble à une signature de fonction sans le nom de la fonction, non ? C'est ce qu'on appelle une fermeture. termes simples, vous pouvez le considérer comme un bloc de code ou comme une fonction sans le nom de la fonction, vous transmettez un bloc de code en tant que paramètre. Lorsque le bouton est activé, il exécute ce bloc de code. Encore une fois, c'est ce qu'on appelle une fermeture. Voyons donc comment spécifier la fermeture en tant que paramètre. Maintenant, l'une des choses les plus simples que vous puissiez faire est mettre en surbrillance ce paramètre et de cliquer sur Entrée. Et Xcode va automatiquement ouvrir une fermeture pour que vous puissiez saisir votre bloc de code. Mais je ne vais pas le faire maintenant parce que je veux passer par les étapes et vraiment vous montrer ce que vous spécifiez exactement. Et puis à la fin, je vais vous montrer ce qui se passe lorsque vous appuyez sur Entrée et laissez Xcode ouvrir la fermeture pour vous. Indiquons cette fermeture manuellement pour l'instant. Très bien, donc le type de fermeture auquel cela s'attend est le type le plus simple que vous puissiez voir. Il n'accepte aucun paramètre. Ces deux supports ici, ces deux supports arrondis. Il s'agit d'une liste de paramètres, comme vous le feriez lorsque vous déclarez une fonction. Mais il est vide, il n' y a donc pas de paramètres. Ensuite, vous verrez un tiret suivi d'un symbole supérieur à. Et vous savez que cela signifie le type de retour, n'est-ce pas ? Et ça revient nul. Le vide ne signifie rien. Il ne retourne donc rien et n' accepte rien. C'est très simplement un bloc de code. Très bien, maintenant que vous connaissez le type de fonction alors il s'attend, Allons de l'avant et spécifiez-le. Je vais donc supprimer ça. Et je vais ouvrir une paire de supports bouclés. Et je n'ai pas besoin de retourner quoi que ce soit. Je n'ai pas besoin de spécifier de paramètre. C'est tout simplement le bloc de code. Vous pouvez donc le spécifier avec juste un ensemble de crochets bouclés. Et entre ces crochets bouclés, vous mettez toutes les instructions de code que vous voulez. Je vais donc juste imprimer Hello World. Et c'est votre bouton complété. Lançons ce projet et voyons ce qui se passe. Ok, donc nous avons été au milieu qui dit « cliquez sur moi ». Quand je tape dessus, il tourne la fermeture. Il exécute le code dans la fermeture. Et vous pouvez voir qu'en bas dans la console, il imprime bonjour monde chaque fois que je clique sur ce bouton. Bon, revenons maintenant à notre projet Xcode car ce n'est qu' une façon d' instancier un bouton. Je vais ajouter un commentaire ici et appeler cette instance de bouton avec fermeture. D'accord ? Et puis je vais aussi mettre ça dans une pile V. En fait, je vais vous montrer un raccourci et façon cool de le faire. Je vais le mettre dans la pile parce que je voulais vous montrer quelques autres façons de créer des boutons. Nous allons donc créer deux boutons ensemble. Allez-y et commandez cliquez sur ce bouton et vous pouvez simplement choisir Embed et v stack. Fais ça. Il met l'élément dans la pile pour vous, bien qu'il n'ait pas réussi à déplacer mon commentaire là-bas. Mettons ça juste là. Très bien. Nous avons donc un bouton et je veux vous montrer le même bouton, mais avec une main courte, il y a quelque chose appelé la fermeture arrière. Permettez-moi de vous montrer ce que cela signifie. Donc, instance de bouton avec fermeture de fin, je vais copier et coller le bouton que nous venons de déclarer et en créer une autre copie. Donc, si dans la liste des paramètres, le dernier paramètre attend une fermeture, il y a un raccourci. Et comment cela fonctionne, c'est que vous retirez ce dernier paramètre de la liste des paramètres et que vous placez simplement la fermeture après l'appel de méthode. Laissez-moi vous montrer ce que je veux dire. Donc, dans cette liste de paramètres, cette fermeture est ce dernier paramètre, n'est-ce pas ? Il s'agit donc d'un candidat privilégié pour un raccourci de clôture. Je prends la fermeture elle-même. Je vais donc couper ça de la liste des paramètres. Et je vais simplement ajouter un espace après le support arrondi de fin et ensuite coller la fermeture comme ça. Ensuite, je peux retirer l' étiquette de périmètre ou l'étiquette d'argument de cette liste de paramètres comme ça. Et ces déclarations à deux boutons sont exactement la même chose. C'est juste qu'ils sont écrits différemment. L'un spécifie la fermeture à l'intérieur la liste de paramètres et l'autre le spécifie à l'aide d'une fermeture de fin. Et c'est pourquoi je voulais vous montrer cela manuellement au lieu de laisser Xcode ouvrir une fermeture pour vous. Parce que lorsque vous laissez Xcode le faire, il va reconnaître que ces paramètres de fermeture, le dernier, et cela va le transformer en une fermeture de fin pour vous. Je suis automatique, alors laissez-moi vous montrer ça. Si je déclare un autre bouton, utilisons le même bouton. Cliquez sur moi, puis j'appuie sur ce paramètre d'action, soit double-cliquez dessus, soit j'appuie sur Entrée et laisse Xcode ouvrir la fermeture. Il le transforme automatiquement en fermeture arrière. J'ai donc pensé que ce serait vraiment déroutant pour vous si vous n'aviez jamais vu ça auparavant. Et donc, au moins maintenant, vous savez ce qu'est une fermeture de fin et pourquoi, vous savez, Xcode le fait pour vous. Ok, donc c'est juste créer un type de bouton. Ces deux façons de créer des boutons où vous n'avez qu'un morceau de texte comme étiquette. Mais que se passe-t-il si vous vouliez que votre bouton soit une image, une icône ou quelque chose comme ça, pas seulement un simple morceau de texte. Eh bien, il existe une autre méthode d' initialiseur pour le bouton que nous pouvons utiliser pour cela. Jetons donc un coup d'œil à cette instance de bouton avec vue d'étiquette. Allons de l'avant et tapez le bouton, ouvrez un support. Et maintenant, jetons un coup d'œil à cette autre méthode d'initialiseur avec une action et un paramètre d' étiquette, crée un bouton qui affiche une étiquette personnalisée. Et vous pouvez voir dans la liste des prédateurs que le premier m'a permis de revenir à ce menu de saisie semi-automatique. En regardant cette liste de paramètres, vous pouvez maintenant voir que ce paramètre de fermeture d'action est le premier paramètre, puis que le deuxième paramètre est une étiquette. Maintenant, pour ce paramètre d'étiquette, vous pouvez renvoyer n'importe quelle vue que vous souhaitez représenter votre bouton. Nous allons donc choisir cette méthode d'initialisation. Vous pouvez voir la fermeture de l'action ici, si je double-clique dessus, elle ne se transformera pas en fermeture de fin. Et la raison en est qu'il ne s'agit pas du dernier paramètre de la liste des paramètres. Cela ne peut donc pas être transformé en fermeture de fin. Ok, donc quand ce bouton est à nouveau appuyé, je vais juste imprimer Hello World dans la console. Mais pour l'étiquette, vous remarquerez que j'ai une certaine liberté de préciser le type de vue que je veux renvoyer. Ici, il suffit de retourner un TextView avec un simple morceau de texte appelé bouton. Mais je peux, je peux retourner une image B, par exemple, je pourrais retourner une pile de vues différentes. Vous pouvez retourner tout ce que vous voulez. Permettez-moi de reprendre l' aperçu ici pour que vous puissiez voir les différents boutons que nous avons déclarés. D'accord ? Donc ce que je vais revenir ici est peut-être moins de retour dans chaque pile. Et je vais renvoyer un texte indiquant Modifier. Et je vais également retourner une image devant ça. Et pour cette image, je vais préciser que je n'ai pas ajouté d'images à notre bibliothèque de ressources, mais je vais utiliser un symbole SF. Maintenant, nous n'avons pas encore passé par les symboles SF. Nous le ferons dans une prochaine leçon. Cependant, les symboles SF sont excellents. Parce qu'il s'agit essentiellement d'un jeu d'icônes fourni avec Xcode que vous pouvez simplement utiliser dans vos applications. Et ce sont des caractéristiques très spéciales de ces symboles SF que nous allons suivre dans une prochaine leçon dans ce cours, il existe une application Mac gratuite appelée symboles SF que vous pouvez télécharger là où vous peut parcourir tous les différents symboles disponibles gratuitement. Par exemple, je vais juste utiliser ce crayon. Chacun d'entre eux a un nom que vous pouvez simplement spécifier et vous pourrez l'utiliser. Ainsi, pour l'image, l'initialiseur à utiliser, si vous souhaitez utiliser S de symboles, est appelé nom système. Ensuite, vous spécifiez le nom que vous avez vu sous l'icône. crayon. Je vais juste mettre un crayon juste là et vous pouvez voir que l'icône apparaît. Très bien, maintenant lançons cette application dans le simulateur et regardons ce qui se passe. Ok, donc je peux taper celle-ci, dit Hello World Cup, celle qui dit Hello World. Enseigné à celui-ci aussi « Helloworld ». Ce sont les fermetures que j'ai spécifiées pour tous les boutons. Très bien, vous savez maintenant comment spécifier un simple bouton avec uniquement le texte de son étiquette. Vous savez comment spécifier un bouton dans lequel vous pouvez utiliser n'importe quelle vue comme bouton. Nous allons revenir à notre jeu de cartes de guerre maintenant et transformer cette image du bouton Deal en un véritable bouton. Bon, donc maintenant j' ai le jeu de cartes de guerre sur lequel nous avons travaillé jusqu'au début, était-ce moins de quatre ou cinq ? Mais c'est là que nous en sommes arrivés. Et si vous vous en souvenez, nous avions utilisé une image pour ce bouton Deal. Et c'est le code de vue pour cela. Et vous pouvez voir que ce n'est qu'une image. Maintenant, vous savez comment transformer cela en bouton. Je veux donc que vous mettiez en pause la vidéo dès maintenant et que vous l'essayiez vous-même, dans votre propre projet, comme un petit exercice. Une fois que vous l'avez essayé vous-même. Ou si vous venez de rester coincé, continuez à lire cette vidéo et nous le ferons ensemble. Bon, essayons ensemble. Je vais donc créer un peu d'espace ici. Et nous allons déclarer un bouton. Bouton à l'aide. Ouvrons les crochets et choisissons cette méthode d'initialiseur d' étiquette d'action. Maintenant, dans l'action, nous allons simplement ouvrir ce bloc de code, mais nous n' allons pas encore vraiment faire quoi que ce soit. Nous le ferons dans la prochaine leçon. Mais pour l'étiquette à l'intérieur d'un bouton de texte, étiquetez et supprimez cette vue. Et je vais simplement déplacer notre image avec l'accord dans l' étiquette de notre bouton. Et juste comme ça, on ne voit pas vraiment de changement visuel. Cependant, si vous exécutez cela dans le simulateur, vous remarquerez que vous pouvez appuyer dessus. C'est un bouton naturel. Une autre façon, si vous ne voulez pas lancer votre simulateur, c'est que vous pouvez cliquer sur ce bouton ici pour l'aperçu en direct et je commence absolument. Oui. Ensuite, vous pouvez aller de l'avant et je dois appuyer sur Resume là-dessus. D'accord. Vous pouvez le voir maintenant dans le Canvas, car j'ai activé Live Preview, je peux tester le bouton. Il s'agissait de votre première introduction à la gestion des interactions des utilisateurs dans une application d'interface utilisateur rapide. Les pièces sont vraiment en train de se réunir. Faisons un récapitulatif rapide. Vous avez appris à instancier des boutons, et c'est juste une façon sophistiquée de créer des instances de boutons. Vous avez appris les fermetures et comment ce ne sont que des blocs de code comme des fonctions sans nom de fonction. Et ensuite, vous avez appris les fermetures à la traîne, qui ne sont qu'un raccourci. Et juste pour vous rappeler une fermeture en fin de compte est lorsque vous avez une fermeture comme paramètre dans un appel de méthode. Ensuite, il est retiré de cette liste de paramètres et est placé à la fin de cet appel de méthode. Dans la leçon suivante, je vais vous montrer un concept clé d'interface utilisateur Swift qui vous permettra modifier les données et de faire en sorte que l'interface utilisateur détecte automatiquement le changement, puis mette à jour l'interface utilisateur elle-même. Très bien, je vous verrai dans la prochaine leçon. 12. 11 : Propriétés de l'État: Bonjour et bienvenue. Au cours de la dernière leçon, vous avez appris le bouton Swift UI et comment gérer l'interaction des utilisateurs. Eh bien, pour modifier les données et ensuite refléter ce changement dans l'interface utilisateur, nous devons en savoir plus sur les propriétés de l'état et c'est ce que cette leçon concerne. Plongeons directement dedans. Très bien, j'ai donc voulu revoir cette vue, mettre à jour le diagramme du cycle de vie pendant une seconde. Vous souvenez-vous quand nous avons montré un lien entre les données et le code de vue ? Eh bien, allons-y et faisons cela avec notre projet de jeu de cartes de guerre. Quels types de données avons-nous dans ce projet ? Eh bien, si vous regardez l'interface utilisateur ici, vous pouvez voir que nous devons garder une vous pouvez voir que nous devons garder trace de la carte du joueur, la carte dont dispose le processeur, puis des scores du joueur et du processeur. Il s'agit donc de quatre données. Créons quatre propriétés dans notre structure de vue de contenu pour représenter ces quatre éléments de données. Donc, juste en dessous du crochet bouclé d'ouverture de la vue de contenu, je vais aller de l' avant et déclarer carte du premier joueur var CPU L2 est égale. Et je vais juste imiter les voitures que nous avons là. Nous allons donc avoir une carte aussi. Et je vais vraiment me laisser juste, je vais le changer. Nous pouvons mettre autre chose pour commencer. Et puis la carte CPU est égale, disons la carte neuf. Ensuite, représentons le score du joueur. Et il va s' agir d'un entier. Commençons par 0 aussi. score du processeur est égal à 0. Très bien, nous avons maintenant ces quatre propriétés qui représentent l'état du jeu. Ces quatre propriétés sont notre source de vérité car elles représentent l'apparence de l'interface utilisateur. Maintenant, comment reflétons-nous ces éléments de données dans notre interface utilisateur ? Eh bien, nous devons référencer ces propriétés à l'intérieur de notre code de vue. N'oubliez pas que ces propriétés déclarées dans l'étendue de cette structure signifient qu'elles peuvent être référencées dans n'importe quelle méthode de la même structure, ainsi que dans ce bloc de code pour notre propriété corporelle calculée. Donc, si nous cherchons ici cette première carte qui est ici, et que nous avons codé en dur une chaîne là-dedans, disant carte à. Au lieu de coder en dur une chaîne, mettons une valeur dynamique en spécifiant la propriété de notre carte de joueur. Nous allons donc mettre à jour notre aperçu automatique et simplement pour nous assurer que cela fonctionne et que tout va bien. Et vous pouvez voir que cette carte change la carte cinq car c'est la valeur de la propriété de la carte joueur. Faisons la même chose pour la carte CPU au lieu de coder en dur la carte trois ici, mettons la propriété de la carte CPU. Vous voyez ce changement. Et ici, pour le score au lieu d'une chaîne de 0, mettons notre propriété score de joueur. Vous allez maintenant remarquer une erreur ici. Il n'y a pas de correspondance exacte dans l'appel à l'initialiseur. Et c'est parce que pour initialiser une instance de texte, nous devons transmettre une chaîne de données. Mais le joueur score, rappelez-vous, s' agit d'une propriété int, donc elle contient des données int. Mais comment nous pouvons contourner cela, c'est que nous pouvons transformer notre int en une chaîne. Eh bien, au moins la représentation par chaîne d'un nombre. La façon dont nous faisons cela est que nous pouvons créer une nouvelle instance de chaîne et simplement passer dans, nous pouvons passer l'entier. Celui-ci serait donc un score de joueur. Et nous allons faire la même chose pour le score du processeur. Nous allons créer une nouvelle chaîne et nous allons passer le score du processeur. Et comme cela, nos quatre éléments de données sont représentés dans le code de vue et, à son tour, dans l'interface utilisateur. Maintenant, tout ce que nous avons à faire, c'est que lorsque l'utilisateur appuie sur le bouton, nous pouvons mettre à jour ces données dans les propriétés et faire changer automatiquement l'interface utilisateur, n'est-ce pas ? Eh bien, pas si vite. Pourquoi ne pas aller de l'avant et essayer de le faire et regardons ce qui se passe. Dans la dernière leçon, nous avions donc changé cette image de transaction en un bouton réel. le moment, la fermeture de l'action est vide. Mettons du code à l'intérieur cette fermeture d'action pour notre bouton. Ici, nous allons mettre à jour les cartes et nous allons également mettre à jour le score. Maintenant, si vous essayez de mettre à jour la propriété comme ici, essayons de mettre à jour la carte joueur égale à la carte 11. Vous verrez que vous ne pouvez pas. Xcode se plaindra et dira, ne peut pas attribuer à la propriété soi est immuable. Désormais, soi fait référence à l'instance d' une vue de contenu et immuable signifie qu' elle ne peut pas être modifiée. Vous voyez que les instances sont des types de valeurs et , en raison de leur allocation en mémoire, elles ne peuvent pas être modifiées. Maintenant, je sais que cela n'a absolument aucun sens pour vous en ce moment, mais je vous promets, dans une prochaine leçon, que nous en parlerons et cela aura tout à fait logique pour l'instant, juste comprenez que nous ne pouvons pas modifier la valeur de notre propriété à moins d' utiliser un wrapper de propriété. Un wrapper de propriétés est un mot-clé devant notre déclaration de propriété qui modifie son comportement. Plus précisément, je parle de l'enveloppe de propriété de l'État. Revenons donc à nos déclarations de propriétés et voyons comment il a utilisé ce wrapper de propriétés d'état pour modifier les comportements de ces propriétés afin que nous puissions modifier les valeurs. Tout ce que nous avons fait, c'est devant le mot-clé var de notre déclaration de propriété, nous allons écrire à State. Et en ajoutant ce mot clé à l'état, cela va indiquer que cette propriété de carte de joueur est en fait une propriété d'état et cela va nous permettre de mettre à jour la valeur qu'elle contient. Allons donc de l'avant et mettons cet emballage immobilier devant les quatre de notre propriété afin qu'ils soient tous des propriétés de séjour. Les propriétés de l'État présentent deux caractéristiques particulières. La première est que vous pouvez modifier les données qui s'y trouvent. Nous en avons déjà parlé. Mais la deuxième est qu' à l'intérieur du code de la vue, toute référence aux propriétés de l'état, elle sera notifiée des modifications des données, puis votre interface utilisateur sera automatiquement mise à jour en fonction de ces nouvelles données. Allons donc, passons à la fermeture de l'action de notre bouton et essayons de mettre à jour certaines de ces propriétés d'état. Et regardons l'interface utilisateur changer. Bon, donc nous y voilà. Et comme vous pouvez le constater, l'erreur a disparu. Et je peux mettre la carte CPU égale à la carte 12. Et nous allons également mettre à jour le score. C'est aussi bien pour ça. Je vais donc dire que le score des joueurs est égal à un. Cela signifie l' incrémenter d'un. score du processeur plus est égal à un. Et nous allons sauver ça. Ensuite. Allons de l'avant et faisons un aperçu en direct, pour voir si nous pouvions le faire. Très bien, il s' agit donc d'un aperçu en direct. Lorsque je clique sur ce bouton, il va fermer la fermeture ici. N'était-ce pas cool ? Ainsi, lorsque j'ai appuyé sur ce bouton, nous avons mis à jour les données dans les propriétés de l'état. C'est vrai ? Et parce que dans notre code de vue, il fait référence à ces propriétés d' état, ils ont été notifiés et l'interface utilisateur a été restituée pour afficher les nouvelles données. Maintenant, le problème est que chaque fois que nous appuyons sur le bouton, je veux dire, il incrémente le score, ce qui est cool, mais les cartes du joueur ne sont pas randomisées. Ce que nous pouvons faire, c'est que nous pouvons utiliser la méthode aléatoire de l'instructeur, générer un nombre aléatoire. Ensuite, nous allons ajouter ce numéro aléatoire à l'arrière de la chaîne de carte pour générer une nouvelle carte. Jetons donc un coup d'œil à la façon dont cela fonctionnerait. Générez un nombre aléatoire compris entre deux et 13. Parce que si vous regardez la bibliothèque de ressources, nous avons la carte jusqu'à la carte 14 en fait. Je voudrais donc probablement en générer deux à 14. Je vais donc dire que joueur rand est égal à int point aléatoire. Et cette méthode nous permet de spécifier une plage. Vous pouvez spécifier une plage avec l'extrémité inférieure de la plage, point, le point, le point, puis l'extrémité supérieure. Et cela devrait être inclusif, si je m'en souviens bien. Et nous verrons dans une seconde. Et nous allons en déclarer un autre. marque CPU est égale à un point aléatoire en deux points, point point point et 14. Et puis ce que nous allons faire, c'est au lieu de spécifier le numéro à l'intérieur de la chaîne codée en dur, je vais juste spécifier la carte. Et puis je vais ajouter le joueur Rand et ajouter CPU Rand. Maintenant, il se peut que nous ne soyons pas en mesure de le faire et comme prévu, nous ne pouvons pas le faire. Parce que, comme vous le savez plus tôt dans cette leçon, ce que nous essayons de faire ici, c'est que nous essayons d' ajouter un entier à une chaîne. Et ce que nous devons faire, c'est convertir d'abord cet entier en chaîne et obtenir la représentation de chaîne de cet entier. Et là, cela devrait être dynamique maintenant. Jetons donc un coup d'œil à cela et voyons si c'est ce que nous attendons. C'est parfait. Les cartes sont aléatoires. Ce qui n'est pas parfait, c'est le score en bas. Nous devons encore déterminer quel camp gagne, puis incrémenter le score approprié. Je vais donc commenter ces deux morceaux de code parce que nous ne voulons pas simplement l' incrémenter d'un à chaque fois. Avant de terminer cette leçon, je tiens vraiment à souligner à quel point ce cadre est puissant. Ce que nous faisons ici, c'est appuyer sur un bouton. Il exécute cette fermeture et nous modifions la valeur de cette propriété d'état. Et parce que la propriété state est référencée à l'intérieur de notre code de vue ici, détecte ce changement de données, puis restitue ce que nous voyons dans l'interface utilisateur. Et cela se produit automatiquement. Tout ce que nous faisons, c'est modifier les données. Dans le passé, avec le kit d'interface utilisateur, ce système n'existait pas. Ce que nous devrions plutôt faire, c'est mettre à jour les données, comme nous le faisons ici. Mais nous devrions également mettre à jour chaque élément de vue manuellement et lui dire ce qu'il faut afficher. nous faudrait donc obtenir une référence à cette image, puis générer une image à puis générer une image partir de ce nom de ressource à partir de la bibliothèque de ressources, puis définir cette ressource image sur cette ImageView. Et nous devrions aussi le faire pour celui-là. Ensuite, nous devrions le faire pour le texte ici et les étiquettes. Donc, tout ce que nous devions faire manuellement. Maintenant, tout ce que nous avons à faire est de mettre à jour les données de n'importe quel élément d' interface utilisateur lié à ces propriétés d'état détecter le changement et les mettre à jour automatiquement. Désormais, par définition, une propriété d' état est un élément de données dont dépend cette vue de contenu. Ce n'est pas quelque chose dont les autres points de vue se soucieraient ou dépendent. Par conséquent, nous pouvons ajouter le mot clé privé et contrôler simplement le niveau d'accès à ces éléments de données afin qu'ils ne soient accessibles que dans le contexte ou la portée de cette structure de vue de contenu. Étant donné que seule cette vue de contenu dépend de ces propriétés d'état. Très bien, on est presque à la ligne d'arrivée. Il suffit de comparer les valeurs de la carte, puis mettre à jour les propriétés de l'état de score de manière appropriée. C'est encore un récapitulatif rapide. Vous apprenez maintenant comment référencer des propriétés dans votre code de vue. Nous avons appris l'enveloppe de propriété de l'État. Nous avons également appris une nouvelle terminologie notamment des valeurs codées en dur, des valeurs dynamiques et immuables, ce qui signifie qu'elle ne peut pas être modifiée. Dans la leçon suivante, nous allons examiner les conditions et comment comparer les valeurs à l'aide d'instructions if. Très bien, je vous y verrai. 13. 12 : Si les déclarations: Bonjour et bienvenue. Dans cette leçon, nous allons parler d'une construction rapide qui va vous permettre d'écrire du code qui dit si cela, alors que maintenant c'est facile à utiliser, mais une syntaxe puissante va vous permettre exprimer la logique à un tout nouveau niveau. Très bien, cela dit, plongeons directement dans le jeu. Très bien, j'ai un tout nouveau terrain de jeu ici. Je veux vous montrer comment les déclarations fonctionnent avant appliquer à notre projet de jeu de cartes de guerre. Tout ce que j'ai ici sont quelques constantes, en fait, plus d'un couple, j'ai un tas de constantes avec des valeurs simples différentes, des entiers, des chaînes et des valeurs booléennes. Et je veux utiliser ces constantes pour démontrer comment fonctionnent les instructions IF. Encore une fois, l'instruction if est très puissante car elle vous permet d' exécuter du code en fonction de certaines conditions. Je vais donc utiliser ces constantes comme conditions. Jetons d'abord un coup d'œil à une déclaration IF de base, déclaration. Je vais d'abord le taper, puis je vais expliquer chacune des parties. Vous commencez donc par le mot-clé if, puis vous mettez une sorte de valeur ou de condition qui évalue un résultat booléen. Donc, je vais juste mettre l'ie. Et je vais ouvrir une paire de supports bouclés. Et ici, je vais juste imprimer Hello World, non ? Et c'est en soi la déclaration la plus simple. Comme vous pouvez le voir, commence par le mot-clé if , puis suivi d'une valeur booléenne ou d'une sorte d'instruction de code qui évalue un résultat booléen, suivi d'un ensemble de crochets bouclés. Et à l'intérieur des crochets bouclés, vous mettez le code que vous voulez exécuter. Si la condition est vraie, dans ce cas, il est faux, n'est-ce pas ? Il ne va donc pas exécuter ce code parce qu'il n' est pas vrai. Cependant, si je change ce E et que je teste F à la place, alors ce code s'exécuterait car il est évalué à vrai. Maintenant, ça peut devenir assez fou parce que vous pouvez enchaîner ces choses ensemble. Donc, l'une des façons de les enchaîner est d'utiliser la fin, et c'est une esperluette double. Laissez-moi juste l' indiquer là. Et comment cela fonctionne, si vous écrivez f double esperluette, disons g. Ensuite, maintenant vous testez les deux conditions et parce que vous utilisez fin, les deux conditions doivent être vraies pour que ce code doit être exécuté. Donc, dans ce cas, parce que f et g sont à la fois vrais, vrais et vrais signifie vrai. OK ? Et un autre exemple est que vous pouvez utiliser ou. Ce sont donc des tuyaux doubles. La clé des tuyaux, beaucoup de débutants, ils ne savent pas trop comment appuyer dessus. Sur le clavier de mon Mac, cette touche se trouve juste sous la touche Supprimer et juste au-dessus de la touche de retour, et c'est le caractère de la barre oblique inverse. Je dois donc maintenir la touche Maj enfoncée et je dois appuyer sur la barre oblique inverse pour obtenir ce tuyau. Donc, les doubles tuyaux peuvent être différents sur votre clavier. Il s'agit d'OR lorsque vous utilisez un bloc opératoire au lieu d'une fin et que vous vous connectez ensemble à de telles conditions. Vous dites que si l'une ou l' autre condition est vraie ou si la condition deux est vraie, exécutez ce code. Par exemple, f et g sont tous deux vrais. Donc, cela va certainement exécuter ce code. Si je fais f et e, c'est faux. N'oubliez pas que ce code sera toujours exécuté car au moins une des conditions est vraie. Encore une fois, cela peut devenir assez fou parce que je peux continuer à changer, je peux continuer à faire ou même y mettre fin. Alors, faisons-le. Mais ce genre de choses devient déroutant maintenant parce que cela peut être lu de deux façons différentes. Est-ce E et G ? Et puis, ou F ? Ou s'agit-il de F ou E et G ? Ils voient ce que je dis. Donc, si je mets des crochets autour de ceux-ci, cela pourrait avoir plus de sens. Si je fais ça. Cela signifie que si f est vrai ou si E et G sont vrais, exécutez le code. Cependant, je pourrais aussi mettre des crochets autour de cela. Si F ou E est vrai et que G est vrai, exécutez le code. Vous pouvez donc utiliser des crochets, crochets arrondis pour vous aider à différencier les conditions à évaluer en premier. Très bien, jusqu'à présent, nous n'avons utilisé que les valeurs booléennes, mais il y en a encore plus. Je veux vous montrer la syntaxe d'une instruction if avant de passer à l'examen des entiers et des chaînes. Ainsi, avec l'instruction if, vous pouvez également étendre cette instruction if pour tester une autre condition, car il ne s'agit que de tester une condition, n'est-ce pas ? Vous pouvez ensuite suivre le crochet bouclé de fermeture du premier bloc de code, n'est-ce pas ? Sinon, si, puis vous écrivez une autre condition. Donc, disons autrement. E, alors mettez cela d'autre, si G, alors faites-le. Ce qui va se passer ici c' est qu'il va tester cette condition. Si cela est faux, il va ensuite tester le suivant et il va descendre en cascade. Si c'est faux, il va passer à la suivante. À tout moment, pendant qu'il vérifie ces conditions. Si l'un d'eux est vrai, il va aller dans cette branche. Il va exécuter ce bloc de code et il va sauter le reste. Cela vous permet donc de tester, dans ce cas, trois branches ou voies différentes et d'en choisir une seule, la première étant vraie. Mais en gardant à l'esprit qu'il vérifie ces branches à partir de ces conditions, je veux dire, de haut en bas. Donc, le premier qui frappe ça est vrai. C'est la branche qui va descendre. Enfin, il y a aussi une autre caractéristique des déclarations if. Il peut y avoir une sorte de prise de toute branche. Si aucune des conditions ci-dessus n'est vraie, vous pouvez avoir un bloc de code autre. Ce bloc de code s'exécute donc à la toute fin. Si aucune des conditions n'était vraie et qu'elle n'a exécuté aucune de ces branches. Donc, c'est un peu comme si vos prises étaient toutes sécurisées. Et encore une fois, ils sont tous facultatifs. Vous pouvez en avoir un autre, vous ne pouvez pas avoir d'autre si. Vous ne pouvez avoir personne d'autre et vous pouvez simplement en avoir un autre. Donc, si cette condition n'est pas vraie , elle va juste arriver ici. Très bien, donc cette affirmation si elle est vraiment puissante. La syntaxe est vraiment simple à comprendre, mais elle vous offre beaucoup de flexibilité dans les instructions de code à exécuter en fonction de ce qui instructions de code à exécuter se passe à l'intérieur de votre application. Ok, donc je vais annuler cela que nous puissions voir un peu comme une déclaration complète si ici. Et je vais vous montrer comment des entiers ou des chaînes peuvent être évalués en tant que conditions. Dans l'exemple jusqu'à présent, je viens de référencer des valeurs booléennes, et c'est simple. Mais en travaillant avec d'autres types de données tels que des entiers et des chaînes, vous devrez peut-être les utiliser dans une instruction réelle afin d'évaluer afin d'obtenir un résultat booléen , n'est-ce pas ? Par exemple, au lieu de g, qui n'est qu'une valeur booléenne true, utilisons a. Pour évaluer un résultat booléen, je dois utiliser un opérateur de comparaison, n'est-ce pas ? Je peux donc utiliser plus que si a est supérieur à 0, non ? Cela peut être considéré comme vrai ou faux. Et en plus de plus, voici quelques autres que vous pouvez utiliser. Plus grand que, inférieur à, supérieur ou égal à, et vous avez moins ou égal à. Et puis, il y a l'égalité. Avec l'égalité, vous n'utilisez pas un seul signe égal, car il s'agit d'une affectation. Comme vous pouvez le voir ici, nous affectons ces valeurs à des constantes. Pour comparer la qualité, vous utilisez plutôt un double signe égal. Donc je peux dire ici, fait un égal à 0, et bien sûr ce n'est pas le cas. Cette affirmation ici va donc être fausse. Et comme il s'agit d'un opérateur final, ces deux conditions doivent être vraies. Et parce que celle-ci est déjà fausse , elle ne va pas entrer dans cette branche. De toute façon. Nous pouvons également les modifier. Donc, si b est inférieur à trois ou quatre, je veux dire, et si c est égal à 10. Il s'agit donc de quelques exemples d'opérateurs de comparaison qui évaluent vrais ou faux. Maintenant, pour les chaînes, vous pouvez également le faire. Vous pouvez, vous pouvez évaluer d, par exemple, est une chaîne et vous pouvez tester si elle est égale à bonjour. C'est donc une chose que vous pouvez faire avec des cordes. Vous pouvez toujours utiliser plus ou égal à. Par exemple, si nous avions laissé il est égal au monde. Et nous pouvons dire si D est supérieur à h. Nous pouvons donc le faire. Dans ce cas, il va comparer le H au W. Et parce que h n'est pas supérieur à w, parce qu'il vient avant W, alors cela va être faux. Une autre chose intéressante que je veux vous montrer est l'utilisation du point d'exclamation. Donc celui-ci, il retourne essentiellement la valeur booléenne. Donc si G l'était, G est vrai, non ? Si je mets le point d' exclamation devant lui, il va fondamentalement inverser la valeur booléenne. Donc, G est vrai. J'ai le point d'exclamation. Il va le transformer en faux. Donc, ça ne va pas fonctionner. Vous pouvez le mettre devant cela, par exemple. Et une douzaine, a n'est pas égal à 0 car a est un, comme vous pouvez le voir là-haut. Mais le fait d'avoir cela devant ça va se révéler vrai. Et maintenant que j'y pense, vous pouvez également tester les inégalités. Donc, ce n'est pas égal. Ok, je peux donc tester si a n'est pas égal à 0, ce qui est vrai. Mais alors, parce que j'ai ce point d'exclamation devant lui, il va passer à faux. Il y a donc beaucoup de flexibilité ici, et ce n'est qu' un exemple, n'est-ce pas ? Il n'est donc pas nécessaire que ce soit aussi compliqué. Maintenant, je veux revenir à notre jeu de cartes de guerre et utiliser l' instruction if pour déterminer quelle carte est la plus grande, puis incrémenter le score du joueur ou le score du processeur. Très bien, j'ai ici le projet de jeu de cartes de guerre. Et si vous jetez un coup d'œil à cette partie où nous mettions à jour le score, nous ne faisons qu' incrémenter le CPU et score du joueur avec chacun des boutons. Maintenant que vous avez appris si instructions dans le terrain de jeu Xcode, je suis sûr qu'il est très trivial pour vous implémenter afin que vous compariez le lecteur exécuté à la RAM du processeur et voyez quel nombre est le plus grand pour déterminer le score à mettre à jour. Maintenant, parce que nous avons correctement étiqueté nos actifs comme étant les plus bas et ACE étant le plus élevé, avec une valeur de 14. C'est très banal à comparer. Vous comparez simplement ce numéro de fin, n'est-ce pas ? Et c' est essentiellement le nombre aléatoire. Donc, si vous pensez pouvoir le faire, mettez en pause la vidéo dès maintenant et essayez-la par vous-même. Vous apprendrez beaucoup. Je vous promets, même si vous donnez un coup de feu et que vous ne l'obtenez pas, la leçon va rester beaucoup plus loin. Alors allez-y et mettez la vidéo en pause, essayez-la, puis relâchez-la et regardez-moi le faire ici. Bon, alors bienvenue. Mettons en œuvre cette déclaration if pour voir quelle carte est la plus grande. Je vais donc commencer par si. Et je vais d'abord tester si le nombre du joueur est plus grand que le nombre de processeurs. Très bien, je vais utiliser plus que, si c'est le cas, alors je vais augmenter le score du joueur. Sinon, je vais simplement incrémenter le score du processeur. Maintenant. Je me fiche des liens, et c'est pourquoi je ne compare pas l'égalité entre les deux nombres aléatoires. Mais vous pouvez certainement le faire dans votre version si vous le souhaitez. En fait, il y a un problème avec la façon dont je le fais ici. Le processeur a un avantage injuste car dans le cas d'une égalité, le CPU obtient le score correct en utilisant cette instruction else. Par conséquent, je dois plutôt tester l'autre cas. Je vais donc tester autrement si le rand du CPU est plus grand que le joueur autour, puis le score du CPU plus un. Sinon, si ces deux conditions ne sont pas vraies, alors c'est une égalité et je ne veux rien faire. Très bien, essayons maintenant. Je vais donc revenir en aperçu en direct, et nous allons le faire ici même dans le Canvas. Je vais conclure un accord. Donc 14, c'est définitivement plus grand que cinq. Le joueur obtient donc un score. Jack est définitivement, eh bien, c'est un, c'est un 11 est supérieur à 3, quatre est supérieur à trois. Il semble donc fonctionner correctement. Félicitations, le jeu de cartes de guerre est terminé. Vous avez appris à créer des interfaces utilisateur, à coder dans Swift et vous avez terminé votre première application. Repensez au premier jour de ce défi de 14 jours. Comment vous êtes-vous senti à l'époque ? Etiez-vous nerveux que vous pensiez pouvoir faire tout ça ? Et maintenant, regardez jusqu'où vous avez parcouru. Que pensez-vous du développement d'applications maintenant ? Maintenant, j'ai essayé de rendre cela aussi facile que possible à comprendre et j'espère que vous pourrez acquérir de nouvelles compétences. Maintenant, je sais que ça sonne comme la fin, mais ce n'est vraiment que le début de votre voyage. Dans la prochaine leçon, je vais vous dire quelles sont les prochaines étapes et où aller à partir d'ici. 14. 13 : Challenge bonus: Bonjour et bienvenue dans la leçon 13. Maintenant, dans cette leçon, ce sera plus un défi pratique et pratique. Je veux que vous essayiez de créer cette application par vous-même. Maintenant, vous disposez de toutes les compétences dont vous avez besoin en fonction des leçons de 1 à 12. Et cet exercice va être un excellent moyen de renforcer ce que vous avez appris et identifier les lacunes dans vos connaissances à ce stade afin que nous puissions aller les examiner et aussi nous y rendre compte ce que c'est que vous devez vous mettre au courant avant de continuer. Ok, laissez-moi simplement parcourir cette application. Vous avez un titre, vous avez un certain nombre de crédits, vous avez quelques images. Et lorsque vous appuyez sur ce bouton, il ne fait que aléatoire les images. S'ils ne correspondent pas, vous allez perdre des crédits. Mais cependant, si vous obtenez trois correspondants, ce que je ne peux pas faire pour le moment. Oh, on y va. Ensuite, vous gagnerez des crédits. C'est donc très similaire au jeu de cartes de guerre, sauf que maintenant il y a trois choses que vous randomisez au lieu de deux. Et les ressources d'image se trouvent dans la description dans un lien. Vous pouvez donc vous assurer de les attraper. Vous aurez alors tout ce dont vous avez besoin. Que vous pensiez que c'est trop facile ou trop difficile, je vous recommande vivement de l'essayer car c'est vraiment la meilleure façon d'apprendre, même si vous êtes coincé. Lorsque vous regardez la solution et que vous découvrez comment surmonter cet obstacle sur lequel vous êtes coincé. Cela va être très significatif et cela va vraiment aider à le confier à la mémoire. Et cette croyance à l'égard de l'apprentissage pratique est due à mon propre échec au début lorsque j'ai essayé d'apprendre iOS. Ce n'est donc pas seulement quelque chose que j'ai lu ou quelque chose que j'ai entendu. C'est à partir de ma propre expérience personnelle qu'il n' y a rien d'autre qui puisse remplacer la meilleure façon d'apprendre. 15. 14 : Quoi de prochain ?: Vous l'avez fait. Où allez-vous à partir d'ici ? Qu'apprenez-vous ensuite ? Eh bien, il reste encore beaucoup de compétences à maîtriser avant de pouvoir enfin créer n'importe quelle application que vous voulez. Mais j'espère qu'en faisant au moins le jeu de cartes de guerre et en terminant ce défi, cela vous a aidé à franchir certaines barrières mentales pour savoir si vous pouvez le faire ou non. Parce que maintenant, vous devez savoir que vous pouvez le faire. Et c'est juste une question de temps. Plus d'apprentissages, plus d' obstacles surmontés et plus d'entraînement avant que vous n'atteigniez finalement votre objectif, je vais partager avec vous les cinq prochaines choses que vous pourrez faire pour progresser dans votre parcours d'application. vues et conteneurs numéro un ou plusieurs en faisant le jeu de cartes de guerre, vous avez déjà appris une poignée d'entre eux, tels que du texte, des boutons d'image, des piles, mais il y a beaucoup plus de machines virtuelles et conteneurs dont vous pouvez en apprendre davantage, tels que les bascules, les sélecteurs, l'état, les formes de barres , les grilles, les listes et la liste continue. Apprendre maintenant à utiliser plus de vues et de conteneurs c'est comme obtenir un camion chargé de pièces de Lego. Vos options vont grandement s'étendre. Numéro deux, plus de types d'applications. Pourquoi ? Eh bien, réfléchissez-y. Rien de nouveau ne vient de zéro. Vous tirez toujours parti de vos expériences précédentes, ce que vous avez vu, de ce que vous avez fait, de ce que vous avez essayé. Donc, si vous souhaitez créer votre propre application, la meilleure chose que vous puissiez faire à ce stade de votre parcours est de vous exposer à autant de types d'applications que possible. Avec chaque nouvelle application, vous allez apprendre de nouvelles architectures, nouveaux modèles et de nouvelles façons de faire les choses. Par exemple, comment naviguer d'un écran à l'autre ? Comment télécharger des données depuis Internet ? Comment enregistrer des données dans une base de données ? Et comment permettre aux utilisateurs de créer des comptes et de se connecter ? Il s'agit de différents types d' applications auxquelles vous devez être exposé avant de pouvoir intégrer ces mêmes éléments dans votre application. Numéro trois, plus, Xcode et Swift. Maintenant, dans ce défi, nous avons légèrement abordé les bases de Swift et la façon de naviguer autour du code suivant, mais il y a certainement plus de profondeur dans les deux. Azure Apps devient plus complexe dans vos projets, s' agrandissent, vous rencontrerez plus de problèmes et plus d'argent à résoudre. Et vous aurez besoin d'une maîtrise plus approfondie du langage de programmation Swift. Alors, comment en apprendre plus sur Swift et Xcode ? Eh bien, cela revient à la création d'autres applications. Lorsque vous créez chaque application, vous apprendrez naturellement techniques plus rapides et Xcode. Numéro 4, MVVM. Maintenant, celui-ci est très important dans l'interface utilisateur Swift. C'est le modèle d'architecture principal et il signifie Model-View-ViewModel dans le jeu de cartes de guerre que vous avez fait. Nous avions la partie vue et nous y avions quelques propriétés de données. Mais dans une application Swift UI plus grande, vous disposeriez de modèles représentant également vos données et de modèles d'affichage prenant en charge vos vues. Ce modèle d'architecture existe dans n'importe quelle application Swift UI plus grande. Il est donc très important de savoir, faire des recherches sur Google ou YouTube sur MVVM pour le comprendre au niveau conceptuel. Et puis la prochaine fois que vous effectuez un tutoriel d'interface utilisateur rapide, essayez de repérer le modèle vous-même ou si vous construisez vos propres applications Swift , est-ce que j'essaie définitivement mettre le modèle en pratique. Numéro cinq, plus de frameworks Apple. Apple dispose d'une tonne de frameworks que vous pouvez utiliser avec votre application. Il suffit d'ajouter le framework à votre projet Xcode, lire la documentation et vous ajouterez nouvelles fonctionnalités à votre application, telles que l'apprentissage automatique , la réalité augmentée, etc. Maintenant, cela va prendre un peu plus d'expérience car vous devez lire et comprendre la documentation. Mais c'est une bonne compétence pour commencer formation, car chaque année, il y aura de nouveaux outils nouvelles plateformes et de nouveaux cadres à apprendre. En tant que développeur d'applications, l'apprentissage ne s'arrête jamais et votre capacité à apprendre rapidement et à essayer les choses déterminera vraiment votre succès à long terme. Ce sont les cinq domaines que je vous recommande explorer pour progresser dans votre parcours d'application. Je tiens à vous remercier beaucoup d'avoir survécu à ce défi et d'avoir appris avec moi. J'espère que vous avez vécu une expérience géniale. Et si c'est le cas, veuillez le partager avec vos amis et votre famille. S'il vous plaît, aidez-moi à faire passer le mot et parler à tout le monde du code avec Chris. Je vous apprécie énormément et je vous remercie de m'avoir permis de participer à votre parcours d'application. Très bien, je vous verrai dans la prochaine leçon.