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.