Développement mobile - Le cours complet du développeur iOS ✅ | Grant Klimaytys | Skillshare

Vitesse de lecture


1.0x


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

Développement mobile - Le cours complet du développeur iOS ✅

teacher avatar Grant Klimaytys, Software Engineer

Regardez ce cours et des milliers d'autres

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

Regardez ce cours et des milliers d'autres

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

Leçons de ce cours

    • 1.

      M1 1 Introduction

      3:03

    • 2.

      M1 2 Comment tirer le meilleur parti de ce cours

      1:06

    • 3.

      M2 1 Introduction à la configuration

      1:13

    • 4.

      M2 2 Comment configurer Xcode 9 Swift 4 et les simulateurs iOS 11

      5:49

    • 5.

      M2 3 Comment installer iOS 11 bêta sur votre iPhone ou votre iPad

      3:13

    • 6.

      M3 1 Introduction de base à Swift 4

      2:32

    • 7.

      M3 2 Comment utiliser un terrain de jeu dans Swift 4

      3:52

    • 8.

      Variables M3 3 dans Swift 4

      9:34

    • 9.

      M3 4 Tableaux de collections dans Swift 4

      9:22

    • 10.

      M3 5 ensembles de collections dans Swift 4

      5:35

    • 11.

      Dictionnaires de collections M3 6 dans Swift 4

      8:44

    • 12.

      M3 7 Logic dans Swift 4 If Else et Switch Case

      7:25

    • 13.

      M3 8 Boucles rondes et rondes dans Swift 4

      9:07

    • 14.

      Fonctions M3 9 dans Swift 4

      9:41

    • 15.

      Optionnelles M3 10 dans Swift 4

      5:23

    • 16.

      M3 11 Classes et objets dans Swift 4

      9:34

    • 17.

      M3 12 Héritage dans Swift 4

      3:27

    • 18.

      M3 13 Résumé de Basic Swift 4

      1:49

    • 19.

      M4 1 Introduction à votre première application iOS 11

      2:40

    • 20.

      Storyboards M4 2 de la torche astronomique

      8:54

    • 21.

      Code du contrôleur de vue Astronomy Screen Torch M4 3

      6:09

    • 22.

      M4 4 Boutons et sorties de la torche pour écran astronomique

      7:18

    • 23.

      Positionnement des éléments du storyboard d'Astronomy Screen Torch M4 5

      7:02

    • 24.

      M4 6 Projet de torche d'astronomie

      2:21

    • 25.

      Solution de torche pour écran d'astronomie M4 7

      5:24

    • 26.

      Résumé M4 8 de votre première application iOS

      3:14

    • 27.

      M5 1 Introduction

      0:41

    • 28.

      M5 2 Création de l'écran principal du convertisseur de température

      14:51

    • 29.

      M5 3 Connecter l'écran principal au code

      5:29

    • 30.

      M5 4 Écrire le code principal

      7:48

    • 31.

      M5 5 Devoirs

      1:21

    • 32.

      Solution M5 6

      14:14

    • 33.

      M5 7 Résumé de l'application convertisseur de température

      1:34

    • 34.

      M6 1 Introduction à votre idée d'application

      1:42

    • 35.

      M6 2 De quoi les gens ont-ils besoin ou veulent VRAIMENT ?

      4:59

    • 36.

      M6 3 Votre idée sur papier

      5:50

    • 37.

      M7 1 Introduction à la calculatrice

      1:11

    • 38.

      M7 2 Création d'images à l'écran, de jeux d'images et de boutons de la calculatrice

      8:38

    • 39.

      M7 3 Création de piles d'écran et de contraintes de la calculatrice

      10:39

    • 40.

      M7 4 Création d'une copie de la copie d'écran de la calculatrice !

      12:07

    • 41.

      M7 5 Connecter les graphiques au coder en toute simplicité !

      14:10

    • 42.

      M7 6 Stocker des objets avec des énumes

      9:41

    • 43.

      M7 7 Écrire la logique principale de notre application calculatrice

      11:50

    • 44.

      M7 8 Écrire la logique principale de notre application de calculatrice Partie 2

      12:13

    • 45.

      M7 9 Devoirs sur calculatrice

      1:03

    • 46.

      Solution de calculatrice M7 10

      7:26

    • 47.

      Résumé de la calculatrice M7 11

      2:32

    • 48.

      M8 1 Retour vers le futur Introduction

      2:32

    • 49.

      Les applications à onglets Retour vers le futur expliquées

      10:47

    • 50.

      M8 3 Retour vers la mise en page des barres d'onglets et des icônes du futur !

      14:41

    • 51.

      Storyboards de présentation de Retour vers le futur M8 4

      17:07

    • 52.

      M8 5 Code Retour vers l'avenir montrant l'année

      15:22

    • 53.

      M8 6 Retour vers le futur Code d'une minuterie

      16:37

    • 54.

      Storyboards de voyage temporel M8 7 Retour vers le futur

      10:07

    • 55.

      Code de voyage temporel Retour vers le futur M8 8

      11:30

    • 56.

      Animations de voyage temporel M8 9 Retour vers le futur

      17:20

    • 57.

      M8 10 Retour vers le futur Devoirs

      2:05

    • 58.

      M8 11 Solution Retour vers l'avenir

      16:06

    • 59.

      Résumé M8 12 de l'application Retour vers le futur

      2:06

    • 60.

      M9 1 Introduction aux dieux grecs

      1:13

    • 61.

      M9 2 Qu'est-ce qu'une liste défilante ? Explication avec des Lego !

      4:42

    • 62.

      M9 3 Créer des storyboards et des vues de tables des dieux grecs

      10:27

    • 63.

      M9 4 Les dieux grecs réutilisent les identifiants, mettant en évidence les sections des cellules et les données.

      24:53

    • 64.

      M9 5 Vue de tableau et navigation du contrôleur de vue

      11:26

    • 65.

      M9 6 Passer des données entre les vues de tableau et les contrôleurs de vue

      11:43

    • 66.

      M9 7 Créer des images d'écran détaillées de Dieu

      18:45

    • 67.

      M9 8 Devoirs des dieux grecs et solution en un !

      2:14

    • 68.

      M9 9 Résumé des dieux grecs

      1:53

    • 69.

      M10 1 Où étais-je ? Introduction

      2:48

    • 70.

      M10 2 Montrer une carte avec Apple Maps et frameworks

      8:40

    • 71.

      Informations sur M10 3

      7:38

    • 72.

      M10 4 Demander l'autorisation et montrer un lieu

      12:53

    • 73.

      M10 5 Obtenir les coordonnées de localisation

      10:15

    • 74.

      M10 6 Enregistrement des coordonnées de localisation avec UserDefaults

      14:06

    • 75.

      M10 7 Afficher le dernier emplacement avec une annotation par épingle

      13:39

    • 76.

      M10 8 Où j'étais devoirs 1 et solution

      6:30

    • 77.

      M10 9 Où étais-je difficile de faire des devoirs et de trouver une solution

      12:08

    • 78.

      M10 10 Où étais-je ? Résumé

      2:07

    • 79.

      M11 1 Introduction à Will I Burn

      3:25

    • 80.

      M11 2 Que sont les services de repos ?

      6:29

    • 81.

      M11 3 Qu'est-ce que JSON ?

      4:40

    • 82.

      M11 4 OH DIEU, S'IL VOUS PLA! T, PAS UNE AUTRE APPLICATION MÉTÉO !

      3:16

    • 83.

      M11 5 Choisir l'API météo

      4:05

    • 84.

      M11 6 Création de l'application et demande d'autorisations

      18:18

    • 85.

      M11 7 Concevoir votre application autour d'une police personnalisée

      8:32

    • 86.

      M11 8 permettant à l'utilisateur de choisir un type de peau

      27:54

    • 87.

      M11 9 Permettre à l'utilisateur de choisir un type de peau, Partie 2 Stockage

      15:31

    • 88.

      M11 10 Utilisation de Cocoapods pour installer un module pour des services RESTful

      21:49

    • 89.

      M11 11 Comment récupérer des données à partir d'une API dans une application iOS

      33:25

    • 90.

      M11 12 Comment analyser des données JSON avec Swift

      20:52

    • 91.

      M11 13 Devoirs Faites-le-moi savoir ! (Et solution)

      18:24

    • 92.

      M11 14 Calcul de la durée de combustion

      19:49

    • 93.

      M11 15 Création de notifications utilisateur localement

      28:03

    • 94.

      Résumé de Will Burn (Je vais brûler)

      3:12

    • 95.

      M12 1 Introduction à Cha Chat - Un clone Whatsapp

      3:34

    • 96.

      M12 2 Comment configurer Firebase sur le Web

      5:34

    • 97.

      M12 3 Configurer l'application et installer Firebase avec Cocoapods

      12:20

    • 98.

      Conception des composants d'enregistrement et de connexion de Firebase pour l'accès

      15:46

    • 99.

      Code des composants d'enregistrement et de connexion de Firebase M12 5 pour la connexion

      31:36

    • 100.

      Code des composants d'enregistrement et de connexion de Firebase M12 6 pour l'enregistrement d'un nouvel utilisateur

      22:42

    • 101.

      M12 7 Enregistrement et connexion à Firebase Devoirs et solution

      21:53

    • 102.

      M12 8 Configuration d'un affichage tableau pour afficher les données des messages Firebase

      33:49

    • 103.

      M12 9 Déplacement d'une vue vers le haut ou vers le bas lorsqu'un clavier est affiché

      30:54

    • 104.

      M12 10 Envoi et réception de données vers et depuis une base de données Firebase

      27:04

    • 105.

      M12 11 Firebase Cha Chat Devoirs et solution

      30:24

    • 106.

      Résumé du chat M12 12 Cha

      2:32

    • 107.

      M13 1 Introduction à l'application Transcriber

      3:15

    • 108.

      M13 2 Configuration des onglets Permissions de navigation et données de base

      32:20

    • 109.

      M13 3 Vérification des autorisations existantes et demande des autorisations pour le microphone et la parole

      33:11

    • 110.

      M13 4 Configuration de l'enregistrement à partir des répertoires de documents et des contrôleurs de vue du microphone

      23:34

    • 111.

      M13 5 Enregistrement audio à partir du microphone

      21:21

    • 112.

      M13 6 Devoirs à la maison sur la transcription et solution 1

      9:37

    • 113.

      M13 7 Comment lire des fichiers audio locaux sur iOS

      13:38

    • 114.

      M13 8 Comment implémenter la transcription audio sur iOS

      13:02

    • 115.

      M13 9 Comment enregistrer des fichiers texte sur iOS

      11:37

    • 116.

      M13 10 Initialisation et sauvegarde des données de base dans iOS

      26:19

    • 117.

      M13 11 Récupération de données à partir de données de base et affichage dans une vue tabulaire

      15:50

    • 118.

      M13 12 Des devoirs épiques sans réponse !

      3:53

    • 119.

      M13 13 Résumé de l'application Transcriber

      1:37

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

Généré par la communauté

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

1 020

apprenants

--

À propos de ce cours

Le développeur iOS complet n'a qu'un seul objectif : vous transformer en le meilleur développeur, freelance et entrepreneur possible !

Ce cours vous montrera comment coder correctement tout en développant vos propres idées d'applications et en les transformant en produits monétisables.

Vous allez également apprendre ce qu'il faut faire pour créer un startup d'application auprès de vétérans de l'industrie.

À la fin de ce cours, vous serez un développeur iOS 11 complet avec des options illimitées dans un monde de plus en plus dépendant de la technologie.

-------- ÉDITIONS STARTER, BRONZE, ARGENT ET OR INCLUSES Dans CE COURS !-------

Un aperçu rapide de tout ce que vous obtiendrez :

  • Comprendre le processus de création d'applications, de la conception graphique au codage
  • Adopter une approche basée sur un projet pour vous assurer de ne jamais vous ennuyer !
  • Applications de calculatrice pour comprendre le code de base
  • Applications de conversion pour rendre leur rendu un peu plus complexe
  • Créer des applications de cartes GPS pour comprendre l'emplacement
  • Créer des applications d'horloge pour comprendre les minuteurs
  • Applications de transcription via les services Siri
  • Applications RESTful API et JSON (services Web et récupération de données)
  • Applications Firebase (base de données cloud Google)
  • Clones WhatsApp avec une livraison de données en temps réel
  • Des animations fantaisistes pour les utilisateurs qui font WOW
  • Créer des applications attrayantes
  • Comment lancer votre propre startup à partir d'une idée. Du financement à la vente.

Et des tonnes d'autres !

Options réalistes pour que vous puissiez poursuivre ce cours

  • Développeur salarié à six chiffres
  • Le freelance gagne entre 60 et 120 USD de l'heure
  • Fondateur d'une startup prospère avec un potentiel de revenus illimité 

D'autres apprenants de ce cours m'ont envoyé de merveilleux messages sur la façon dont cela les a aidés :

« Bonjour Grant, j'ai réussi à décrocher le légendaire emploi de développeur à 6 chiffres hier grâce à votre cours. Dans l'interview, ils m'ont posé des questions compliquées et, heureusement, vous m'en avez expliqué la majorité pendant le cours. Merci beaucoup !  "

Pourquoi vous devriez apprendre de moi

J'ai commencé ma vie de professeur de danse en sachant rien en programmation !  Lorsque je regarde les dizaines de projets d'applications sur lesquels j'ai travaillé, j'ai du mal à croire que j'aurais pu en arriver aussi loin avec des entreprises Fortune 500 qui me payent en tant que consultant !

Le fait que je n'ai pas commencé en tant que programmeur signifie que je me souviens vraiment de ce que c'est que d'être un débutant. Je me souviens que des enseignants me jetaient du jargon inutile et vous savez quoi ?  C'était nul ! C'est pourquoi je m'efforce de tout expliquer dans son cours en anglais simple. Je veux que l'expérience d'apprentissage vous soit facile !

La dernière raison pour laquelle vous devriez suivre ce cours

Dans la Silicon Valley, les investisseurs en capital-risque parlent beaucoup de retour sur investissement. Un bon rendement, moyen sur tous leurs actifs, est d'environ 10 %. Imaginez si vous pouviez avoir un rendement de plus de 1 000 % ?

Eh bien, c'est ce que l'on obtient lorsque l'on investit le prix de quelques cafés dans ce cours. Vos connaissances seront considérablement augmentées et vous aurez les clés d'une nouvelle carrière en tant que développeur d'applications iOS 11 apprécié, ou peut-être même le propriétaire d'une startup prospère !


Vous êtes votre plus grand atout.
Investissez en vous-même et suivez ce cours dès aujourd'hui !

-----Important avant de commencer-----

Les actifs du projet de calculatrice du module 6 peuvent être téléchargés ici : Actifs de la calculatrice

Rencontrez votre enseignant·e

Teacher Profile Image

Grant Klimaytys

Software Engineer

Enseignant·e

My very first software program was the artificial intelligence brain of an underwater robot in the early 2000's, still the coolest project I have ever worked on!

Since then I have designed and built websites, software and apps using all manner of languages and frameworks. Javascript, Bootstrap, .Net, Python, PHP - you name it, I've probably used it.

These days I focus on building quality cross platform apps using Xamarin studio in C#, Xcode and Swift 2 and Android Studio.

If you're considering becoming a freelance developer then I can honestly say it is the best life in the world. You will have no boss, earn an hourly rate of $60 - $150 and take holiday whenever you want!

Of course you have to learn how to make good apps first, which brings me to my second pa... Voir le profil complet

Level: Beginner

Notes attribuées au cours

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

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

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

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

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

Transcription

1. Introduction à M1: Salut là. Mon nom est grand-père Matus et je suis un développeur d'applications professionnel et enseignant, et je veux que vous soyez un développeur d'applications professionnelles dans IOS 11 Maintenant, ce cours est destiné aux développeurs nouveaux et légèrement expérimentés. Mais pour être clair, vous n'avez pas besoin d'expérience pour suivre ce cours. C' est parce que j'ai tout expliqué clairement en allant. Nous allons couvrir à peu près tous les sujets qu'il y a à couvrir pour IOS. Et je n'ai qu'un seul objectif, et c'est de faire de vous un développeur avancé capable de créer votre propre APS ou de postuler pour ces six emplois de développement de figures. Je veux faire de vous une machine bien arrondie. Et pour ce faire, voici un petit extrait de ce que nous allons couvrir. Tout d'abord, nous allons chercher un rapide de base pour lequel est le langage de programmation de base dont nous avons besoin pour IOS 11. C' est similaire à Swift 3, mais il y a quelques légers changements que nous devons être conscients maintenant. lui ai demandé de faire cela, je vais aussi vous enseigner des principes de programmation solides afin que vous puissiez passer de swift à voir shop Java ou tout autre langage orienté objet. et vous vous sentirez comme chez vous. Après cela, nous allons passer rapidement à la création de votre tout premier vers le haut parce que, avons-le, c' est pour ça que vous êtes ici. Après cela, vous apprendrez comment correctement conçu pour l'expérience utilisateur dans une sorte de jeu I A West End . Vous apprendrez également à créer de superbes interfaces utilisateur, puis nous allons passer à la création de nombreux points d'accès différents afin que je puisse vous enseigner des choses comme des animations. Internet Resource est repos yeux AP et donc, tellement plus entre tous ceux. Je vais vous donner un petit conseil sur la façon d'être un pigiste et entrepreneur ou façon d'obtenir ces emplois de développement de six figures halodées qui reviennent maintenant à l'abside. Chaque fois que vous créez une nouvelle application sur ce cours avec moi, vous apprendrez un nouveau concept, et j'ai construit ce cours de manière à introduire de nouvelles choses peu à peu. Je vais même vous défier avec des devoirs courts et amusants conçus pour vous faire penser comme un professionnel. Maintenant, je vous promets que je n'introduirai jamais de concepts complexes avant de vous montrer les bases dont vous avez besoin. De cette façon, vous resterez motivé et heureux comme cette dame sur la plage. Je vous garantis que vous ne voudrez pas abaisser cette voie. Maintenant. Gardez à l'esprit que ce cours est toujours un travail en cours. Ce n'est jamais vraiment fini. J' ajoute de nouvelles choses toutes les deux semaines, donc il y a toujours quelque chose de nouveau et excitant d'apprendre les orteils. Maintenant que vous savez ce que ces cours, qui c'est la fourche et ce que vous apprendrez, vous êtes prêt à démarrer vos moteurs et à partir d'une toute nouvelle aventure de développement. 2. M1 2 Comment tirer le mieux de ce cours: il ne s'agit que de quelques conseils qui prendront moins d'une minute sur la façon dont vous pouvez tirer le meilleur parti de ce cours. Après tout, tu as payé ton argent. Maintenant, vous devriez obtenir votre valeur. Donc je vais t'aider à faire ça avec deux règles de base. Lorsque vous suivez ce cours, le 1er 1 consiste à compléter chaque section en une. Assis tout le long. Cela vous permet d'obtenir un bon aperçu du sujet à portée de main. S' il vous plaît ne sautez rien à moins que vous le sachiez déjà très bien. Le deuxième et dernier rôle consiste simplement à suivre. Chaque fois que vous voyez cet écran, c'est assez simple. Alors quand vous voyez ça, ouvrez votre code ex et suivez maintenant, pourquoi avez-vous besoin de suivre ? Parce que presque tout le monde apprend mieux en faisant, je ne fais pas exception à cette règle. Je dois le faire pour l'apprendre. Juste regarder. Juste que ça veut dire que rien ne me va vraiment dans la tête. Donc quand vous voyez cet écran, ouvrez le code des oeufs et faites-le avec moi 3. Introduction à la configuration de M2 1: ici, nous allons dans ce module, nous allons maintenant mettre en place notre environnement de développement. Cela a été enregistré quand X Code 9 était encore dans Peter. Donc, ces instructions peuvent changer juste un peu. Faites-moi savoir si c'est le cas, et je corrigerai les conférences dès que possible. Si je ne l'ai pas déjà fait dans cette section, nous allons installer notre environnement de développement, qui est le code X 9 X Code 9 inclut Swift for comme langue par défaut et devrait inclure les simulateurs IOS 11 par défaut. Si ce n'est pas le cas, je vais voir comment les installer. Nous allons également voir comment installer le batteur IOS 11 sur votre appareil. Maintenant, je vous conseille de le faire sur un appareil que vous n'utilisez pas au jour le jour. Sinon, vous pourriez avoir un peu d'ennuis quand les choses ne fonctionnent pas est planifiée. C' est pourquoi ce logiciel est appelé batteur. Maintenant, si quelque chose ne va pas me poser une question ou encore mieux, demandez sur les forums des développeurs Apple ou sur le débordement de pile. Les chances sont beaucoup de feu là-bas. Que quelqu'un de l'enfer a en fait le même problème est vous et vous trouverez une solution simplement en cherchant, et vous l'obtiendrez en 30 secondes ou moins. 4. M2 2 Comment configurer Xcode 9 Swift 4 et les simulateurs iOS 11 Simulateurs: dans cette conférence, nous allons examiner comment mettre en place X Code neuf batteur et rapide pour cela vient avec elle. Donc, pour commencer, pour ouvrir un navigateur et la tête sur Google. Une fois que votre navigateur est ouvert, il vous suffit de rechercher un développeur Apple ou Apple Death. Si vous êtes trop paresseux pour taper le tout comme moi, cliquez sur le site qui arrive le tout premier résultat, et vous voulez aller au lien de compte en haut en ce moment, je devrais déjà être verrouillé. Je le suis si vous n'êtes pas déjà connecté. Si vous n'êtes pas déjà un développeur Apple, l'écran qui s'affiche, nous vous demanderons une connexion ou une inscription. Allez-y et inscrivez-vous. Cette partie du programme de développement ne coûte rien. Cela peut changer à l'avenir, bien sûr, mais pour l'instant c'est gratuit, donc vous pouvez vous inscrire. Vous pouvez également utiliser votre I D depuis votre Mac Apple, votre Mac book ou où que vous l'utilisiez, ou votre iPhone. Pour cette partie, tous les I DS sont utilisables dans le compte développeur, donc une fois que vous êtes connecté à cette section de compte, nous contre le défilement vers le bas et aller aux téléchargements. Et c'est là qu'Apple stocke la magie. Là, nous avons X Kurt 9 Visa. Nous avons la dernière Macro West, que nous n'allons pas toucher, et nous avons maintenant la version bêta d'IOS 11. Cela nous permettra d'installer sur votre iPhone que nous allons faire un peu plus tard à partir de maintenant . Mais pour l'instant, nous allons simplement obtenir le batteur X Code 9. Téléchargez-le et c'est un fichier assez volumineux. Je pense que c'est autour de quatre gigaoctets, alors attendons que ça finisse. Très bien, c'est maintenant terminé. Maintenant, une chose à noter est que lorsqu'il télécharge, il devrait se décompresser automatiquement du fichier ZIP. Le fichier X I p. Je ne suis pas sûr de savoir comment prononcer cela, et cela prend beaucoup de temps pour ne pas m'inquiéter à ce sujet, car si nous regardons le post de débordement de pile, cela nous dit que cela pourrait prendre jusqu'à 30 minutes. Évidemment, si vous avez un Mac plus rapide, ce sera beaucoup plus rapide. Maintenant, si vous avez du mal à l'extraire et que cela fait plus d'une heure ou plus, alors vous pouvez avoir un problème avec ces signatures car ce que fait votre Mac, c'est qu'il vérifie la signature du fichier pour vous assurer qu'il se trouve réellement là il dit qu'il vient de. Donc, vous n'installez pas de logiciels malveillants sur votre carte si vous le souhaitez. Vous pouvez désactiver la vérification de signature, mais je ne le conseillerais pas. Je conseille juste d'essayer de le décompresser de la bonne façon. Et quand il sera sur six, vous aurez ce batteur de tableau de bord X Code. Tout ce que vous avez à faire est de cliquer et de le faire glisser dans votre dossier d'applications. Allez dans votre dossier d'applications type ex coach, puis vous pouvez ouvrir cela. Maintenant, il y aura probablement quelques étapes que vous devez franchir comme accepter certaines licences. Vous devrez entrer votre mot de passe pour que le code X puisse s'installer et configurer tout ce dont il a besoin. Une fois le code X terminé s'éteindra probablement, et vous devez l'ouvrir à nouveau. Lorsque vous le faites, vous devriez être présenté avec un bel écran de bienvenue et assurez-vous juste qu'il y a un batteur dans cette image. Si vous êtes toujours sur le batteur, si vous n'êtes pas encore sur le batteur, et que vous avez téléchargé le code X via l'APP Store, alors il ne devrait pas avoir de batteur. Évidemment, ce devrait être juste du code X. Neuf. Là, nous avons notre identification ici. Maintenant, gardez à l'esprit. Si vous êtes dans une version différente des codes X, vous pouvez être sur Obita neuf points et avoir un identifiant différent. Ensuite, il pourrait y avoir des différences très, très légères. C' est assez peu probable, parce que X Code est assez mature à ce stade. Mais s'il y en a, alors laissez-moi une question et j'y répondrai pour vous. Pas de problèmes, non ? La prochaine tâche que nous devons faire est de mettre en place nos simulateurs maintenant. Ça fait un moment que je n'ai pas fait ça, alors voyons si je me souviens. Je crois que c'est sous les appareils de fenêtre et les simulateurs, et il me dit que j'ai un iPhone connecté. Si votre iPhone est connecté ou iPad, il vous indiquera qu'il est connecté. Ils n'étaient pas intéressés par ça. Pour le moment, nous voulons cliquer sur l'onglet Simulateurs, et il nous dit tout ce que nous devons savoir sur les Sims qui sont installés. Donc, si je fais défiler cette liste et que je regarde les détails. Donc, nous l'avons fait. J' avais 11 ans. Nos simulateurs sont déjà installés. Maintenant, si pour une raison quelconque ils ne sont pas là, alors descendez dans le coin inférieur gauche et appuyez sur l'icône plus. Il vous demandera un nom pour le simulateur, et vous pouvez ajouter n'importe quel appareil concevable que vous connaissez. Vous pouvez même avoir Apple regarder cela, puis vous pouvez ajouter la version du système d'exploitation. Maintenant, le moment, c'est la toute première version d'IOS 11. Plus tard, vous aurez différents choix. Disons que vous voulez tester sur IOS neuf, par exemple, parce que c'est une bonne idée de soutenir une ou deux générations derrière. Vous pouvez simplement cliquer, télécharger plus de temps de fonctionnement de simulateur et là, nous avons tous simulé que vous pouvez réfléchir et vous pouvez voir Apple colle également à cette idée d'être trop, en fait, trois versions derrière. Donc, nous avons mis les huit Iowa à notre disposition jusqu'à IOS 11 que nous avons installé afin que vous puissiez aller de l'avant et les télécharger si vous le souhaitez. Mais c'est un cours IOS 11, donc nous n'avons pas besoin de cela. Donc, si tout ça fonctionne, alors nous sommes prêts à partir pour que vous puissiez le fermer et nous passerons à la prochaine conférence de configuration 5. M2 3 Comment installer iOS 11 Beta sur votre iPhone ou votre iPad: maintenant, tout au long de ce cours, nous allons créer APS qui sera principalement exécuté sur le simulateur, mais parfois va créer une application qui a besoin d'une chose spéciale disponible sur votre appareil touche un réseau cellulaire et des choses comme ça et certaines choses dans IOS ne peuvent pas vraiment être simulées. Vous avez besoin d'un vrai appareil, donc si vous avez un conseil de rechange, alors vous pouvez installer IOS 11 batteur. Maintenant, gardez à l'esprit que c'est un batteur, et cela signifie que les choses vont se casser. C' est pourquoi je dis d'utiliser un appareil de rechange juste pour le tester. Si vous n'avez pas de périphérique de rechange, c'est à vous de décider si vous voulez l'installer sur votre appareil principal. Mais préparez-vous à être frustré quand certaines choses ne fonctionnent pas. Ok, maintenant que j'ai dit mon article, regardons comment nous installons IOS 11 sur votre appareil. Prenez votre appareil et vous verrez qu'il est très, très facile avec votre appareil ouvert et déverrouillé. Ouvrez safari et dans un nouvel onglet, dirigez-vous vers pita dot apple beaters dot co ford slash i o. oui, lorsque vous appuyez sur go, vous pourriez être présenté avec un écran. Si cela se produit, appuyez simplement sur, actualiser et vous devriez obtenir une installation de profil. Assurez-vous que cela est vérifié auprès d'Apple. Donc, vous n'installez pas de logiciels malveillants, puis cliquez simplement, stockez dans votre manteau passé. Et quand cela est fait, installez et consentez à tout ce qui se produit. Je ne vais pas cliquer dessus maintenant. Sinon, mon enregistrement s'arrêtera. Et une fois que vous l'avez redémarré, et avec la magie de l'écran et de l'édition, vous pouvez voir que j'ai redémarré l'exploitation minière quelques milli secondes. Tout ce que vous avez alors à faire est de vous diriger vers les paramètres, descendre à Général puis à l'intérieur d'ici. Nous voulons trouver notre mise à jour logicielle, qui devrait être proche du sommet. Il vérifiera la mise à jour et vous indiquera qu'il y a une mise à jour IOS 11 disponible. Tout ce que vous avez à faire est de cliquer sur télécharger en magasin, d'accepter tout et d'attendre 10 20 minutes pour que ce processus se termine. Une fois ce sera fait, je reviendrai te montrer à quoi ça ressemble. Et nous l'avons ici. Le tout nouveau IOS 11 sur mon iPhone sept. Il y a quelques changements. Vous pouvez voir les icônes de ce genre arrondi, et si nous balayons vers le haut, c'est complètement changé, mais je l'aime un peu. Cette luminosité et le volume sont vraiment accessibles maintenant, alors qu'avant il était un peu difficile d'accéder réellement. Si nous avons balayé vers le bas, nous voyons des animations soignées en fait comme ça. Il bloque l'arrière-plan, a l'air très agréable. Faites défiler son et nouvelles et si très lisse. Tout à fait, c'est un peu plus lisse que IOS. 10 était quand ce premier est sorti est batteur si globalement jusqu'à présent, je suis impressionné. Vous êtes impressionné ? Aimez-vous le nouveau look Si vous le faites, s'il vous plaît commenter. Si vous ne croyez pas les commentaires aussi, je veux obtenir toute une gamme d'opinions à ce sujet. 6. Introduction au simple swift 4 de base: déjà. On y va. On va apprendre quelques rudiments pour Rift et ce n'est qu'un bref aperçu de ce que vous allez apprendre maintenant. Swift pour est évidemment le nouveau langage brillant d'Apple pour créer absolument des appareils et sur Mac OS. Et comme vous pouvez le deviner, c'est maintenant dans sa quatrième version. Et avant cela, nous avions en fait 3 à 1 rapide remontant dans le temps. Et l'original, bien sûr, était objectif C. Maintenant, si vous travaillez Objectif C, vous saurez que Swift est beaucoup plus facile à utiliser et à comprendre et surtout plus facile à lire. Maintenant, il est important de savoir que Swift pour est principalement compatible avec Swift trois. Donc, si vous avez un projet existant dans Swift trois, vous pouvez créer différents frameworks dans Swift pour et vous pouvez mélanger et faire correspondre les deux, et vous pouvez en quelque sorte migrer chaque framework jusqu'à supprimer pour de Swift 31 à la fois pour vérifier que tout fonctionne. Il y a quelques exceptions, et nous allons les noter au fur et à mesure que nous apprenons tout au long de ce cours, mais je ne vais pas trop me concentrer là-dessus parce que vous êtes ici pour apprendre rapidement et évidemment pas rapide. Trois. Maintenant, Apple a promis que c'est stable maintenant, et puisque avec trois, les changements ne sont que mineurs. Donc, si vous êtes un peu familier avec Trip 3, vous devriez être bon d'y aller maintenant, descendant à la viande et aux légumes de la question ce que nous allons apprendre dans cette section. Autre rapide de base pour les concepts, les concepts tels que les variables. Où stockons-nous les données dans nos programmes ? Nous allons regarder les boucles qui vont autour et autour d'une augmentation où nous commençons des ensembles de données regarderont fonctions, classes et comment les organiser. Nous allons également regarder les objets qui sont créés à partir de classes, et si vous ne savez pas ce que cela signifie, cela n'a pas d'importance, parce que je vais vous montrer bien, regarder les opérateurs et l'héritage et probablement un peu plus comme je continuer d'élaborer cette section. , Ce qui est important pour vous,les gars, c'est que quand vous connaissez ces choses et quelques autres, alors vous êtes bon d'aller avec n'importe quel langage orienté objet. Vous avez juste à apprendre comment cette langue aime les éléments construits, et c'est la syntaxe et le langage particulier à la bonne nouvelle est en apprenant script pour votre déjà devenir un programmeur multi-outils. Droit ? Donc, au moment où nous aurons fini ici, vous aurez un excellent ensemble d'outils rapides, et cela va vous donner la possibilité de commencer à créer votre propre APS. 7. M3 2 Comment utiliser un terrain de jeu dans Swift 4: Bienvenue maintenant. Évidemment, nous ne voulons pas commencer à apprendre à coder à partir du contexte dans une application que nous créons. C' est une façon horrible de le faire parce que vous devez re-compiler l'application chaque fois que vous voulez tester votre code. Une bien meilleure façon de le faire et c'est une fonctionnalité fantastique X Code est d'utiliser des terrains de jeux. Les terrains de jeux vous permettent de vous débrouiller avec la syntaxe et la structure de programmation et de découvrir ce qui se passe immédiatement. Les terrains de jeux sont un peu limités. Tu ne peux pas tout faire dedans, mais ils sont parfaits pour ce qu'on doit faire. Alors ouvrez votre code ex batteur ou code ex neuf. Si vous regardez ceci quand il est sorti et suivez ce que je fais correctement avec votre code ex batteur ouvert, il suffit de cliquer sur Commencer avec une nouvelle aire de jeux. C' est la première option dans ce menu. Si cet écran n'apparaît pas parce que peut-être vous cliquez sur ce bouton par accident, il suffit de traiter le nouveau fichier et le terrain de jeu ou de frapper cette combinaison e. Et une fois qu'il se charge, il vous demande, Voulez-vous faire IOS, TVO ou Mac Os ? Bien sûr, nous voulons IOS, mais en réalité, il n'y a pas beaucoup de différence entre eux quand il s'agit de terrains de jeux. Tant que nous restons simple pour qu'un blanc ait gagné une partie, un maths de vue unique. Je pense qu'on va aller en blanc. Et quand vous faites cela, il vous demande où vous voulez le sauvegarder. Donc, je vais juste dire que sur mon bureau, il peut vous demander si vous voulez activer le mode développeur, alors allez-y et activez C'est mettre votre mot de passe s'il le demande. Et là, nous avons notre terrain de jeu en marche. Maintenant, si vous m'excusez une seconde, je vais juste améliorer la taille de la police pour que vous puissiez la voir mieux, non ? Avec votre code ex batteur ouvert, il vous suffit de cliquer sur Commencer avec une nouvelle aire de jeux. C' est la première option dans ce menu. Si cet écran n'apparaît pas parce que peut-être vous cliquez sur ce bouton par accident, il suffit de traiter le nouveau fichier et le terrain de jeu ou de frapper cette combinaison e. Et une fois qu'il se charge, il vous demande, Voulez-vous faire IOS, TVO ou Mac Os ? Eh bien, évidemment, nous voulons IOS, mais en réalité il n'y a pas beaucoup de différence entre eux quand il s'agit de terrains de jeux, tant que nous restons simples pour que nous puissions avoir un blanc gagné une partie, un calcul de vue unique. Je pense qu'on va aller en blanc. Et quand vous faites cela, il vous demande où vous voulez le sauvegarder. Donc, je vais juste dire que sur mon bureau, il peut vous demander si vous voulez activer le mode développeur, alors allez-y et activez C'est mettre votre mot de passe s'il le demande. Et là, nous avons notre terrain de jeu en marche. Maintenant, si vous m'excusez une seconde, je vais juste améliorer la taille de la police pour que vous puissiez la voir mieux. Et nous l'avons là. Notre terrain de jeu est opérationnel. Maintenant. Je veux attirer votre attention sur quelques choses avant de passer à la leçon suivante . La première chose est que ce en haut est en vert. C' est parce que c'est un commentaire. Un commentaire commence normalement par deux barres obliques. Il y a d'autres façons de faire des commentaires, mais forcer les cils est le moyen standard ou le moyen le plus rapide. Un commentaire n'est pas traité par votre programme, donc le programme les ignore complètement. Et quand vous êtes un programme se compile, les commentaires ne sont pas inclus ci-dessous, toute ligne qui n'a pas de double barre oblique avant que ce soit un peu de code. Donc, pour comprendre ce que ces deux lignes de faire, passons à la leçon suivante. 8. M3 en Swift 4: Donc bloc de construction numéro un. Ce sont des variables. Les variables sont les petits bits de données qui composent votre programme. Votre application, importe ce que vous codez, ce sont les choses qui contiennent les petits bits de données comme les chaînes et les chaînes Il suffit de dire un mot, une lettre ou un caractère. Ils détiennent des nombres et il y a différents types de nombres enterrés vos flotteurs, etc. Ne vous inquiétez pas de ce que ça veut dire. Maintenant, je vais vous faire traverser ça gentil et simplement. Mais plus important encore, je veux que vous compreniez qu'une variable peut être n'importe quoi. Tout peut être stocké à l'intérieur de la variable. Donc je veux que tu penses à une variable comme une petite boîte. Et à l'intérieur de cette boîte, nous avons mis quelque chose de lié à notre programme que nous sachions où il est et nous sachions ce qu'il est. Et nous savons quel genre de chose c'est plus tard, quand nous devons l'utiliser. Donc c'est assez de préambule. Ouvrons une aire de jeux ex code et suivons ce que je fais ici. Nous avons notre petite aire de jeux. Maintenant, on va parler de variables. Donc pour l'instant, nous allons ignorer cette première ligne. J' y reviendrai en temps voulu. Nous allons examiner principalement cette ligne de démarcation. Var str égale Bonjour, aire de jeux. Maintenant, la première chose à noter est sur le côté gauche. Nous avons ce mot de notre virus simplement abrégé pour variable. Maintenant, normalement, nous devons dire dans un langage de programmation quel genre de variable nous voulons stocker. Et dans ce cas, le type de restauration de variable est appelé une chaîne. Une chaîne est simplement une collection de lettres, chiffres, caractères. Donc vous pourriez vous demander Comment X coat sait-il que c'est une force ? Eh bien, c'est assez intelligent pour comprendre parce que vous avez mis quelques guillemets autour de votre code X variable infère que vous avez une force eso var est juste une sorte de raccourci que beaucoup de programmes utilisent. Maintenant, si vous voulez rendre vraiment évident que c'est une chaîne, tout ce que vous avez à faire est de mettre un deux-points, puis de taper une chaîne après Hvar s. Ouais, et ça dit ex coach, c'est certainement une force. Donc, si nous regardons cela maintenant et que j'essaie de taper quelque chose comme mon nom sans les guillemets, code X obtiendra une erreur et il dira la valeur initiale attendue après égale. Nous allons entrer dans ce que cela signifie tôt ou tard, mais c'est une erreur. Ça va mal tourner. Je vais juste annuler ça par son commandant, dit. Donc nous avons notre chaîne originale à l'écran, non ? Ce qui est important à noter, c'est qu'une fois que nous avons créé cette variable et que nous lui avons attribué un type est juste le type de variable qu'il est, alors nous ne pouvons pas facilement changer le type et nous ne voulons jamais vraiment le faire. Ce serait une très mauvaise pratique de programmation si vous essayiez de faire des choses comme ça. Donc, ce str est pour toujours une chaîne et cela signifie que je peux me référer à un str ici juste en le tapant. Et si je fais défiler deux codes X, complètement automatique, il me dit que str est une chaîne de type off et si je laisse ça là, vous remarquerez sur le côté droit. Permettez-moi d'élargir ce qui semble que je ne peux pas l'étendre assez, mais nous pouvons voir ce que nous devons voir. Il nous dit que la str est bonjour terrain de jeu. C' est ce qu'une aire de jeux fait pour nous. Cela nous permet de faire le code à gauche et nous donne le résultat à droite. Donc, c'est bon pour apprendre maintenant si nous n'avons pas str c'est une variable et la variable implique que cette chose peut varier Donc je peux dire que str est égal à et je peux donner à cela une nouvelle subvention de chaîne. Alors j'ai changé. Quoi ? Stocké à l'intérieur de str Et si je tape simplement scr ci-dessous, remarquez qu'il imprime la nouvelle variable. L' ancien est parti. n'y a pas d'indu en matière de programmation. Gardez cela à l'esprit. Vous ne pouvez pas obtenir votre ancienne variable si bien que vous ne programmez pas Dieu, bien sûr. Mais je pense que c'est difficile, non ? Donc, dans la programmation, nous utilisons beaucoup de chiffres. Comment stockons-nous un numéro ? Eh bien, une option follement est affaiblir magasin en nombre comme un argent de ficelle. Soyez prudent car n'importe quel langage de programmation ne sait pas qu'il s'agit en fait d'un nombre. Il voit juste une ficelle. Il ne fait pas en quelque sorte cette extraction ou ce saut que nous, en tant qu'humains, nous faisons dire que c'est le numéro deux et pas la chaîne de programmation n'est pas comme ça. Donc, si nous voulons réellement stocker un nombre, nous avons besoin d'une variable pour le stocker afin que je puisse sauver notre. Mon num est égal à sept. Un code ex stockera cela comme le numéro sept et remarque Il n'y a pas de guillemets autour de cela. Si vous mettez des guillemets, il fera une chaîne. Donc maintenant, si j'ai tapé ici mon engourdi, il vient là ou pour terminer et dit Ceci est un entier. Un entier est simplement un nombre entier. 12345678, etcetera. Et les images ont une valeur maximale, ce qui est quelque chose que vous devez être conscient, mais beaucoup plus tard. Et un entier ne peut pas stocker une valeur décimale. Parce que si nous essayons ce 7.4 et que nous en faisons spécifiquement un type de whops entier, laissez-moi juste corriger ce 7.4. On a une époque. Donc, il essaie de faire cette décimale et de la mettre dans l'interview. Mais ça ne marche tout simplement pas. Alors, comment on s'occupe des décimales ? Il y a en fait deux façons de le faire. La première façon est d'utiliser un flotteur et vous verrez qu'il y a plusieurs flotteurs ici. Float 32 64 32 64 fait référence au type d'ordinateur ou au processus sur lequel votre système d'exploitation s'exécute. Ne vous inquiétez pas pour l'instant, donc notre flotteur est capable de stocker une fourche à sept points. Mais que se passe-t-il si je veux avoir un nombre vraiment long qui se termine par beaucoup de huit ? Voyons ce qui se passe. Euh, qu'est-ce qui s'est passé ici ? Il est tronqué, donc à flot ne peut stocker et décimal beaucoup plus court. Que se passe-t-il si nous voulons en stocker un plus long ? Eh bien, nous utilisons le double pour faire ça, et un double vous permet de stocker tout ça. Donc maintenant, nous avons tout ici et nous cliquons sur ce petit je sur la droite. Il nous dit toute la valeur. Il marque toujours l'image complète, mais c'est beaucoup mieux que la simple version flottante, donc c'est beaucoup plus précis maintenant. C' est important parce que disons que vous faites une banque et que vous transférez l'argent ou quelque chose que vous convertissez à partir de devises. point décimal je pense qu'il s'arrête quelque part il pourrait être très important pour vos calculs. Et si vous aviez un trading sur ce qui avec l'extrêmement important pour connaître vos marges ? Il y a donc trois types différents. entier de chaîne, double flotteur qui est quatre fois le dernier de cette leçon est appelé un booléen. Maintenant, des milliards sont très, très utiles. Le virus, mon boo hors type 1.000.000.000.000 qui est juste court que boom est égal à. Et cela peut prendre l'une des deux valeurs par le vrai Something is true. Laissez le code X rattraper. Quelque chose est pouls oui ou non Réponse. Maintenant, Booléen est très pratique. Lorsque nous vérifierons l'état de notre programme ou l'état de toutes les données reçues ou choses comme ça , cela deviendra évident au fur et à mesure que nous progresserons dans ces leçons. Il y a donc des bases de Riel, hors variables. Et juste avant de partir, nous pouvons avoir notre n'importe quelle variable, et cela peut être hors type et la chose, et cela va me donner une erreur parce que nous n'avons encore rien en tant que type, mais nous pouvons définir cela comme quoi que nous besoin de. Alors rappelez-vous. La règle de base est qu'une variable est simplement un conteneur ou un bout de boîte. Retenez une information de type spécifique, n'est-ce pas ? C' est fait. Passons à présent et regardons le sujet suivant dans Swift pour 9. M3 4 arrêts dans Swift 4: passer à partir de variables. Nous avons des collections, et le premier type de collection que nous avons dans Swift il y en a environ trois que vous utiliserez généralement. Le premier lot d'entre eux est appelé une augmentation maintenant sur les magasins de tableau. Toute une collection de variables, comme vous pourriez le deviner, et il les stocke dans une liste ordonnée donc je pourrais avoir quelques cordes qui disent, six oeufs, lait, farine, poudre à pâte et bananes et puis l'oral indexé. Donc, dans Swift, nous commençons les index à zéro, allant vers le haut jusqu'à ce que nous ayons atteint la fin de notre tableau. Donc, un indice de zéro signifie que c'est le premier élément à l'intérieur de notre tableau qui est important de se rappeler une augmentation sont ce que nous appelons l'indice zéro. Cela signifie que le premier élément a commencé Index zéro et pas un qui vous attrapera. Si vous êtes un débutant, plusieurs fois me sort encore très occasionnellement. Ok, ouvrons un terrain de jeu ex code et implémentez certains de ces tableaux dans notre terrain de jeu et voyons ce qu'ils peuvent faire avec votre aire de jeux ouverte. Créons un tableau hors inter jizz. Donc, comme avec les variables, nous commençons par le mot-clé var Et puis nous donnons à ce tableau un nom quelques INT, et nous allons rendre cela égal à. Et ici, nous avons le langage universel avant un tableau dans presque tous les langages de programmation , et c'est entre crochets. Et puis à l'intérieur de ces crochets, nous spécifions le type de tableau, qui est entier. Et puis nous devons ajouter une chose de plus à cela, et c'est ce que nous appelons initialize er. Je vais donc ajouter un support ouvert et fermé. Et ce que cela fait, c'est qu'il crée le tableau pour nous, qui n'a actuellement rien en nous. A l' intérieur, en nous, il n'y a rien à l'intérieur. Il n'y a rien dans ce tableau. n'y a pas d'éléments. C' est ainsi que nous créons un tableau simple. Alors, comment pouvons-nous créer un tableau de chaînes ? Eh bien, c'est assez simple. Certaines chaînes sont égales à la même syntaxe, sauf que nous spécifions que ce tableau est plein de la chaîne de type. Maintenant, si nous voulons Adam pour une valeur à ces tableaux ? Eh bien, ces tableaux viennent avec ce qu'on appelle une méthode, et la méthode fait tout le levage lourd pour vous d'ajouter la chose que vous voulez ajouter. Donc, par exemple, si nous venons ici et nous disons un peu intense et si vous remarquez sur le côté droit, cela n'aura rien à l'intérieur qui soit attendu. Nous pouvons ajouter quelque chose en utilisant upend et remarquer ce qui arrive. Il dit Vide, upend, nouvel élément. Interject. Donc ce nouvel élément, entier dit. Donnez-moi l'interview que vous voulez ajouter à cela. Donc, si nous avions entré, la commande est terminée. Si vous appuyez sur, entrez à nouveau il termine automatiquement l'interject. Mais nous n'avons pas besoin de ça. Nous pouvons supprimer cela et nous pouvons ajouter un entier Disons le nombre huit et maintenant nous avons le nombre huit ajouté à notre tableau. Maintenant, il y a une autre façon que nous puissions réellement ajouter Inter juste à cela afin que nous puissions en dire quelques-uns dans son et c'est un raccourci de programmation que nous pouvons dire plus égal. Et cela signifie qu'il devrait ajouter ce qui est sur le point de venir sur le côté droit à notre tableau entier . Donc, tout ce que nous avons à faire est d'ouvrir des crochets, déposer le numéro quatre et de fermer cette crochets, et maintenant quelques INT ont deux membres huit et quatre. Pour que tu puisses donner un coup de pied pendant tout ça pour toujours. Et c'est assez utile lorsque vous faites le tour d'une boucle et que vous ajoutez des tableaux selon la logique que vous avez dans votre programme. Bien sûr, nous pouvons faire exactement le même alésage quelques chaînes que nous pouvons dire dot append et nous pouvons ajouter nos nouveaux éléments. Nous pouvons aussi avoir des chaînes et nous pouvons avoir plus égaux ouvrir et fermer nos crochets , et nous pouvons mettre l'abréviation de mon nom de famille. Donc maintenant sur la chaîne Array contient deux éléments, mais remarquez ce qui se passe si j'essaie d'annoncer un nombre. Le numéro sept. Je m'attendrais à une erreur car le tableau ne peut transporter qu'une variable de type, donc nous ne pouvons évidemment pas le faire maintenant. Évidemment, nous n'ajoutons pas une augmentation un par un, alors supprimez simplement cette ligne. Nous pouvons en fait ajouter plusieurs variables à notre taux afin que je puisse ajouter l'année dernière sur le vin parce que je viens de déjeuner. On y va. Ils avaient un pasteur et pourquoi génial, donc c'est un raccourci sympa et pratique. Évidemment, vous pouvez initialiser votre tableau lorsque vous le déclarez pour la première fois Donc ici sur Davar, quelques chaînes. Ce que je vais faire n'est pas de dire que c'est un tableau de chaînes et je vais le rendre égal à je vais supprimer ces deux crochets et mettre deux crochets. Donc, c'est très similaire à ce Syntex. Sauf là-haut. On l'initialise. Nous créons la variable de certaines chaînes. Donc ici, je peux dire, qu'est-ce qu'on a ? Pizza. Je dois avoir faim. J' écris toutes ces choses sur le barbecue. Et maintenant, nous n'avons pas créé de tableau avec pizza et barbecue et plus tard, ces valeurs sont ajoutées à notre tableau ici pour que je puisse les vérifier dans ce petit explorateur sur le côté. Super. C' est comme ça que vous gérez les trier. Mais quelque chose d'autre que vous allez devoir faire plusieurs fois est de compter combien de choses sont à l'intérieur d'un tableau. Et c'est important lorsque vous faites le tour des boucles parce que parfois vous obtenez des données et vous ne savez pas combien d'éléments il y a, donc vous devez les compter. Alors, prenons quelques ficelles. Ne pas et commencez à taper count et vous remarquerez qu'il vous donne le nombre, ce qui renvoie un entier. C' est ce que le côté gauche de cette petite commande complète signifie qu'il va vous rendre un nombre entier parce que évidemment vous ne pouvez pas avoir un demi-élément. Nos comptes apparaîtront à droite. A l'intérieur, il y a six éléments dans Ray Perfect, non ? Donc tu sais combien d'éléments air là-dedans ? Mais disons que nous avons notre rayon ici et que nous voulons saisir les éléments numéro deux, qui, si vous vous souvenez, si vous vous souvenez, est en fait l'élément numéro trois parce que nous commençons à le compter. Zéro. Alors comment on obtient ça ? Eh bien, c'est encore assez simple. On peut avoir des ficelles. Nous ouvrons un crochets et nous lui donnons l'index de la chose que nous voulons, qui est l'élément numéro deux. Et nous fermons notre carré et cela nous revient au sol comme nous l'attendons. Maintenant, voici quelques petits morceaux délicats. Si je vais au-delà de 1234 Si j'essaie d'accéder au numéro cinq, regardez ce qui se passe. Il n'existe pas. Pauvre est-ce que ça accroche à cette seconde, sois véridique. Cinq. Oh, je pense qu'il existe. Des fouets. Essayons, allez pour le numéro 8 et on aurait dû. On y va. Nous avons une époque, en fait, je me demande, Oh, bien sûr, nous avons six éléments. Ne le fais pas parce que nous avons 123 à la fois 56 Ok, donc le numéro 8 n'existe pas , et donc on a une ère horrible ère, et c'est celle qui va te sortir plusieurs fois. Mais il y a des moyens pratiques d'éviter cela complètement. Donc, au fur et à mesure que vous développez en tant que développeur, si vous voulez pardonner le jeu de mots, alors c'est l'époque qui disparaîtra en quelque sorte. Donc quoi que vous fassiez, n'essayez pas d'accéder à un tableau en dehors de ce que nous appelons ses limites. Ses limites sont le minimum et le maximum hors du tableau. Évidemment, vous ne pouvez jamais accéder aux éléments moins un parce que c'est juste que c'est juste n'a pas de sens et vous pouvez accéder à l'élément huit. Ok, c'était il y avait un très basique une augmentation de leurs tonnes. Plus de choses que vous pouvez faire. Mais nous apprendrons que comme nous irons 10. M3 5 ensembles de collections dans Swift 4: Jusqu' à présent, nous avons regardé une augmentation dans nos petites collections, et la prochaine chose que nous allons regarder nos décors. Maintenant, si vous vous rappelez dans une augmentation, nous stockons les choses dans une valeur ordonnée. Donc nous ajoutons quelque chose. C' est un indice zéro à une autre chose. C' est un index 1, etc. Les ensembles sont différents d'une augmentation. ensembles stockent en fait des valeurs distinctes, toutes du même type dans une collection par distinct je veux dire, vous ne pouvez pas avoir le même élément deux fois. Donc, si vous aviez un ensemble de millésimes, vous ne pouviez pas avoir le numéro deux en deux entrées. Où est une augmentation ? Vous pouvez l'avoir autant de fois que vous le souhaitez. Les ensembles ne commandent pas non plus vos articles. Donc, vous ne pouvez pas dire que je veux l'élément à la place zéro dans mon ensemble parce que cela ne fonctionne tout simplement pas . Ce n'est pas pour ça qu'ils sont conçus. Donc si je vous donne un exemple, si nous avons des types de musique et que vous voulez les stocker dans un ensemble. Mais nous voulons nous assurer de ne jamais répéter un des types de musique deux fois que nous aurions quelque chose comme ça. Rock jazz, hip hop classique. Si nous essayons d'ajouter du hip hop à cet ensemble à nouveau, il n'apparaîtrait pas. Il ne serait pas ajouté, et nous resterions juste avec une seule valeur hors hip hop. De cette façon, nous pouvons nous assurer que quelque chose ne se répète jamais. Et puis il est assez utile. Lorsque nous en venons à une programmation plus complexe, cela aide à se débarrasser de beaucoup de filtrage et de vérification que nous devons faire et s'assurer que les programmes fonctionnent beaucoup plus facilement. Ok, alors créons quelques sets en ouvrant le terrain de jeu et en suivant à droite ? Créons un ensemble de lettres. Beaucoup moins est égal à quoi ? Eh bien, comme vous pouvez le deviner, notre type est décalé. Mais nous avons un ensemble. Il ne sait pas ce qu'il va stocker. Donc, la façon dont on le dit, c'est en ouvrant ce support triangulaire et en le disant, on va stocker des cordes. Et puis, bien sûr, nous devons l'initialiser ouvrir et fermer vos crochets, et maintenant nous avons un ensemble vide. Maintenant, contrairement à un tableau, nous ne supportons rien parce que upend signifie que nous l'ajoutons à la fin. Et parce qu'il est défini n'a pas d'ordre, il n'y a pas de fin. Au lieu de cela, on va avoir des lettres. Ne le fais pas et nous allons insérer le moindre maintenant juste avant de partir. Un. C' est un être fantastique que Swift a fait et tous les gars développant Swift ont créé. Ils l'ont fait très basé sur le langage comme un langage de programmation, ce qui semble un peu caché IAT IQ. Mais ce que je veux dire, c'est tout signifie ce qu'il fait. Donc insérer signifie. C' est juste le mettre là-dedans. n'y a pas d'ordre attaché à cela. Si vous aviez un écrit comme vous le faites avec une augmentation, cela signifie l'ajouter à la fin. Donc, les gars qui rapide un très chaud sur avoir la bonne langue pour regarder faire, et ça aide à éviter beaucoup de domaines, non ? Allons passer à autre chose. Sans sens. Nous pouvons initialiser le sens comme nous le pouvons avec n'importe quel autre type de variable. Alors nous allons avoir nos faveurs ou nos favoris et nous pouvons dire que c'est un ensemble de cordes et ensuite nous pouvons, bien sûr, créer cet ensemble, et nous pouvons avoir notre vin de pizza. Et bien sûr, notre pasteur, à droite si rapide sait que c'est une corde ou un ensemble de cordes parce que nous l'avons dit. Mais nous pourrions également supprimer cette chaîne, et Swift sait que nous avons spécifié des chaînes. Il sait, dit-il, mettre pour qu'on puisse le faire. Soyez averti, cependant. Si vous supprimez des ensembles, Swift va le transformer en un tableau et remarquer. Ici, nous avons un crochet carré, alors que si nous gardons cela, nous aurons des accolades. C' est une chose importante à retenir maintenant. Les ensembles peuvent, bien sûr, utiliser beaucoup de méthodes. Donc si j'ai mes faveurs et que je mets juste un point, ça me dit ce que je peux en tirer. Je peux en avoir la capacité. Ne vous inquiétez pas pour ça. Pour l'instant, je peux compter. Je peux trouver un membre avec contient tellement similaire à une augmentation, vraiment, vraiment, juste avec cette différence clé hors pas de répétitions et pas d'ordre. Donc juste pour démontrer le non commande si je reçois mes faveurs et j'annonce pizza aussi, il deux fois. Que croyez-vous qu'il se passera ici si je l'inspecte ? Je n'ai que trois éléments, et c'est parce que la pizza est simplement enlevée si elle est répétée, vous devez être prudent avec cela, alors que si c'est un tableau et que nous explorons que nous avons quatre éléments au total. Et je fais défiler de haut en bas avec la molette de la souris parce que vous pouvez le faire. Ok, donc ne faisons pas ça et que j'ai été prêt. Donc évidemment quelqu'un a mangé ma deuxième pizza, ce qui est probablement bon pour mon alimentation. Quand on a un set, à droite, passons au suivant. 11. M3 6 Dictionnaires de collections dans Swift 4: la collection finale va regarder est appelé un dictionnaire. Maintenant, les dictionnaires sont très utiles, mais ils peuvent aussi être assez déroutants pour les débutants et les développeurs expérimentés comme il est assez facile de se perdre en eux. Lorsque vous essayez de trier une structure de données avant d'entrer dans les choses qui pourraient vous piéger. Regardons ce qu'est réellement un dictionnaire. Un dictionnaire est comme un dictionnaire qu'on ramasse dans une librairie. Il stocke les associations entre les clés et les valeurs, et évidemment c'est juste un peu comme un dictionnaire standard. Donc, si nous regardons dans un exemple à l'extérieur des aéroports, notre dictionnaire ressemblerait à ceci. Nous aurions un tableau de clés. Pourquoi sage ed pour Toronto, surnommé Foot Dublin, Alex RAV quatre London Heathrow et à l'intérieur de ces clés, nous aurions des valeurs associées à eux. Je ne devrais pas le dire à l'intérieur d'eux. Je devrais dire associatif clair, pas vraiment en vue. Mais ces valeurs qu'on retirerait en demandant dictionnaire. J' ai cette clé appelée Dub. Qu' est-ce que ça veut dire ? Quelle est la valeur de cela ? Et sont dictionnaire produirait la valeur Associate ID à cette clé. Maintenant, les clés sont d'un type et les valeurs sont hors d'un autre type. Dans ce cas, les clés seraient des chaînes. Les valeurs seraient la force. Parfois, vos clés peuvent être dans les juges, et vos valeurs peuvent être des chaînes ou l'inverse. Mais en général, ils ont tendance à être des cordes et des cordes ou des initiés et des chaînes ou même des images et une augmentation valeurs, etcetera , etc. Donc, vous pouvez créer n'importe quelle structure de données que vous aimez, et vous pouvez voir ce que je veux dire. Ça peut devenir un peu déroutant. Donc, avant que cela ne devienne déroutant, créons nos propres dictionnaires et voyons comment les faire de manière très simple. Alors ouvrez vos terrains de jeux et créons un dictionnaire. Commençons par créer un commentaire afin que la double barre oblique avant maintenant les dictionnaires sont définis de la manière suivante. Nous avons la décoration du dictionnaire elle-même, puis nous avons la clé et la valeur qui va avec elle. C' est ainsi que nous définissons le type appelé Dictionary. Alors essayons ça. Amenons des noms de var hors des images et faisons de cela un dictionnaire. Ouvrez votre accolade triangulaire et faisons les clés de ceci en tant qu'inter-GIS et faisons les valeurs en tant que force et ensuite nous pouvons réellement initialiser cela aussi, ses premières valeurs définies ou simplement le laisser vide. Donc, la façon dont nous faisons cela est en ouvrant une accolade carrée, avoir un entier, puis une chaîne semi-deux-points et nos crochets ouverts et fermés habituels. Donc maintenant, nous avons créé un dictionnaire vide. Maintenant, vous remarquerez, tout d' abord, et cela m'ennuie qu'ici nous avons une virgule pour représenter les deux éléments. Mais ici, nous avons ce demi-côlon. C' est un peu incohérent, si vous me demandez. Et j'aimerais qu'Apple ou les gars qui font la faille changent. Mais hé ho, c'est ce que c'est. Techniquement, vous n'avez pas besoin de ça parce qu'Exco va récupérer. C' est un dictionnaire. Si nous défaisons ça, nous aurons notre queue Redback comme nous l'avons fait. Maintenant, comment ajouter des valeurs à cela ? Allons chercher nos noms de Vince et ce qu'on veut faire, c'est prendre une des clés. Donc, cette clé est un entier. Ça pourrait être un numéro sept. Ça pourrait être cinq. Ça pourrait être 87. Peu importe ce que c'est, ça n'a pas d'importance. Faisons ça aussi. Donc, nous saisissons cette clé à deux, qui n'existe pas encore, mais nous sommes sur le point de la faire exister en tapant égaux, puis en tapant les mots auxquels est une chaîne. Donc maintenant notre dictionnaire a une valeur. Si nous recherchons l'index ou la clé, nous sortirons avec une chaîne de caractères. Alors ajoutons les événements d'un autre nom. Et nous allons mettre quelque chose à neuf est égal à neuf. Maintenant, nous avons deux éléments dans notre Dixon, et nous allons aller comme ça pour toujours et à jamais. C' est là que vous voulez obtenir les montures. Nous voulons dire des noms, des événements et ensuite me donner les éléments à l'index ou à la clé numéro deux. Et si vous regardez par-dessus le côté droit une fois qu'il est rattrapé, il indique le nombre ou le plutôt cette chaîne deux. Donc c'est un dictionnaire Maintenant. Peut-être qu'il est assez difficile de voir comment cela est utile maintenant, mais au fur et à mesure que nous continuons avec la programmation, vous verrez qu'il deviendra de plus en plus utile lorsque vous voulez l'ordre des orteils. Tout à fait complexe, une dernière chose avant de partir, c'est comment faire différents types dans notre dictionnaire, et en particulier comment spécifier une augmentation ? Eh bien, c'est assez simple juste pour supprimer cela. Et je vais dire que ce sera un tableau hors chaînes. Donc, chaque fois que j'ai un entier clé à côté de cette interview, j'aurai tout un tas de chaînes que je peux retirer. C' est difficile de penser à partir des mots. Donc, créons cela dans les noms de programmation réels, les événements. Allons à est égal à maintenant. Il attend un tableau de chaînes, donc nous ne pouvons pas juste avoir à le faire parce qu'il va se plaindre. Vous pouvez voir que la marque rouge là-haut n'aime pas un peu ça. Et en fait ici, il nous dit ce qui ne va pas avec notre code. Mes terrains de jeu ne peuvent pas affecter la valeur de type string au type string array, donc il n'aime pas que nous mélangions les deux que nous avons besoin de mettre ceci dans et tableau. Un tableau d'un élément est bien. Tu peux toujours avoir ça. On peut ajouter différentes traductions comme ça, hein ? Et c'est bulgare pour deux plus tôt sur l'horrible orthographe romaine de celui-ci. Mais je vous donne les points à Davar, nous pouvons ajouter du français. Oui, et maintenant nous avons trois éléments. Donc, si j'essaie d'accéder aux noms depuis pour l'index off to, nous allons obtenir sur les droits de diviser là-bas et il nous dit ce que nous avons. Et si on veut accéder à une de ces chaînes ? Eh bien, on peut accéder au tableau numéro un peut-être, ou peut-être pas. Donc, il nous dit que String n'a pas de membres de substrat. Noms de en 21 Maintenant il. Si vous regardez ici, nous avons une chaîne et un point d'interrogation. Ça nous dit, mais je ne pense pas que vous n'ayez pas quelque chose ici parce qu'il ne sait pas vraiment à l'avance ce que nous avons ou ce qu'il fait. Mais il ne veut pas nous le dire. Alors ce que vous avez à faire. Il a mis un point d'interrogation ici, et c'est une sorte de concept rapide, ce point d'interrogation quelque chose que je vais couvrir tout seul parce que c'est un sujet assez large hors options. C' est comme ça que ça s'appelle, et je le couvrirai plus tard. Mais il dit que si vous pouvez accéder à l'élément numéro deux, alors essayer l'accès numéro 12 nous empêche d'avoir une ère horrible quand nous accédons à quelque chose qui n'est pas dans les limites, tout comme une augmentation. Si vous vous souvenez bien, c'est donc le long et court sur les dictionnaires. Passons à autre chose 12. M3 7 dans Swift 4 Si Else and Spede Case Case and Switch Case: Regardons un concept très important dans swift et la programmation en général. Sinon ou changer de cas, ces deux choses font plus ou moins la même fonctionnalité. Donc, en programmation, vous pourriez avoir une variable et vous pourriez vouloir vérifier quelle est sa valeur. Donc, vous direz si cela est égal à cela, alors faites autre chose. Si ça équivaut à autre chose, alors faites autre chose. Et l'histoire est à peu près la même avec le boîtier de commutation. Il n'est donc pas trop difficile d'en saisir les concepts. Alors ouvrez des terrains de jeux et suivez à droite. Commençons par quelque chose de gentil et simple. Prenons un bar appelé le mien , ce qui va être un simple job avec la valeur de 33. Maintenant, comment tester si la valeur est 33 ? Parce que disons que nous voulons envoyer à quelqu'un une sorte de carte d'anniversaire, selon notre programme. Et si leur âge n'est que de 32 ans, nous ne voulons pas l'envoyer encore, mais dès qu'ils virent à 33 ans, nous pourrions vouloir l'envoyer. Donc, ce dont nous avons besoin est alors une déclaration if dira, si le support ouvert mon engourdi est et voici le peu délicat. Égal égal à. Il y a deux signes égaux. 33 cela s'appelle un opérateur de comparaison, donc c'est juste comparer les deux côtés. Ce n'est pas l'un comme l'autre. Ensuite, une fois que vous avez fait cela, si c'est vrai, nous ouvrons une accolade bouclée et Swift ferme automatiquement l'accolade bouclée. Donc si mon numéro est 33, il va exécuter tout ce qui est à l'intérieur de ces accolades . Si ce n'est pas 33, il ne l'exécutera pas. Alors nous allons imprimer mon non, et nous devrions voir que sur le côté droit, il l'a imprimé. Maintenant, l'impression est simplement une commande, comme cela l'indique en quelque sorte, pour imprimer quelque chose. Et c'est pourquoi il est sorti comme une chaîne qui a des guillemets autour d'elle. Et il y a cette barre oblique arrière, ce qui signifie créer une nouvelle ligne. Ne vous inquiétez pas pour ça. Pour l'instant. L' important, c'est que nous avons imprimé cette valeur sur 33 Whoops. Ok, donc c'est 33, mais si je mettais 32 dans mon initialisation ? Eh bien, cela n'est pas vraiment exécuté, donc il n'apparaît pas sur le côté droit. Cela dit en tant que whips comme 33. Ok, disons que nous voulons tester différents nombres. Disons que si vous ouvrez vos parenthèses, mon engourdi est et vous n'avez pas à avoir deux. Vous pouvez avoir plus de 33. Alors on peut imprimer quelque chose comme, Oh, mec, donc ce que notre programme fait, c'est le flux logique de celui-ci. Il vérifie si c'est 33. Si c'est le cas, il l'imprime et alors ça ne dérange pas de vérifier quoi que ce soit d'autre. C' est pour ça que nous avons ce mot d'autre. Ça ne va le faire que si ce n'est pas vrai, donc ça ne fait pas le vieil homme. Donc si je mets 34 ici, on devrait faire imprimer la déclaration else, mais pas le 1er 1 imprimé. Donc il a sauté ça parce que ce n'est pas vrai. Mais celui-ci l'est. Alors ça va le faire. Et si on n'en a pas 33 ou 34 ? Eh bien, nous pouvons couvrir tous les autres scénarios en ayant simplement d'autres que nous n'avons pas à avoir. Si c'est le cas, si notre programme va vérifier celui-ci et que cela ne fonctionne pas vérifie celui-ci et ce n'est pas vrai, alors il ira à ce dernier, et il l'exécutera. Tu n'as pas besoin d'avoir cette finale, juste pour que tu saches. Mais si vous voulez quelque chose à exécuter, quelle que soit la valeur, alors nous allons l'imprimer. Alors imprimons, jeune homme. Ok, donc si j'ai la valeur de 30 ici, on devrait faire imprimer un jeune homme. Excellent. Vous pouvez voir ce que j'ai fait ici. J' ai couvert toutes les éventualités pour quoi ? Mon numéro pourrait être à l'intérieur de l'égal à 33. Ou c'est plus grand que 33 et ce qui reste après avoir traversé ces deux-là. Eh bien, il ne peut être que moins de 33, ce qui est d'ailleurs donc l'autre façon que j'aurais pu faire ça. J' aurais pu dire autrement si la mienne, euh, est inférieure à 33, ça me donnerait exactement le même résultat qui couvrirait tout. Maintenant, bien sûr, cela commence à sembler un peu alambiqué. Et si on veut chercher 30 ? 31 32 33 34. Vous pouvez voir comment cela deviendrait un peu compliqué et illisible. Donc, l'alternative à si autre est appelé cas de commutateur. Je vais faire une petite place ici et ça marche comme ça. Nous changeons mon engourdi, puis nous avons ouvert des accolades et Swift les fermera pour nous. Alors nous lui disons, si vous avez un cas où mon numéro est 33, alors je veux que vous imprimiez mon non comme ça et ensuite nous pourrons avoir un autre cas où le mien, hum, est entre zéro dr dot et est inférieur à 33. Et pour cette semaine et Prince Yeah, et enfin, on peut avoir une affaire pour quand on aura plus de 33 ans. Mais plutôt que de le faire et simplement d'inverser ce signe, nous allons avoir l'équivalent d'une instruction else, qui, dans le cas du commutateur, est en fait appelé par défaut. C' est donc ce qu'il fera s'il ne trouve aucune autre chose à faire. Frise huit. Alors laissez le code X nous rattraper. Évidemment, programme plus rapide que le code X, et il nous dit que nous avons un jeune homme dans les deux cas. Donc, si je mets 99 j'espère que nous avons un vieil homme et vieux, donc ceux pour le F d'autre et le cas de commutateur sont des concepts très importants dans la programmation. Nous allons les utiliser beaucoup, et nous le ferons. Tu vas t'habituer au pour être honnête, parce qu'on va les utiliser tellement. Ça deviendra juste une seconde nature pour toi, directement sur la prochaine. 13. M3 8 Boucles ronds dans Swift 4: Jusqu' à présent, nous avons examiné des collections de choses comme une course. Que faire si vous voulez passer par un tableau et que vous voulez retirer chaque variable une par une et effectuer une sorte d'action de programmation dessus ? Eh bien, la façon de le faire est de le faire passer à travers une boucle. Et il existe plusieurs types de boucles, chacune avec une syntaxe différente qui diffèrent très légèrement les unes des autres. Ou en fait, certains d'entre eux sont en fait les mêmes dans la mesure où nous les utiliserons. Alors découvrons à quoi ressemblent ces boucles en ouvrant le terrain de jeu et en suivant . Disons que nous voulons créer une boucle qui va autour de 10 fois pour cela. On utiliserait ce mot que je viens de dire, qui est quatre. Nous dirions quatre variables I et ceci je pourrais être nommé n'importe quoi. Ça n'a pas à l'être. Je suis ici et nous voulons passer d'un compte de zéro à 10. Alors, qu'est-ce que ça va faire ? Ça va faire le tour de cette boucle 10 fois, et chaque fois que ça tourne, ça va en ajouter une à moi alors nous allons imprimer Salut, voyons ce qui se passe là-bas ? Eh bien, ça dit 10 fois si on l'inspecte, ça dit neuf. Et c'est la valeur actuelle de I. Et si vous vous souvenez de nos tableaux, nous commençons toujours à compter tout à partir de zéro en général dans le programme. Donc je zéro il va les yeux ronds, un oeil jusqu'à ce que nous obtenons je suis moins de 10 ni égal à mais moins. Et qu'est-ce qui est moins de 10 dans votre monde ? C' est le numéro neuf. Donc c'est comme ça que tout d'abord. Fondamentalement, maintenant je veux juste te montrer quelque chose parce que je vais t'aider à éviter de perdre beaucoup de temps ici. Si vous allez chercher des boucles sur le Web et que vous voyez quelque chose comme var, je suis égal à pas demi-côlon yeux moins de 10 I plus plus plus fonctionnellement, c'est la même chose, mais dans Swift pour cela a maintenant été supprimé. Cette syntaxe So era see instruction style a été supprimée dans swift trois. Je ne savais pas qu'il allait entrer. Trois auraient juré qu'ils avaient dit que ça allait être pour de toute façon, ça ne marchera pas dans Swift 4. Donc, lorsque vous trouvez vos messages avec un peu de code, vous devez utiliser cela en place et vous économiserez des heures de congé. Frustration, n'est-ce pas ? Regardons comment nous utilisons des boucles dans une augmentation. Donc, créons un nombre de virus, que nous allons réellement spécifier comme un tableau entier, et ce sera égal à tous les nombres que vous avez envie d'y mettre. Donc, nous avons cinq éléments dans ce tableau pour regarder à travers cela, tout ce que nous avons à faire est de dire pour jusqu'à présent. Et cette fin pourrait être appelée n'importe quoi, bien sûr, en chiffres. Et puis nous voulons imprimer dans. Donc, qu'est-ce que cela fait pendant qu'il saisit ce tableau et automatiquement, il sait que vous voulez le regarder à travers. Donc, il saisit le 1er 1 la première fois autour il lèvres à travers, peut-être 2ème 1/3 1 quatrième, un et 5ème 1 Et cela vous évite juste d'avoir à taper le long chemin loin des quatre yeux de feu en 0 à 10. Ok, donc c'est une façon simple d'obtenir tous les éléments et de faire quelque chose. Et vous pouvez imaginer que vous feriez un autre type de traitement ici, et cela rendrait très simple et très compact à programmer afin de regarder à travers un tableau et le principal avantage ici, non ? C' est important. Le principal avantage. Vous n'avez pas besoin de savoir combien de temps ce tableau, c'est combien d'éléments. Il comme rappelez-vous revenir à une leçon plus tôt. Nous avons essayé d'accéder à un élément dans le tableau qui n'était pas là, et nous avons attrapé une époque. Si vous faites cela dans vos points d'accès, ils se bloqueront, et ce sera une mauvaise expérience utilisateur. Tu auras un avis d'une étoile, et ils ne sont pas géniaux, je sais par expérience. Donc, la beauté d'une boucle for est que vous n'avez pas besoin de connaître à l'avance la taille du tableau avant que la boucle s'arrête à la fin sans tomber de la falaise. Droit ? Le prochain genre de Luke que nous avons est le bleu sauvage. C' est donc un peu plus délicat. Créons une variable de nombre viral, qui sera un travail interne, et qui sera égal à zéro. Bien que ce compte soit inférieur à 10,on va continuer à exécuter ce Look, on l'appellera Prince. , Bien que ce compte soit inférieur à 10,on va continuer à exécuter ce Look, Non. Oui. Maintenant, si vous avez un programme avant de savoir quelle erreur je viens de faire ici ? Regarde comment ça continue de compter de haut en haut et en haut. Il tourne juste autour de cette boucle parce que le nombre est toujours nul. Et j'ai dit, tant qu'il est moins de 10, continuez à faire ça. C' est ce qu'on appelle être coincé dans une boucle infinie. Et encore une fois, IOS va tuer votre programme pour vous ou au mieux. Votre programme ne sera pas réactif et lent. Donc, la façon de s'en sortir est d'ajouter un orteil I chaque fois que nous faisons le tour. Donc, après un imprimé que nous allons avoir je plus égale un et voyons ce qui se passe. Nous avons un léger Harris. Ce que je vais faire, c'est juste la coupe parce que je pense que c'est en fait écrasé comme je avais promis. Et puis je vais juste le coller à nouveau. Une fois que X Code est pris avec lui-même, il continue d'essayer d'imprimer. Pas encore au fond c'est que tu peux voir Oh, wow, ça devient fou. Quoi ? C' est une bonne démonstration, n'est-ce pas ? Off ? Qu' est-ce qui peut vraiment mal tourner avec ces choses ? , Je vais, euh, euh, je vais juste éteindre la vidéo maintenant et laisser ça courir et je te dirai dans une minute combien de temps ça a pris. Donc, cela a pris beaucoup plus de temps et j'ai dû forcer à quitter le code X parce qu'il ne répondait pas. Donc vous avez vu le danger. Je vais remonter ça, et maintenant ils m'ajoutaient à chaque fois. Oh, oups. Non, c'est idiot, n'est-ce pas ? C' est le compte plus égal à un. Je suis toujours coincé dans la boucle quatre, si vous voulez, et ça devrait aller 10 fois une fois qu'il a fini d'y penser. Si je viens de traîner ma petite fenêtre en bas vers le haut, nous devrions voir, pas encore imprimé à peu près ou exactement 10 fois. Et nous l'avons là, non ? Donc, tout va bien maintenant. Un autre avertissement. Vous pouvez voir un autre raccourci pour ajouter, et c'est plus. Et c'est faux parce qu'il est retiré de Swift. Encore une fois, c'est une autre chose qui pourrait vraiment vous sortir. Il y a remettre ça à plus égal à un. Assure-toi qu'il soit là pour que je ne reçoive plus de crash. Ok, donc c'est le moment. Maintenant, il y a une légère variation sur tout appelé Repeed While, et ils ne sonnent pas trop différents et fonctionnellement ils ne le sont pas. Mais quand vous venez à la programmation, vous comprendrez les nuances entre eux. Donc c'est juste essayer de faire une répétition. Donc on va lui dire de répéter quelque chose. Vieux Prince pas encore compte plus égal à un. Donc ça va répéter quelque chose. Mais cela nous dit que je m'attends à un moment après la déclaration de répétition, parce que nous ne lui avons pas donné une condition pour arrêter de fonctionner encore. Donc nous allons répéter ça pendant que le compte est inférieur à 10 et vous pouvez voir ce regard autour 10 fois et ensuite arrêter. Et nous l'avons là. Maintenant, ce n'est pas évident à quel point c'est différent de la précédente. En fait, il semble plus de code sans bonne raison. Mais plus tard, vous découvrirez qu'il y a quelques bonnes raisons de le faire. Ok, c'est la fin, Luke. 14. Les fonctions M3 9 dans Swift 4: Jusqu' à présent, nous n'avons pas vraiment organisé notre code dans le terrain de jeu très efficacement. Il n'a pas vraiment d'importance parce que nous n'avons eu que de très petits extraits. Mais quand on va programmer de vraies choses, on ne peut pas avoir un seul bloc. Donc, ce que nous allons apprendre sur la façon dont les fonctions nous permettent d'organiser le code mieux et plus efficacement afin que nous puissions le lire. D' autres personnes peuvent le lire, et ça aide juste à organiser votre cerveau d'une façon Matthieu. Donc, vous comprenez ce qui se passe après quelques mois quand vous n'avez pas regardé votre code plutôt que d'avoir un gros désordre spaghetti, vous aurez de petites fonctions soignées. Alors ouvrez des terrains de jeux et regardons comment faire ça, est-ce pas ? Donc, un principe central d'une fonction c'est pour que nous puissions organiser notre code, mais aussi ils existent pour que nous n'ayons pas à un code lumineux deux fois. Voici un petit conseil. Si vous vous retrouvez à écrire du code deux fois lorsque vous programmez, arrêtez ce que vous faites et réorganisez-le. Vous ne devriez jamais écrire de code deux fois, alors regardons comment la fonction nous aide à éviter ce problème. Nous définissons une fonction en tapant le mot funk. Et, bien sûr, Swift nous le dit. Je m'attends à ce qu'il soit identifié dans la déclaration de fonction qu'en anglais signifie simplement que je regarde pour lui donner un nom. Appelons donc cette fonction check compte l'ouverture de parenthèses fermées, qui signifie qu'il s'agit d'une fonction. Vous pouvez également appeler cela une méthode. Différentes langues légèrement. Appelez-les des choses différentes. Alors, voir boutique. Vous appelleriez ça une méthode pour ouvrir notre accolade et fermer. Maintenant, tout le code que nous allons mettre à l'intérieur d'ici appartient à cette fonction, et le code ne s'exécutera pas si nous appelons cette fonction et nous verrons comment le faire dans un peu. Mais pour l'instant, écrivons du code. Sauvons notre compte. Nous devrions être habitués à cela maintenant. Int Easy appel à zéro et créons notre boucle de répétition. C' est une bonne pratique pour nous. Nous voulons imprimer pas encore, et nous allons en ajouter un à notre compte. Et n'oublie pas, ça vient avec un moment. Le compte est moins que quelque chose de bon, donc nous avons notre fonction, disons ce qui s'est passé. Eh bien, rien ne s'est passé parce que ce code ne s'exécutera pas seul à moins que nous appelions cette fonction et que l'appel d'une fonction soit assez facile. Tout ce que nous avons à faire est de taper vérifier les parenthèses ouvertes et fermées, et il déclenchera cette fonction une fois. Remarquez comment il est tiré ne sont pas encore 10 fois. Maintenant. C' est un peu difficile à voir, alors ce que nous allons faire est de réduire ça à trois pour qu'il tire ça trois fois. C' est facile à compter. Ok, et puis en dessous, nous pourrions mettre à Prince fait et mettre beaucoup de tripes pour que nous puissions voir ça clairement. Donc on devrait en avoir. Pas encore. Le Sénat a fait des droits. Cette fonction s'est déclenchée une fois. C' est génial. On pourrait encore tirer ça. Quelque part ailleurs ne peut pas compter. Maintenant, regarde ce qui se passe. Il est tiré deux fois, donc vous pouvez le voir en gardant nos codes à l'écart. Dans cette fonction, nous pouvons y accéder facilement vice en appelant simplement le nom de la fonction. Mais ce n'est même pas encore la meilleure chose à propos des fonctions. Retirons celui-ci. Elle est abandonnée. Il fonctionne à l'intérieur de ces deux crochets. Ici, nous pouvons passer sur un morceau de données, et ces données pourraient en fait être tout ce que nous voulons transmettre. Donc, disons à notre fonction que nous allons lui donner un message, et ce message est de type chaîne. Donc il y a cette ficelle. Maintenant, si nous regardons ici, sera appelé chèque compte. Il dit qu'il nous manque un argument pour un message de paramètre au tribunal. Un argument est simplement ce qu'on appelle. Ces arguments sont appelés arguments. Je ne sais pas pourquoi si quelqu'un pouvait me le dire, la police le fait, et ça nous dit qu'on n'a rien envoyé. Et c'est ce que je vais vérifier. Le comte s'attend. Alors, qu'est-ce qu'on fait ? Eh bien, nous allons l'envoyer. Message non. Oui. Maintenant, nous avons passé ça. Pas encore. Message. Alors ça va ici, ça se passe ici. Maintenant, nous pouvons l'utiliser au lieu de l'impression. Pas encore. Nous pouvons tout simplement dominer le message, et cela nous donne le même résultat. Donc, une transmission de données à la fonction. Et bien sûr, nous pouvons exécuter ça avec n'importe quel message que nous ressentons, et il l'imprimera. J' espère donc que vous pouvez commencer à voir les avantages hors fonctions. Maintenant, nous n'avons pas à envoyer un seul argument. Nous pouvons envoyer autant que nous le voulons, Bien que je conseille contre l'envoi de tonnes et de tonnes parce que cela signifie que votre programme n'est pas bien structuré. Mais pour l'instant, envoyons nous envoyer et interject, que nous allons, bien sûr, appeler compte. Et disons neuf et nous devrions avoir une ère. Il nous dit que nous ne l'avons pas vraiment parce que nous ne l'avons pas mis en œuvre ici. Alors faisons ça. Compte comme un interject. Maintenant, nous allons utiliser ce nombre pour tester combien de fois faire la boucle. Donc, tout d' abord, nous avons un conflit à ce compte. Ne peut pas être le même nom que ce nombre. C' est en fait un problème. Donc ce qu'on va faire, c'est changer le nom de celui-ci, Teoh. fin compte et on va le changer ici. fin compte. Donc tu dois faire attention à ces affrontements dimanche. Alors maintenant, le compte final. On peut mettre ici au lieu de trois. Nous laissons tomber et comptons, et cela fera le tour du nombre de fois que nous spécifions dans la rencontre. Pensez à ça neuf fois. Si j'ai dit de faire le tour deux fois, je pense que tu peux deviner ce qui va se passer, non ? Alors de quoi d'autre allons-nous parler ici ? On va parler des noms. Ces noms doivent être descriptifs, mais aussi aussi courts que vous pouvez les faire. Donc nous ne voulons pas que les chèques soient comptés. Ah, hot-dogs à la barre parce que c'est juste ridicule. Donc, vous auriez juste vérifié le compte. Vous avez peut-être vérifié compter les hot-dogs ou compter les hot-dogs, et c'est probablement un meilleur. On peut compter les hot-dogs ou quoi que ce soit, donc tu devrais faire court. Mais aussi descriptif que vous pouvez dans cela en ce moment, il y a une autre chose que nous devrions couvrir dans les fonctions. Eh bien, il y a des tonnes, mais , eh bien, toute fonction de base d'infiltration peut vous donner quelque chose en retour, ce qui est appelé une valeur de retour. Donc, disons que nous voulions envoyer un message une fois que nous aurons fini ici. Nous devons dire à notre fonction qu'il va renvoyer, et voici les crochets de Dash Strangler. On lui dit ce qu'on envoie. On va renvoyer une chaîne maintenant. Espérons nous devrions obtenir une erreur car il dit qu'il manquait retour dans une fonction attendue pour retourner la force. Et ça veut dire que tu m'as dit que tu allais rendre ça, mais tu ne m'as rien donné pour revenir. Donc ce qu'on va faire au lieu de faire des empreintes, on va retourner la chaîne des heures. Ça pourrait être tout ce dont nous avons besoin. On peut dire qu'il faut l'achever maintenant. Terminé. Ne sera pas prince ici et maintenant un petit truc d'inspecteur, mais terminé va imprimer ici, comme nous pouvons le voir ici. Donc, nous avons retourné une chaîne une fonction de cellule a terminé. C' est un concept important parce que lorsque vous vous éteignez, dites à votre serveur que vous récupérez des données dans votre fonction. Finalement, vous allez retourner cela à votre programme principal, et c'est plus ou moins comme ça que vous allez le faire. Ce n'est pas le seul moyen. Il y a beaucoup d'autres façons, mais c'est la façon fondamentale de le faire maintenant. Parce que nous retournons une variable, nous pouvons en fait l'assigner comme une barre de notre résultat égal à terminé, puis le résultat lui-même est une chaîne qui est terminée. Donc c'est comme ça qu'on peut récupérer des variables, non ? C' est les bases mêmes. Les fonctions sont-elles triées 15. M3 10 facultatifs dans Swift 4: optionnels. C' est une chose assez nouvelle pour la plupart des programmes, mais c'est une grande caractéristique de sweet pour l'instant occasionnellement, et c'est la raison pour laquelle nous avons besoin d'options. Parfois, nous avons besoin d'avoir une variable à laquelle nous n'écrivons pas immédiatement, donc elle n'a pas de valeur. Nous pourrions effectivement y écrire plus tard, cependant, cependant, et dans la plupart des langages de programmation, cela provoque en fait deux problèmes principaux. Un si rien n'est stocké, alors nous obtenons ce qu'on appelle une référence sans référence, et cela signifie simplement qu'il n'y a rien stocké à l'intérieur maintenant. Si vous avez essayé d'accéder à cela, cela va nous donner un crash à l'exécution dans la plupart des autres langues, swifts un peu différent. Ça veut dire que tout ton accident d'Apple est fini, mort, et évidemment ce n'est pas bon. C' est donc le premier problème. Mais le deuxième problème est lié au 1er 1 en ce que nous devons réellement ajouter plus de code à vérifier. La variable est là, et vous pouvez imaginer avec beaucoup de variables, ce code pourrait réellement s'ajouter et causer d'autres problèmes. Maintenant, Swift supprime ces problèmes avec élégance, mais c'est une grande confusion au début à cause de la façon dont ils l'ont construit. Alors ouvrez une aire de jeux et regardons comment utiliser les options, est-ce pas ? Créons une variable appelée ma force. Donnons-lui un type de force. Voyons ce que dit le code X à propos de cet ex-coach. Ça semble aller jusqu'à présent. Super. Maintenant, faisons le prince de ma ficelle. On y va. Nous avons une variable d'erreur. Ma chaîne est utilisée avant d'être initialisée. Je veux dire, il n'y a aucune valeur là-dedans et ça va nous causer sur elle. ère de Brenda si rapide ne te laissera pas faire ça, et c'est assez intelligent qu'avant de sortir notre programme, ça dit, Hey, mec, tu pourrais avoir une zone ici, alors s'il te plaît corriger ça, OK ? D' autres langages de programmation ne sont pas encore si chauds à ce sujet, mais ils changent. Je crois que F Sharp est en train de changer vers ce genre de paradigme. Maintenant, si je mets un point d'interrogation après cette chaîne, ce que je dis est qu'il pourrait en fait y avoir une chaîne à l'intérieur de ma chaîne, et si cela fonctionne, laissez-moi juste essayer de passer le curseur. Ça ne marche pas. Si je viens de taper ma chaîne ici, remarquez comment le type change en point d'interrogation de chaîne. C' est important à savoir, parce que ça veut dire que c'est une option. Maintenant. Quelle est la différence entre ça et ça ? Eh bien, le 1er 1 Le type est une chaîne. Le 2ème 1 Le type est et facultatif, donc c'est important de réaliser la différence là. Le 1er 1 est une chaîne. Le 2ème 1 c'est facultatif. Donc, dans le 2ème 1, nous disons, Voici une boîte. C' est une boîte facultative et elle peut contenir une force. Mais c'est à vous de vérifier si cette chaîne est dans la boîte. Alors allons-y et faisons-le. Disons que si ma valeur de chaîne est égale à ma chaîne. Donc, ce que nous avons dit ici est, si nous pouvons créer une valeur de chaîne très bien appelée à partir de quelque chose à l'intérieur de ces livres, alors et alors seulement nous allons faire quelque chose avec ma valeur de chaîne afin que nous puissions prince mon et j'espère que cela ne va pas imprimer. Et voilà, est-ce pas ? J' espère que c'est clair. Et en passant, laissons juste une autre façon de créer une variable Samos Far il y a une différence, mais nous allons y arriver en temps voulu, Donc si nous pouvons obtenir un très puits de cette boîte, Ensuite, nous pouvons l'utiliser. Alors il a dit, c'est facultatif. Si on peut l'obtenir, on peut l'utiliser. Et ce sont les bases des options maintenant. Normalement, je vais les enseigner bientôt dans le cours, mais je pense que c'est sûr ou c'est plus sûr si je vous donne une petite introduction maintenant. Donc plus tard, vous ne vous noyez pas dans l'eau de tout ce code. Et puis soudain, j'ai introduit quelque chose appelé Optionals. Tu aimes notre Qu'est-ce qui se passe ? C' est pour ça que je l'ai fait maintenant. Donc, une dernière chose à faire, rendons cela égal pour le trouver, et nous devrions être en mesure d'imprimer cela pour que vous puissiez voir que cela fonctionne. Donc on a vérifié. Si cette variable existe réellement parce qu'elle est facultative. Ok, parfait. Passons à autre chose 16. M3 1des cours et objets dans Swift 4: On y va. C' est l'un des grands sujets. C' est en fait l'un des principaux piliers de la programmation orientée objet appelée classes et objets. Maintenant, je vais briser ça très simplement pour toi. Une classe est simplement un plan. Quel est le plan d'action Do ? Il vous permet de créer plusieurs instances de lui-même afin d'avoir un Blueprint. Vous utiliseriez ce Blueprint pour créer des objets et vous pouvez créer autant d'objets que vous le souhaitez. Donc, si j'avais un plan pour un Gatti, je pourrais en créer autant que je le voulais, même si je ne pouvais en conduire qu'un. Mais peut-être que je t'en donnerai un. Peut-être que si vous êtes un bon programmeur. Donc, toutes ces autres Galaxies sont les objets créés à partir du plan. Ce sont les objets créés à partir de la classe. Alors pense qu'un cours, le plan et Borghetti est un objet, non ? Voyons à quoi cela ressemble en termes de code. Ouvrez votre terrain de jeu et il est démystifier l'un des plus souvent aux prises avec des sujets. Leur raison ? Programmation. Créons une classe en tapant simplement la classe. C' est aussi facile que ça. Cette classe a besoin d'un identifiant ou d'un nom. Appelons ça une voiture rapide et ouvrez et fermez vos accolades. Notez qu'une classe n'a pas de parenthèses car une classe ne peut pas être exécutée comme une fonction peut le faire. Maintenant. Une classe contient un tas de variables ou de propriétés et un tas de fonctions tout ce que nous avons besoin de contenir. Disons qu'on a cette voiture rapide et qu'on lui donne une vitesse maximale de 155 mi/h. C' est une intervention, non ? Disons que nous voulions encore la vitesse moyenne de cette voiture. Eh bien, comment ferais-tu ça ? Eh bien, nous créons une fonction et nous dirions, obtient la vitesse moyenne et cette fonction ne prendrait aucun argument. Mais il retournera peut-être un entier ou peut-être même un retourné. Voyons ce qui se passe si vous renvoyez une interview et juste pour le rendre facile, faisons ça 156 Alors qu'allez-vous revenir ? Revenons 156 divisé par deux. Donc ça devrait revenir. Maintenant il y a quelque chose que je devrais signaler ici. Lorsque vous divisez en Tages, il ne reste plus de nombres décimaux. Souvenez-vous de ça. Donc, si tu as divisé 155, tu n'auras pas un 1550,5. C' est pourquoi j'ai changé sa hanche 156 Et plutôt que d'avoir 156 année, je devrais dire vitesse maximale divisée par deux. C' est mon mauvais, non ? Donc c'est un cours. Il contient une propriété de vitesse maximale, et il contient quelques fonctions, peut-être une ici pour obtenir notre vitesse moyenne. En ce moment, il ne fait rien par lui-même. C' est important à savoir. Donc c'est le plan. Créons une barre d'objets. Gassy est égal à la dernière voiture, puis nous ouvrons et fermons les parenthèses, et cela va l'initialiser. Donc, ce que cela fait est qu'il obtient tout ce code, crée l'objet de voiture rapide et l'assigne au démarrage. Gassy, c'est ça ? Donc, si on voulait sortir de la vitesse moyenne, on pourrait dire que Boo Gatti dot a une vitesse moyenne. Donc, chaque fois que nous créons un objet, il hérite évidemment de toutes ces choses qui viennent à l'intérieur de la classe ou du plan, n'est-ce pas ? Donc ce n'est pas tout. Nous pouvons créer une autre voiture que nous pouvons sauver. Notre Ferrari est égal à une voiture rapide et avec créé une Ferrari et nous pouvons obtenir la Ferraris moyenne vitesse si nous le voulions. Et bien sûr, c'est la même chose, parce que nous devons le trouver correctement pour que nous puissions créer des millions et des millions d'objets si nous voulons tous basés sur une seule classe. Et pouvez-vous voir comment ça va être vraiment utile quand nous commencerons à créer des programmes plus complexes  ? Avoir une classe qui définit une chose ou une sorte de sujets qui sont apt tacles nous permet d' organiser notre code d'une manière très soignée et précise. Ok, donc une Bugatti est en fait plus rapide qu'une Ferrari, mais pour le moment ils ont tous les deux la même vitesse, et nous devons corriger ça. La façon dont nous allons faire cela est quand nous créons l'objet dans la première voiture, nous allons passer au-dessus d'une variable pour la vitesse maximale parce qu'ils ont tous des vitesses de pointe différentes . C' est ridicule d'avoir le même pour tout le monde. Ce n'est pas le communisme des voitures, si tu veux. Donc, la façon dont nous faisons cela est de venir à notre classe, et il y a cette fonction très spéciale appelée dans son et regardez Swift. Il dit que c'est la déclaration initiale de l'Isar. Maintenant, c'est une fonction que le feu est chaque fois que nous faisons une nouvelle tasse rapide donc à l'intérieur d'ici nous pouvons passer au-dessus d'une variable. On peut dire que je vais passer au-dessus de la vitesse de pointe, qui va être un entier droit passé au-dessus de la vitesse de pointe. Comment puis-je obtenir cette vitesse maximale ici ? Et plus important encore, ce sont les mêmes noms. Pourquoi ça ne se confond pas ? Eh bien, il ne se confond pas car il sait que cette variable n'appartient qu'à ce petit code est seulement dans cette portée. Si je suis descendu à ma fonction ici et que j'accède à la vitesse maximale, cette vitesse maximale correspond à celle-ci. Et si je survole ou cliquez dessus, vous remarquerez comment la vitesse supérieure supérieure en haut est mise en évidence par Ex Code. Mais celui qui est dedans n'est pas si important à savoir. Alors rendons cette vitesse maximale égale à cette vitesse maximale. La façon dont nous faisons cela est en disant auto se réfère à l'instance actuelle hors de la classe ou l'objet avec la vitesse de point auto créé est égal à la vitesse maximale. Et croyez-moi, X Coat sait de quoi nous parlons. Maintenant, cette vitesse de pointe nous n'avons plus besoin de la définir. Nous pouvons juste dire que c'est simplement un entier et nous devrions être triés maintenant. Lorsque nous définissons notre voiture rapide, nous devons réellement passer au-dessus de la vitesse de conversation, qui est peut-être à 10 et cela fonctionne. Et passons au-dessus de la Ferrari. Peut-être que c'est 155 Ok, peut-être que c'est un peu plus rapide, mais laissons-le tel quel. Donc, nous l'avons là. Vitesse moyenne pour le livre, gazeux est maintenant 105 qui est la moitié de 10 et la vitesse moyenne pour la Ferrari est de 77 maintenant. Tu te souviens quand j'ai dit que l'ère de l'interview se cachait ? Là, il est 77 fois deux est 154. Où est-ce qu'elle est allée ? C' est parce que quand vous divisez 155 morsure, aussi, ça vous donne 77,5. Mais parce qu'un entier ne peut pas gérer le point, il tombe juste. Ça s'en fout, ça ne te donne pas d'avertissement. Donc tu dois faire attention à ça, non ? Donc juste un petit examen rapide, parce que c'est assez compliqué. Vous créez une classe en tant que Blueprint, vous créez un objet à partir de ce Blueprint. Ensuite, cet objet peut accéder à toutes les propriétés, toutes les fonctions à l'intérieur de la classe, vous pouvez demander également passer quelques variables dedans, qui se déclenche à chaque fois que vous faites une nouvelle version de cette classe, puis vous pouvez attribuer variables dans les propriétés de votre classe. Alors ne vous inquiétez pas. Si vous ne comprenez pas cela maintenant, vous n'avez pas à le faire parce que nous allons utiliser des classes tout le temps. Tout dans la programmation est fait avec les classes. 17. Héritage M3 12 dans Swift 4: héritage, et je ne veux pas dire qu'un oncle lointain est mort et vous a laissé un million de livres, bien que j'aimerais que ce soit le cas. Parfois, toute façon, Dans Harrison, Imaginez essayer d'écrire des cours pour de nombreux types différents de voitures. Camions au rythme de coup, etc. Pouvez-vous imaginer combien de code répété vous auriez ? que C' est làquel'héritage va sauver vos doigts et gagner votre temps. Ouvrez une aire de jeux et voyons ce qu'est l'héritage, non ? Créons une classe vraiment simple appelée Come et disons, Let's le nombre de roues est égal à quatre. Disons que nous voulons créer une voiture familiale pour que je puisse copier ça et appeler cette famille venir et que nous ayons moins de roues de quatre. Mais peut-être que nous voulons avoir un nombre égal à cinq parce que c'est un hayon. Je suis vraiment douée en orthographe en ce moment. Tu vois un problème ici ? Nous avons répété ce nombre de roues deux fois, et évidemment ce n'est pas bon. Nous voulons donc un code de manière à ne pas répéter notre code. Alors nous allons changer cette classe peut-être trop véhicule. Laissez le nombre de roues égal à quatre. C' est assez raisonnable. La plupart des véhicules ont quatre roues maintenant. Si j'ai une voiture familiale, je peux enlever ce nombre de roues et je ne peux pas dire que je veux la voiture familiale. Teoh Hérite tout ce qui vient de la classe de véhicule. Et comment on fait ça ? Eh bien, simple. Sandy Cola vient Pas de flics. Il devrait s'agir d'un véhicule. Je dois être fatigué. J' ai besoin de café, non ? Donc ça veut dire famille. Carl absorbe tous les trucs de cette classe en lui-même. Alors voyons ça en action. Disons que ma voiture est égale à une nouvelle voiture familiale. Assez juste. Nous avons une nouvelle tasse de famille, mais voici la beauté affaiblie. Avoir la voiture familiale DOS espère qu'on pourra avoir mon numéro de fléchettes de voiture hors des portes et on en aura cinq. Nous pouvons aussi avoir mon numéro com DOS hors roues, et voici la grande révélation. Il ramasse le nombre de roues d'ici afin que vous puissiez voir comment il a sauvé un peu de code. On n'a gardé qu'une ligne ici. Ça ne semble presque pas la peine. Croyez-moi, ça en vaut la peine plus tard, quand vous programmez, cela vous sauvera plus que tout, toujours hériter là où cela a du sens et surtout, en fait où vous pouvez. Ok, c'est tout ce qu'il y a à l'héritage. Tu hérites de toutes les choses d'une autre classe. Il ne sert à rien d'y aller plus loin parce que, encore une fois, nous allons hériter chaque jour où nous codons des cartes. Ça va juste devenir une partie du paysage. 18. Résumé de M3 simples simples de Swift 4: Nous sommes donc arrivés à la fin de ce module. Vous violez certains très bons concepts de base dans Swift pour et la plupart des autres langages de programmation , d'ailleurs. Vous avez couvert beaucoup ici. Mais ne vous inquiétez pas si tout n'est pas vraiment entré. Rien ne se passe la première fois. Je sais par expérience amère. Il sera avec le temps et la pratique. Voici un petit résumé de ce que vous venez d'accomplir. Vous avez tout appris sur les paraboles. insurgés, des milliards de cordes. Il apprend sur les boucles qui tournent et tournent. , Répétez quatre,etcetera. Vous avez appris les fonctions et comment organiser votre code. Également sur les classes et les objets, les plans et les choses. Nous avons également examiné une augmentation, ensembles et des dictionnaires, des façons d'histoire, plusieurs bits de données à l'intérieur d'une seule variable que nous avons examiné si autre cas pour voir ce que les choses étaient, comment elles se comportaient et faire des séries précises de choses de programmation pour eux si elles étaient la valeur que nous attendions. Nous avons également examiné les options, ce qui est un excellent début. Il vous met sur une bonne réputation quand vous venez à la programmation plus avancée. Et enfin nous avons regardé l'héritage. Une des choses se rencontrera à peu près tous les jours. Donc encore une fois bien fait. Tu mérites une petite pause pour apprendre. Maintenant, voici quelques feux d'artifice pour vous voir partir. 19. Introduction à votre première application iOS 11 : Bon, gars, on y va. Vous êtes sur le point de créer votre toute première application IOS dans Swift. Pour l'instant, qu'est-ce qu'on va créer ? On va créer quelque chose de très, très simple. On va créer quelque chose de très, Mais c'est une passerelle pour vous montrer toutes les choses que vous devez savoir quand il s'agit de structurer une application et ce que font tous les bits et morceaux de fichiers, storyboards et graphistes. Alors, qu'est-ce qu'on fait ? Je faisais de l'astronomie il y a longtemps, et pour regarder les étoiles la nuit, vos yeux devaient s'adapter à l'obscurité. Je faisais de l'astronomie il y a longtemps, et pour regarder les étoiles la nuit, Et c'était un problème, parce que parfois vous avez besoin de regarder une carte ou un graphique en étoiles. Donc la façon dont nous avons contourné ça était de couvrir une torche d'un papier rouge presque translucide pour rendre la couleur rouge clair. Et quand la lumière rouge brille dans vos yeux, elle vous permet de garder cette adaptation sombre. Donc, ce que nous allons faire, c'est que nous allons créer une de ces torches astronomiques en utilisant juste l'écran de notre appareil alors contre permettra à notre écran d'être la couleur rouge. Et puis on va aussi faire des trucs funky autour de ça impliquant une interaction avec tapoter sur l'écran. Donc en cours de route, vous allez apprendre tout un tas de choses, et tout est très important, et ce sont des choses que vous ferez encore et encore quand vous créerez APS Festival aura storyboards, et c'est là que nous concevons la plupart de l'aspect graphique de notre. nous allons Bien sûr, examiner les éléments graphiques que nous glissons dans nos storyboards et comment ils fonctionnent. Nous allons voir comment connecter le code aux graphiques que nous avons insérés dans notre storyboard. Nous allons voir comment répondre aux clics sur les boutons, comment restreindre toutes les choses dans notre écran. Parce que, comme vous pouvez l'imaginer, un iPad a une taille différente de celle d'un iPhone. Donc, IOS, ou plutôt, ex coat, a besoin d'un moyen de savoir comment placer les différents éléments à l'intérieur de votre rap afin qu'ils ne soient pas hors de propos sur différentes tailles d'écran, et c'est assez élégant. Mais nous avons fait ça. Alors je suis désolé. Je vais te faire un peu de devoirs. Ce n'est pas trop difficile, mais il vous fait penser et penser est la racine de toutes les solutions dans la création d'APP. Mais il y a de bonnes nouvelles. Je vais vous donner une solution pour faire vos devoirs après,bien sûr, bien sûr, vous me promettez que vous allez essayer les devoirs bien pressés, commençons. 20. M4 2 Écritures Torch Astronomy: Bonjour encore. La toute première chose quand il est au courant dans le développement IOS est un concept appelé storyboards et storyboards contiennent les parties graphiques de notre application. Ils permettent de concevoir des choses en, plus ou moins et glisser-déposer, ce qui rend notre vie beaucoup plus facile en tant que développeurs. Alors ouvrez le code X et voyons ce que sont les storyboards. Alors ouvrez votre ex code batteur ou votre ex coat. Neuf. Si vous regardez ceci une fois, il est hors batteur et vous êtes présenté avec cet écran. Et dans cet écran, nous voulons prendre la deuxième option, qui est de créer un nouveau projet X Code. Alternativement, vous pouvez cliquer sur fichier nouveau et vous pouvez passer aux projets. Ils font la même chose maintenant, il y a beaucoup et beaucoup d'options. Tout d'abord, je veux attirer votre attention sur le haut. Nous avons IOS Watcher West TV OS, Mac OS et cross back pour Nous allons à la télé. Oh est beaucoup plus tard, nous pourrions même faire un peu Watcher West, mais pour l'instant nous allons seulement faire de l'Iowa, et nous allons sélectionner une de ces options une vue unique à nouveau, une réalité d'orgue ventilé à l'application basée sur le document. Il y en a des tonnes pour faire le tour. Chacun d'entre eux a ses propres utilisations et leurs raisons pour lesquelles vous les choisiriez ou non. Pour l'instant, choisissons une seule vue, hein ? Comme la version la plus simple. Donnons le nom de famille Astro torche. Tu peux appeler ça tout ce que tu veux. Maintenant, si vous êtes un développeur enregistré, vous pouvez ajouter votre compte développeur ici. Si vous le souhaitez, puis en dessous, il renseignera automatiquement le nom de votre organisation et votre organisation. Identifiez maintenant la raison pour laquelle il fait cela est de sorte que plus tard il peut produire ce paquet. Identifiez juste en dessous qui permet à l'APP Store orteil. Identifiez votre acte de manière unique puis au-dessous de ce que vous rapide ou objectif C voudrait certainement rapide. Et si nous allons utiliser la base de données intégrée dans IOS, qui est appelée données de base, nous sélectionnerions cette option. Mais nous ne le sommes pas, donc nous ne pouvons pas le sélectionner. Alors nous allons simplement remplir notre identité d'organisation, et cela nous permettra de cliquer sur suivant. Vous pouvez mettre n'importe quoi là-dedans parce que nous ne allons pas publier ceci, alors nous allons créer cette solution alors sauvez-la d'une manière ou d'une autre. Je vais le mettre dans mon bureau, et une fois qu'il a fini de faire son truc, vous êtes présenté avec ce qui ressemble à un écran très compliqué. Il y a beaucoup de choses qui se passent ici, alors on va t'aider un peu là-bas. Je vais juste en plein écran et la première chose sur laquelle je veux attirer votre attention, c'est cet arbre sur le côté gauche, on a cette petite icône bleue et ça dit, torche Astro. Et si je fais défiler vers le bas, je pourrais avoir le dossier de Astra Torch. J' ai quelques tests, vos processus et vos produits. On va s'inquiéter de ces tests. Et ce qui n'est pas pour l'instant, je veux voir que ce dossier contient un tas de fichiers de code et un tas d'histoire pour les fichiers du conseil, et on va aller regarder un storyboard dans une seconde. Mais pour l'instant, si vous cliquez sur cette icône en haut, la bleue, cette sorte de contient toutes les propriétés de votre projet. Donc, si votre projet a besoin de dépendances externes, ou si vous devez spécifier le type de cible que vous voulez déployer sur quelle version d'IOS cela signifie, vous pouvez le faire ici. Donc on va laisser tout ça tranquille pour l'instant, on va le laisser tel qu'il est. La première chose qu'on va faire, c'est regarder. Quel code X finks. Une vue unique à se compose de. Maintenant, où faisons-nous ça ? Eh bien, toutes les interfaces graphiques ont demandé. En général, ils sont stockés à l'intérieur de storyboards. Et pour regarder sur le côté gauche et Outryve, vous Nous avons deux d'entre eux, un storyboard principal et un écran de lancement storyboard de lancement est l'écran qui montre quand votre APP lance. On n'y touchera pas encore. On y reviendra beaucoup plus tard. Pour l'instant, nous allons regarder le scénario principal, qui est affiché lorsque votre application est chargée sur l'appareil. Et si vous cliquez dessus, il vous montre cette boîte noire appelée un contrôleur de vue car il contrôle la vue. Maintenant, cette petite flèche sur le côté gauche à l'intérieur de l'écran du contrôleur de vue nous indique que c'est la première vue qui sera affichée lorsque ce story-board se chargera. Bon, maintenant, revenons aux fichiers dans ce dossier Astro Torch. Tous ces fichiers contiennent le code qui va exécuter notre donc je vais juste y toucher légèrement . Donc tu as une idée. L' avantage du point délégué APP est la façon dont votre application communique avec le système IOS. C' est ce que vous devez savoir à ce sujet. Ce contrôleur de vue dot swift est le code qui correspond au contrôleur de vue dans notre Story Board principal. Et si nous cliquons sur le contrôleur de vue dans le storie principal et sur le côté droit , nous sélectionnons cette icône du milieu. Il y a une petite liste déroulante sous-classe qui nous dit un contrôleur de vue. Donc, ce que fait X Code, c'est qu'il connecte ce contrôleur de vue avec ce code de contrôleur de vue . Ok, donc c'est un tout qui est en train de faire alors remonter notre planche principale. Et nous allons juste changer une chose simple pour notre application. Permet de modifier la couleur d'arrière-plan de cette vue, alors sélectionnez. Si vous cliquez simplement d'une manière quelconque à l'intérieur de la boîte, puis en utilisant ces icônes en haut à droite, Si vous passez le curseur sur eux, il vous indique ce qu'ils font. Montrons les attributs, inspecteur. Maintenant, les attributs vous permettent de modifier diverses propriétés de cette vue. Et l'un des plus basiques, bien sûr, est l'arrière-plan, sorte que nous pouvons cliquer sur l'autre, puis nous pouvons cliquer sur pour lire si nous le voulons. Alors maintenant, l'arrière-plan de cette vue est rouge, est-ce pas ? Donc c'est simple. Si vous cliquez n'importe où loin de la vue que la douleur de la main droite disparaît, sorte que la bonne campagne contient un moyen de changer les propriétés et les vues de ce que si vous avez levé. Alors maintenant, vous voulez exécuter ça. Laissons ça sur notre simulateur. Tout ce que nous avons à faire est de venir en haut ici si vous êtes en plein écran et montrer la torche Astro et cliquez sur le menu de l'appareil et vous pouvez sélectionner n'importe quel appareil. Donc, nous allons lancer cela sur un iPhone cinq s. Maintenant, lorsque vous cliquez sur ce bouton de lecture, il vous dit qu'il va construire et puis exécuter le schéma actuel. Alors construis-le. Il va le charger dans le simulateur, et là nous avons notre application en cours d'exécution dans un iPhone cinq s et vous pouvez dire que c'est un iPhone parce que si vous cliquez sur le bouton d'accueil retour nous allons. Et là, nous avons notre numéro, notre astro touch, que nous puissions cliquer dessus, nous pouvons double-cliquer dessus et revenir dessus maintenant. Il y a une dernière chose à savoir à ce sujet. Si nous revenons au code ex, si nous descendons en bas ici et nous cliquons sur cette petite icône appelée Afficher la zone de débogage, en bas à gauche lorsque vous cliquez que cela va nous donner des messages de notre application, que nous n'avons pas pour le moment. Mais ça va être très, très utile. Ok, maintenant que tu sais, c'est qu'on peut mettre fin à cette conférence. Mais juste avant de partir, venez vers le haut et pour arrêter votre application en cours d'exécution dans le simulateur, cliquez sur Arrêter, et cela l'empêchera de fonctionner dans le simulateur et d'être connecté à l'extraction. Il sera toujours disponible sur le simulateur afin que vous puissiez toujours le charger si vous le souhaitez. Mais il n'est plus connecté au code X, est-ce pas ? Passons à la prochaine conférence et mettons du code derrière cette vue. Contrôleur 21. M4 3 de Torche de l'écran: jusqu' à présent, vous avez créé votre toute première application et vous l'avez exécutée sur un simulateur. Cependant, vous vous demandez peut-être, nous n'avons pas encore écrit de code, alors faisons-le. Et voici juste un petit résumé. Jusqu' à présent, vous avez créé une petite torche d'écran de couleur rouge. Maintenant, on va ajouter du code pour faire des trucs fantaisistes en arrière-plan sur cette torche d'écran . Alors ouvrez votre projet ex curled et suivez. Commençons par quelque chose de gentil et simple en termes de manteau. Ouvrons le projet Sélectionnez le storyboard principal. Sélectionnez le seul contrôleur de vue que nous avons là et sélectionnez la vue. Maintenant rappelez-vous, si vous sélectionnez l'une des icônes en haut à droite pour afficher les attributs, Inspecteur, nous pouvons changer l'arrière-plan. Ramenons cet arrière-plan à sa valeur par défaut. Donc, c'est ce que nous allons maintenant changer ce contexte en utilisant une approche de codage. Et si vous vous souvenez que j'ai dit, ce contrôleur de vue est en fait lié à un fichier de code, et nous le savons parce que si nous allons sur le côté droit et nous sélectionnons l' inspecteur d'identité , qui est plus ou moins le milieu, Je ne peux pas pour le 3ème 1 de la classe nous dit que c'est un contrôle de vue. Et si vous vous souvenez de votre swift de base, une classe est un moyen d'organiser un code ou un Blueprint pour créer un objet. Donc, nous voulons trouver ce contrôleur de vue. Et heureusement pour nous sur la gauche dans la vue de l'arbre, nous avons le contrôleur de vue point rapide et seulement cliquez dessus ont été présentés avec un peu de manteau. Nous avons une importation du haut, et une importation de classe Nowlan fait est de mettre à notre disposition tous les différents bits de méthodes de code fonctions et de classes dont nous avons besoin pour programmer cette partie de notre application. Ne vous inquiétez pas pour ça pour l'instant. Donc, la première chose que je regarde pour voir est que cette classe est appelée contrôleur de vue et Aziz off type de vous, vous je vois le contrôleur et le contrôleur U I view est comment nous contrôlons la vue dans notre interface utilisateur . vois, je t'ai dit qu'ils étaient rapides très littéraux. Donc, chaque écran que nous chargeons dans notre application s'il s'agit d'un contrôleur de vue, hérite de cette classe afin que IOS sache ce qu'il faut faire au bon moment. Il y a une autre chose ici. Nous avons une fonction de remplacement. Si vous avez chargé maintenant, ne vous inquiétez pas du remplacement. Pour l'instant. Je veux que vous fassiez attention à ce point de vue. Est-ce que le chargement de cette fonction s'exécutera lorsque la vue a été chargée ou quand il est terminé le chargement. Il y a une autre fonction ici. Ont reçu un avertissement de mémoire. Nous n'avons pas à nous en soucier pour l'instant, mais vous le ferez plus tard, donc nous pouvons simplement l'enlever si nous le souhaitons. Nous n'avons pas à avoir ça maintenant pour rendre ça agréable et simple. Donc, à notre avis, a chargé. Nous savons que la vue est chargée. C' est à l'écran. C' est dans la mémoire de notre application. Donc, ce contrôleur de vue dans le storyboard est chargé. Une fois que c'est fait, nous savons alors que nous pouvons accéder à l'arrière-plan hors de la vue afin de changer sa couleur. Et comment on fait ça ? Eh bien, soi et soi se réfère simplement à l'instance de cette classe ou à l'objet que nous avons fait à partir de cette classe, et ensuite nous pouvons accéder à la vue et remarqué que cela a un type de vous. Je vois la vue de l'interface utilisateur maintenant que nous avons la vue. Nous pouvons mettre des points, nous pouvons accéder à une couleur d'arrière-plan, puis nous pouvons définir cette couleur d'arrière-plan en utilisant la classe de couleur des yeux U et à l'intérieur de là. Si on pose un dock, regarde toutes les couleurs qui apparaissent pour nous, donc on veut avoir du rouge. Maintenant, vous ne pouvez pas créer de couleur que vous pouvez imaginer dans cette classe. Vous pouvez utiliser des valeurs RVB, des valeurs hexadécimales, tout ce que vous pouvez penser. Donc maintenant que nous avons fait cela, sauvegardons en appuyant sur la commande s ou en dirigeant vers le fichier et enregistrer. Une fois que vous avez fait cela, assurez-vous que votre simulateur est coché sur l'iPhone correct et appuyez sur Play. Maintenant, une fois que ça se charge sur notre écran, nous devrions voir notre torche Astro se faire envoyer. Et une fois que la vue se charge, elle devient rouge. Il y a un léger retard parce que c'est la première fois que je lance ça sur cet ordinateur, donc ça devient un peu baggy. Mais les choses pourraient être Wes émulateurs Android sont vraiment Laghi. Je ne recommande pas de commencer par ceci, Ok, alors récapitons simplement que dans notre storyboard, nous avons une vue que la vue est intégrée à l'intérieur d'un contrôleur de vue parce que nous avons besoin de quelque chose pour le contrôler. Nous avons dit à l'ex coach que notre contrôleur de vue de fichiers ou une classe appelée contrôleur de vue va être responsable de cela. Alors, quand sont les téléchargements ? Il charge ce contrôleur de vue. Il va et attrape ce point de contrôleur de vue Swift et en fait un objet. Et puis une fois que notre vue a terminé le chargement, il définit la couleur de fond pour nous. Donc là, vous l'avez. Votre tout premier morceau de code. Et c'était assez facile, n'est-ce pas ? Ok, passons à autre chose. 22. Boutons de torche et de sorties Torch en Astronomy de M4: dans cette section, nous allons apprendre comment utiliser un bouton et comment remorquer le code qui se trouve derrière ce bouton. Donc, en ce qui concerne notre petite torture, nous avons un écran rouge. Et si on voulait changer cet écran en bleu pour qu'il puisse l'utiliser la nuit quand on n'était pas si inquiets que notre vision nocturne soit interrompue ? Voyons comment on fait ça avec un bouton. Ouvrez votre projet et allons-y sans Project ouvert. Sélectionnez le plateau principal, puis sur le bas, à droite. Faites glisser cette petite fenêtre vers le haut, puis cliquez sur le cercle avec un carré à l'intérieur , qui affichera la bibliothèque d'objets. Ceci est une bibliothèque de tous les éléments que vous pourriez déposer dans votre vue en bas de ceci. Vous avez un filtre, donc si vous commencez à taper le bouton là, nous l'avons. Et si vous cliquez sur le bouton, il vous indique exactement ce qu'il fait. Implémente un bouton qui intercepte les événements tactiles et envoie un message d'action à un objet cible lorsqu'il est appuyé. Bloody Bloody Bloody Bloc. Nous verrons ce que cela signifie en langage réel dans une minute. Maintenant, si je clique et fais glisser ce bouton, je peux le déposer quelque part dans mon interface, donc je vais le mettre quelque part près du coin supérieur gauche. Maintenant, comme à notre avis, si nous le sélectionnons, la douleur de la main droite disparaît. Si nous avons sélectionné à nouveau, nous pouvons maintenant changer les propriétés du bouton en sélectionnant les attributs Inspecteur, et nous avons une interface très familière. On peut changer la police si on veut. Nous pouvons changer la couleur du texte afin que nous puissions changer cela en pain si nous le voulions. Mais laissons-le en bleu. On peut changer l'ombre, l'arrière-plan , etc. Mais plus important encore, nous pouvons changer ce que ce bouton est appelé. Alors appelons ce changement de couleur et appuyez sur Entrée. Une fois que vous l'avez fait et que vous remarquerez sur votre écran, le bouton est tronqué de sorte que vous ne pouvez pas le voir correctement. Tout ce que vous avez à faire est de cliquer sur l'un de ces carrés sur le glisser, et donc maintenant nous avons notre bouton qui dit Changer de couleur. C' est bien tout seul. Mais si on faisait ça, le bouton ne ferait rien. Alors faisons-le faire faire quelque chose. Et l'endroit logique pour mettre le code pour cela est à l'intérieur du fichier de contrôleur de vue, comme tout le reste. Mais il nous manque quelque chose. Comment connectons-nous réellement les deux ? Je veux dire, le code X sait comment ils se sont connectés, mais on ne peut pas encore faire ce lien. Alors cliquez sur votre histoire. Bateau et manteau X fournit réellement nous attend pour créer ce lien en ce moment. Donc je vais juste abandonner le plein écran ici pour que nous puissions avoir cette barre supérieure à notre disposition . Et je vais faire une petite place pour qu'on puisse voir ce qu'on fait maintenant. La façon dont vous faites dans la pièce est que vous pouvez éteindre la douleur gauche ou la douleur droite en cliquant sur ces boutons en haut, non ? Donc, si je clique sur le gauche, les bits gauche disparaissent et je peux même laisser tomber un peu la taille de ce contrôleur de vue. J' aime faire en sorte que le bon s'en aille. Si je le souhaitais bien, maintenant qu'ils sont tous partis, on peut cliquer sur ces deux petites bagues en haut, non ? Et il dit montrer l'éditeur assistant Eh bien, si vous cliquez sur ce qu'il vous montre les contrôleurs de vue côte à côte avec les associés de la classe de code. Et c'est utile parce que maintenant nous pouvons faire une goutte de dragon quand il s'agit de notre beurre. Nous voulons donc faire glisser et déposer un événement clip à partir de notre bouton, et la façon dont nous le faisons est de maintenir le contrôle enfoncé, pas la commande, mais la touche de contrôle. Cliquez sur le bouton et vous verrez une petite flèche s'éloigner et la déposer quelque part à l'intérieur de la classe. Mais en dehors de la fonction. Et puis je vous ai demandé ce que vous voulez faire, tandis que la toute première chose qu'il veut faire est de créer ce qu'on appelle une prise et une sortie est simplement une variable. Si vous aimez cela fait référence au bouton. Ce n'est pas bon, parce que nous voulons cliquer sur le bouton afin que nous voulons une action et en action contiendra un peu de code que nous pouvons exécuter. Lorsque nous cliquons sur ce bouton. Nous devons donner un nom à cette action. Appelons le bouton, s'il vous plaît taper. Ne vous inquiétez pas pour ça de temps en temps dans les événements. Regardez tous ces différents événements auxquels nous pouvons accéder avec IOS parce que n'oubliez pas que nous utilisons un écran tactile. Il ne s'agit pas seulement d'un clic, il peut s'agir d'un clic, et le glisser peut être cliqué et maintenu. Cela pourrait être quelque chose comme ça, mais l'événement clic standard dans IOS est appelé Touch Up Inside, ce qui semble un peu faux si vous me demandez. Mais hé ho, hé là, nommé il ne peut pas toucher à l'intérieur. Et quand vous appuyez sur Connect, notre petite action est mise en œuvre, donc il a créé une salle ici. Vous remarquerez qu'il y a un peu marron, c'est génial. Allez, un petit symbole gris, et quand vous passez la souris dessus, il vous montre le bouton. C' est ainsi que nous savons que ces deux choses sont connectées. Maintenant, chaque fois que vous cliquez sur le bouton, ce bit de code sera exécuté. Et quel morceau de code ? Eh bien, prenons cette ligne de couleur rouge Commande X pour le couper et le déposer dans cette fonction. Allons aligner ces choses pour qu'elles aient l'air bien. On y va. C' est toujours bon d'avoir un bon code aligné. Alors maintenant, quand nous cliquons sur le bouton, nous devrions obtenir la couleur rouge. Donc, dites que venir en haut à gauche, arrêter votre ancien simulateur et frapper jouer trop bas que de nouveau dans l'iPhone cinq s. Donc, il ya beaucoup de signature qui se passe et compiler et construire. Et quoi que nous ayons ici, là, nous l'avons. Donnez-lui juste une seconde à charger. Droit ? Donc tu te souviens qu'on a enlevé cette couleur de fond de toi ? Je vois. Et nous l'avons fait par défaut. Ça aurait dû le rendre blanc, si je me souviens bien. Ça aurait dû le rendre blanc, Mais ce n'est pas le cas dans ce cas. Et c'est quelque chose que j'ai trouvé assez souvent dans le développement. La couleur n'est pas tout à fait ce qu'il devrait être dit juste quelque chose pour l'avenir à surveiller . Mais en attendant, nous avons notre bouton bleu, et quand nous cliquons dessus, nous obtenons notre belle lampe torche rouge. Vous avez donc appris au cours des deux dernières conférences en moins de 20 minutes toutes les bases dont vous avez besoin, comment configurer une vue, le code qui la contrôle et comment fournir une interaction pour connecter les deux. N' est-ce pas génial ? 23. M4 5 Écriture de Torch de torche: jusqu' à présent, nous avons une application qui fonctionne bien, mais il nous manque une chose clé, et c'est ce qui arrive lorsque nous changeons la taille de notre appareil. Pour le moment, on vient de laisser tomber un bouton et on l'a mis en haut. Mais si on mettait ce bouton en bas à droite ? Et puis nous le mettons sur un appareil d'écran plus petit alors que le bouton disparaîtrait de l'écran. Donc, pour voir cela se passe et apprendre à tenir compte de cela et à résoudre le problème, c'est ouvrir notre projet et voir comment il est fait correctement ? La première chose qu'on a à faire est de ranger par ici. Éteignez notre éditeur assistant en appuyant sur l'icône lignée en haut à droite, puis revenez sur nos barres latérales parce que nous pourrions avoir besoin de les utiliser. Donc maintenant, nous avons notre vue standard de l'éditeur, est-ce pas ? Donc positionnement de l'élément pour le moment, nous regardons cette vue en termes d'un iPhone sept s. Et comment puis-je savoir que quand iPhone sept est plutôt sept s n'est pas encore sorti, parce que au fond que vous il nous dit téléspectateurs iPhone sept Si je clique sur ce qu'il apparaît différents appareils afin que je puisse sélectionner différents appareils. Donne sept plus un sept. Peu importe ce que c'est, ça n'a pas d'importance. La chose importante à savoir, c'est que c'est sept comme un écran le plus grand que cinq. Donc si je dépose ce changement de couleur ici et que je le mets juste dans le coin inférieur là-bas ou peut-être un peu en haut, nous le mettrons là. Que se passe-t-il si nous l'exécutons sur notre iPhone 5 s, qui a un écran plus court et plus étroit ? Eh bien, on a une ère. Ça n'a rien à voir avec le déplacement. Honnête. Ah, essayons encore ça. En plus, d'accord, ça ne marche pas. Vous allez probablement frapper par erreur aussi. Alors ce que nous faisons quand cette ère arrive, c'est que nous appuyons sur notre bouton d'accueil sur notre simulateur, nous cliquons et maintenons notre torche Astro, et nous frappons le X pour la supprimer. Voyons si on peut charger ça. On y va. C' est le chargement. Ok, donc nous chargeons notre application et nous n'avons pas de bouton. Il a disparu hors écran parce que l'iPhone cinq s a un écran plus petit que les sept . Donc, évidemment, arrêtons ça de courir. C' est un problème. Maintenant. Si nous voulons notre vous, je travaille constamment sur tous les appareils. On a besoin d'un moyen de positionner ce bouton. Alors comment on le fait ? Eh bien, juste en dessous de cet écran, nous avons quatre minuscules icônes et lit dans la pile une ligne, ajouter de nouvelles contraintes et résoudre les problèmes de mise en page automatique. Maintenant, ce que vous pouvez faire est que vous pouvez cliquer sur résoudre la mise en page automatique et plus ou moins qui fera les choses automatiquement. Mais tu es développeur. On ne fait pas les choses automatiquement. Nous faisons les choses délibérément pour qu'elles soient exactement comme nous l'avions prévu, alors ne voulez pas vraiment utiliser les mises en page automatiques. Ce que nous voulons faire est de couper le deuxième bouton dans lequel dit, ajouter de nouvelles contraintes lorsque vous cliquez. C' est si vous avez vos boutons sélectifs. Il vous permet de positionner le bouton à partir des bords de l'écran sur l'appareil en cours d'exécution. C' est donc important sur l'appareil actuel. Donc, si je veux positionner ce 10 points d'écran du haut et 10 de la gauche, vous remarquerez quand je remplis ces valeurs, le bouton en bas dit ajouter aux contraintes. Donc je vais le faire aux deux contraintes, et nos éléments vont sauter au sommet. Si nous cliquons et faisons glisser les éléments, barres orange apparaissent et ces barres orange me disent que c'est hors de propos pour le moment et me dit par combien. Mais il y a un petit contour orange où le bouton devrait être. Donc maintenant, si je lance ça sur mon iPhone 5 s, je pense que vous pouvez deviner ce qui va se passer. Cela va le mettre au bon endroit, donc il est toujours dans le coin supérieur gauche, ce qui signifie que chaque appareil affichera le bouton dans le coin supérieur gauche. Même si que ferons-nous ici ? Allons au matériel de note de fenêtre. C' est là. Nous voulons faire tourner notre appareil à gauche. Il l'affiche toujours dans le coin supérieur gauche, ce qui est excellent. On peut le faire tourner vers la droite et il le remet. Donc je O. S fait tous ces trucs pratiques automatiquement pour nous ? Bien sûr. Est-ce que Button fonctionne toujours, quelle que soit l'orientation hors de notre écran, est-ce pas ? Alors arrêtons ça de courir maintenant. Évidemment, nous n'avons pas seulement à des contraintes si nous cliquons sur l'icône des contraintes, nous pouvons la sélectionner du bas du côté, et vous remarquerez que cet espace est celui du voisin le plus proche. Et ça veut dire qu'il y a quelque chose à côté. Il va le contraindre, peut-être orteil cet élément afin que nous puissions restreindre divers éléments à d'autres éléments si nous le voulons . Nous pouvons également leur donner une largeur fixe de hauteur fixe. On peut changer leur rapport d'aspect. Maintenant. La dernière chose est l'icône suivante le long des petites barres qui disent une ligne. Lorsque vous cliquez sur ce que nous pouvons effectivement aligner cela horizontalement dans le conteneur, donc cela va le centrer si nous mettons zéro là-dedans et il va le centrer si nous mettons zéro dans le conteneur verticalement. Mais pour ce faire, nous devons supprimer ces contraintes qui existent déjà. Alors supprimez-le et sélectionnez l'icône orange dans élite. Sélectionnez le bouton, sélectionnez la ligne horizontalement et ajoutez fondamentalement les deux contraintes et il apparaît au milieu directement au milieu de notre écran. Donc, si je le déplace, nous obtenons le même avertissement que vous pourriez devoir cliquer sur et désactiver deux fois là-bas parce que je pense que c' est le bug dans le code X précoce, mais de toute façon, cela vous montre qu'il est centré. Et évidemment, si on exécute ça, ce bouton sera centré. Donc c'est très utile. Si vous aviez un écran de connexion ou quelque chose ici, vous voudrez le mettre au centre de chaque appareil. Donc, vous savez qu'il est affiché très bien en vue, c'est ainsi que nous limitons les éléments en fonction de la taille hors de l'écran sur laquelle votre application est en cours d'exécution. 24. Projet d'écran de Astronomy de l'astronomie: Donc, c'est le moment où vous n'avez pas tous hâte de faire vos devoirs ou votre mission. Maintenant, c'est un peu dur, mais je vais vous donner des indices pratiques pour vous aider à le faire. Jusqu' à présent, notre torture change de couleur une fois qu'elle change juste pour lire, et vous savez comment faire ça. Maintenant, en changeant la couleur d'arrière-plan hors de la vue, cependant, je veux que cela change aussi bleu orteil. Chaque fois que nous cliquons à nouveau sur le bouton et puis prêt à cliquer sur le bus. Et encore une fois, je veux revenir à lire. Alors va devenir rouge, bleu, rouge, bleu, rouge, bleu. Donc, votre travail consiste à changer le code dans le contrôle de vue de la classe afin d'y parvenir. Et voici quelques conseils. Tout d'abord, vous avez besoin d'une variable booléenne pour garder une trace de la couleur de l'écran. Ensuite, vous devez utiliser et si d'autre comparaison, pour vérifier quelle est la couleur actuelle de l'écran. Enfin, vous devrez retourner la valeur booléenne chaque fois que le bouton est appuyé. Maintenant, c'est un peu difficile, et si vous avez du mal à le conceptualiser, revenez à ma section de base dépouillée quatre et jetez un oeil à la section variable recueille , blâmez des milliards et jetez un oeil à la, Si d'autres déclarations de comparaison Pour comprendre ce qui se passe, alors je vais juste vous donner un indice. Je vais le faire maintenant en code X. Je vais vous montrer comment configurer la variable booléenne dont vous avez besoin ici. Nous sommes dans le contrôleur de vue maintenant notre variable booléenne. Je vais stocker ce qu'on appelle le niveau de la classe. Ça veut dire que c'est un niveau dans la classe. Donc c'est ici. Il n'incite aucune de ces fonctions, mais c'est en dehors d'eux et nous allons appeler ce VAR. L' écran est des patinoires, et nous allons définir cela égal à quelque chose qui est faux, parce que lorsque nos téléchargements cet écran n'est pas rouge, c'est simplement dunk. Ok, donc c'est ton indice. Vous pouvez suivre le reste des indices que les déclarations FL et retourner Cet écran est variable rouge comme votre affectation de devoirs, et je vous verrai dans la prochaine conférence quand je vous donnerai ma solution 25. Solution d'écran de astronomie: Bienvenue de retour. J' espère que tu n'as pas trop lutté avec cette mission. Si vous vous souvenez, nous voulons changer la couleur de notre écran du bleu au rouge, bleu au rouge, bleu au rouge. Et nous avions besoin d'une logique de codage pour le faire. Jetons donc un coup d'oeil à ma solution pour ce problème. Si vous vous souvenez, je vous ai laissé un indice de notre écran. Si vous vous souvenez, Le rouge est des projections, rouge est égal à faux. Et c'est un booléen. Donc ne peut être vrai ou faux maintenant et jamais nous ne cliquons sur notre bouton. Ce que nous voulons faire est de vérifier la couleur de cet écran. Donc, si l'écran est rouge, alors cette valeur va être vraie. Se qui ressemble à ça. Si le cri est rouge, si c'est vrai, effectuez le code suivant. Et si c'est lu, on veut le transformer en bleu. Points de vue auto-ancrés. La couleur d'arrière-plan est égale à vous. Je colore les gardes en bleu. Alors si notre écran n'est pas rouge, nous pouvons dire autre et nous pouvons copier cette ligne ou la couper ici maintenant, juste une note rapide. J' ai mis ce demi-côlon à la fin. On n'a pas besoin de ça. C' est juste une de mes habitudes. Dès que je tape C sharp ou d'autres langages de programmation, vous n'avez pas besoin d'avoir une ligne se terminant par Swift. Alors c'est mon père. Désolé pour ça, c' vrai, donc ça s'en occupe. Si l'écran est rouge, va le tourner en bleu sinon. Si ce n'est pas le cas, Red le changera pour louer des bunts. Ce booléen hors écran est rouge reste faux tout le temps, ce qui n'est pas bon, parce que si elle reste fausse, nous n'utiliserons jamais cette partie de notre si autrement à la fin, nous voulons changer le loyer des écrans. Maintenant, on pourrait le faire ici. On pourrait dire que l'écran est rouge, il est égal à faux. Et puis ici l'écran est rouge est égal à la vérité, et c'est une façon parfaitement valide de le faire. Mais il y a une sorte de coupe courte que nous pouvons utiliser pour des milliards afin que nous puissions supprimer cela et en dessous de la déclaration if else si complètement en dehors de celui-ci, nous pouvons dire que l'écran est rouge est égal à et puis mettre l'écran de marque d'exclamation son loyer, et ce c'est que c'était un peu effrayé pendant une seconde quand j'ai vu les flèches comme, euh, si elles changent quelque chose, mais non, ils ne l'ont pas dit rendre les écrans rouges, égal à la valeur opposée de l'écran est rouge, donc si c'est faux, le d'exclamation physique signifie qu'il le rendra vrai. Donc vrai sera écrit ici, et vice versa. Droit ? Dit vrai uec. Nous allons frapper, jouer et exécuter dans le simulateur et espérons que nous aurons une belle couleur d'écran de commutation . On y va. Je vais juste faire pivoter ces fouets. J' ai appuyé sur la mauvaise combinaison. Si vous appuyez sur la commande L, il verrouille réellement votre écran. Ce qui a été frappé une fois. Commande et flèche. On y arrive. Si je change de couleur, on aura des rouges. Clignotant rouge bleu. Mais vous remarquerez, bien sûr, quand il est bleu, Button disparaît parce que notre bouton est aussi bleu. Donc ce n'est pas bon, est-ce pas ? Je pense qu'on devrait avoir un bouton de couleur blanche, alors faisons-le. Je n'avais pas l'intention de faire ça, mais je déteste que les choses soient inachevées. Allons à notre storyboard, Sélectionnez notre bouton, et plus dans les droits, nous pourrions choisir une couleur blanche. Cela signifie que nous ne pouvons pas le voir maintenant dans notre storyboard, mais il sera visible à l'intérieur de notre application. On y va. Donc ça a l'air plutôt bien. Changer de couleur. La couleur de Shane ressemble à une voiture de police. D' accord. Vous pourriez utiliser cette application pour usurper vos amis, n'est-ce pas ? S' ils vous conduisent sur le siège arrière, clignotez ça. Alors ils pensent que la police le défonce. Je pense que ce serait assez drôle. Je pourrais le faire. Quelqu' un que je connais. Quoi qu'il en soit, revenez au sujet à portée de main qui complète votre toute première application IOS. C' était simple, n'est-ce pas ? Vraiment, vraiment simple. Dans la prochaine conférence, je vais résumer tout ce que nous avons fait pour que vous puissiez avoir un petit résumé. Et une fois que j'ai terminé ce résumé, je vous conseille de faire une petite pause avant de passer à la section suivante juste pour laisser tout mijoter bien. 26. Résumé de votre première application iOS: Félicitations. Tu as fini. Vous avez créé votre toute première application, une torche d'écran et vous avez appris tous les principes fondamentaux. Faisons juste un joli petit résumé. Vous comprenez ce qui s'est passé ? Tout d'abord, nous avons créé un nouveau projet et nous avons regardé tous les fichiers qui entrent dans un projet. Nous avons accordé une attention particulière au storyboard et aux fichiers swift du contrôleur de vue. Et nous avons appris comment les vues du storyboard et le contrôle de vue sont en fait un lien pour voir les fichiers swift de points de contrôleur ou toute autre classe dans ces fichiers que nous voulons spécifier. Ensuite, afin de créer notre torche d'écran de police qui fonctionne parfaitement, qui est scintillant du bleu au rouge . Nous avons ajouté du code à notre vue, contrôle Nous avons les écrans booléens prêts appelés faux. Et puis nous avons glissé dans un bouton clic événements de notre storyboard en utilisant l'éditeur assistant puis à l'intérieur de ce bouton cliquez qui se déclenche chaque fois que vous cliquez sur le bouton. Nous avons vérifié si l'écran était rouge et si c'était le cas, nous l'avons tourné en bleu et vice versa. On l'a tourné pour lire et on a retourné. L' écran est booléen rouge Donc, dans tout cela, j'espère que vous pouvez voir comment nous avons connecté une partie graphique de notre programmation et la partie e du langage réel ou la partie de frappe réelle de notre programmation. C' est une distinction très importante pour vous de savoir en tant que programme que nous voulons toujours séparer les différentes préoccupations à l'intérieur de R AP Graphics ici code là-bas Maintenant, la dernière chose que nous avons regardé était la contrainte. Donc, en fait, c'était la deuxième chose. Mais la dernière chose dans mon résumé que nous avons regardé quand nous avons un élément dans notre storyboard, nous voulons le contraindre parce que la contrainte lui permet de se positionner par rapport à la taille de l'écran hors de l'appareil particulier. Il fonctionne parce que beaucoup d'appareils ont des sites différents, des écrans, peut-être des densités de pixels différentes. Apple a donc conçu ce système de contrainte, sorte que vous avez une expérience cohérente sur tous les appareils. Maintenant, plus tard, vous devenez un développeur plus avancé. Vous ferez deux versions de votre vous. J' ai gagné pour iPhone un pour iPad parce que l'immobilier de l'écran est immobilier est différent, donc vous pouvez le faire. Mais pour l'instant, c'est un moyen agréable, pratique et rapide de commencer. si bien fait pour terminer cela une fois de plus. Et encore une fois, je dis, une pause une fois que c'est fait et pendant que vous faites une pause ici quelques beaux feux d'artifice pour vous voir dehors. 27. Introduction au M5 1: Bienvenue dans le module suivant de ce cours où nous allons créer un convertisseur de température . Nous allons donc nous baser sur certains des concepts que nous avons déjà appris dans les sections précédentes . Pour ce faire, on va le baser, bien sûr, autour du cou, qui est un convertisseur de température. Ce qu'on va faire, c'est qu'on va convertir des degrés Celsius 2 F. Dites, si tu mets Celsius dans cette boîte, tu cliqueras sur ce bouton de conversion, tu auras une sortie en Fahrenheit. Donc, tout cela semble assez simple. Allons-y. 28. M5 2 Réalisation de l'écran principal de la température: la première partie, bien sûr, c'est de créer l'interface graphique à partir de notre température. Maintenant, je trouve plus facile de créer les graphiques avant d'écrire un code. Il y a quelques exceptions à cela, mais pour la plupart je pense que c'est une bonne idée, parce que je suis une personne très visuelle. J' aime voir ce que je fais avant d'écrire un code derrière. C' est donc ce que nous allons faire dans cette section, qui va créer cet écran très, très basique avec une zone d'entrée, un bouton puis une zone de texte pour nos résultats. Nous avons imprimé à Avec cela dit, tout est assez simple. Alors ouvrez le code X et commençons un tout nouveau projet sur l'écran principal du titre. Créons un nouveau projet X Code en allant dans le fichier Nouveau projet. Maintenant, comme avant, nous voulons IOS et une seule vue. Donnons un nom à ça. Convertisseur de tentations. Laissons aussi le nom de l'organisation. Si vous aimez votre identifiant comme site Web. Si vous en avez un aussi rapide, nous voulons la langue. Nous ne voulons pas de données de base, et nous ne sommes pas dérangés par le test, alors nous allons simplement les laisser et frapper ensuite. Ensuite, bien sûr, moins Créer cela quelque part dans notre système de fichiers. Droit ? Donc nous sommes tous triés. Nous avons notre tout nouveau projet. La première chose que je vais faire est de fermer certains de ces dossiers avec le côté afin que nous ne soyons pas confus. Et encore une fois, je vais attirer votre attention sur le côté gauche où nous avons notre dossier de projet et tous les fichiers pertinents. Maintenant, cette section, nous allons juste créer l'interface utilisateur graphique, sorte qu'il est situé dans notre fichier principal de storyboard dot. Maintenant, la première chose que nous devons faire est de donner à ça un beau et gênant arrière-plan. Donc, vous savez comment étudiant de la dernière fois cliquez sur votre contrôleur de vue, cliquez sur la vue à l'intérieur du contrôleur de vue Et puis juste pour vous assurer que vous avez réellement sélectionné la vue sur le côté droit, cliquez sur cet inspecteur d'identité et ce devrait avoir un gris clair qui vous dit que je vois et qui indique que vous avez la vue principale. L' autre façon de savoir que vous avez sélectionné cette vue est d'aller à ce genre de douleur moyenne sur la gauche et sous notre contrôleur de vue, nous vous avons disponible, et c'est la même façon que de le sélectionner. Mais cela nous donne aussi une belle superposition bleue sur l'écran lui-même. Nous savons donc ce que nous avons sélectionné avec cette sélection. Cliquez sur les attributs et modifions notre arrière-plan. Cliquez sur d'autres et nous allons trouver cette belle couleur orange que nous avions avant. Maintenant, je veux juste souligner quelque chose. On dirait que j'ai une couleur orange ici, n'est-ce pas ? Oui, dans mon petit pick-up. Mais ici, à mon avis, il semble un peu brun, et c'est un bug étrange vient de découvrir. Mais si je lance ça à l'intérieur de mon simulateur, la couleur est en fait l'orange que nous attendons. Donc je ne sais pas vraiment de quoi il s'agit. Et normalement, si quelque chose comme ça arrive, je regarderais les propriétés ici et je regarderais l'Alfa. Peut-être que la tente aurait quelque chose à voir avec ça. Peut-être un cochon ? Non, mais il n'y a rien là-bas. Alors ne vous inquiétez pas. Si vous n'obtenez pas tout à fait la bonne couleur, elle sortira directement sur ce simulateur. Droit ? Donc nous avons choisi notre petite couleur d'amour. Maintenant, ce qu'il reste à faire, Nous devons mettre dans nos éléments graphiques et un éléments graphiques se composent d'une zone de saisie de texte . Donc, sur le droit important, nous avons besoin d'une sorte d'élément. C' est à voir avec le texte afin que nous puissions cliquer, filtrer et taper du texte. Maintenant, si on les sélectionne, ça nous dira ce qu'ils font. Affiche autour du rectangle qui contient du texte créditable. Et quand l'utilisateur appuie sur un clavier apparaît, C'est parfait. C' est exactement ce qu'on veut. C' est cliquer et faire glisser l'un de ces vers notre vue, et leurs arrière-plans ont changé de couleur pour la couleur correcte. Maintenant étrange de toute façon, maintenant que nous avons ça, nous pouvons en quelque sorte le placer quelque part sur notre écran. Nous pouvons sélectionner ces poignées sur le côté. On peut le faire sortir du lit. Si nous avons travaillé et que nous le centrons maintenant, je ne vais pas le positionner en utilisant ces contrôles en bas, parce que je veux traîner sur mes autres éléments se Mettons ceux-ci avant de décider positionnement. Prenons un bouton, et puis ce bouton, je pense, devrait être coloré en blanc. Et n'oubliez pas, si vous ne pouvez pas le faire monter en haut, cliquez sur l'inspecteur d'attributs beurrés d'attributs. Ensuite, nous devons changer le texte du bouton pour convertir en Fahrenheit. Et il devient un peu squash pour que nous puissions cliquer dessus une fois et juste faire glisser ça dehors et corriger mes conversions orthographiques en Fahrenheit. Je vais en quelque sorte envoyer à ça d'une façon ou d'une autre. Et je vais aussi augmenter cette taille avant. Donc, dans notre section de petites propriétés, nous pouvons cliquer sur le thé et nous pouvons augmenter la taille de la police là-bas, ou nous pouvons l'augmenter juste sur le côté droit. Ici, nous obtenons un bouton assez grand. Vous devez toujours vous rappeler que ce sera un tout petit écran par rapport à la main de quelqu'un, donc votre bouton doit être relativement grand. Maintenant, votre zone de touche est tout à l'intérieur de ce rectangle ? Ce n'est pas seulement la zone de texte. Ok, donc on a ça. Ensuite, nous avons besoin d'une boîte pour afficher notre résultat. Maintenant, cette première case, nous pouvons entrer du texte, mais notre résultat nous ne voulons pas vraiment entrer de texte. Nous voulons juste en afficher certains afin que nous ne voulons pas que l'utilisateur puisse le modifier. Voyons quelles options nous avons pour le texte sur l'affichage de l'objet en bas à droite. On pourrait avoir une vue de texte. Qu' avons-nous d'autre ? Si nous supprimons simplement du texte, nous pouvons réellement faire défiler tout. Donc, nous avons tout un tas de choses se rapportent aux contrôleurs de vue. Ah, nous avons cette chose appelée une étiquette, qui est une vue de texte en lecture seule. Ça a l'air parfait. Alors traînons ça jusqu'au milieu. Changeons sa couleur. Donc devrait déplacer cela vers le bas. Et notre couleur est juste en haut. Utilisons le blanc, et nous pouvons aussi augmenter cette taille de police et ensuite la faire glisser. Vous remarquerez qu'il ne s'alignera pas car il s'aligne par défaut sur le côté gauche. Donc, pour changer cela, nous pouvons changer l'alignement. Maintenant, petits attributs, inspecteur, ce bouton le fera pour nous. Ok, maintenant, je pense que mon bouton de conversion va être déplacé au centre. C' est plutôt bien. Je peux avoir cette étiquette quelque part ? Et cette boîte d'entrée ici qui sonne bien, ne sonne pas bien, ne fait pas de bruit. Donc tout cela est centré autour du bouton. Il est donc logique de cliquer sur le bouton et de le positionner horizontalement et verticalement au centre du conteneur. Maintenant, nous pouvons positionner tout le reste en fonction de la position des boutons afin que nous puissions appuyer sur le contrôle et le maintenir enfoncé. Cliquez sur Convertir et maintenez-le enfoncé dans le champ de texte. Et lorsque vous relâchez le bouton de la souris et que vous pouvez relâcher le contrôle, le contrôle, vous remarquerez que nous avons toutes ces options. Horizontal, vertical, espacement, haut. Nous pouvons aligner les sommets d'eux. Nous y consentons verticalement. Il y a tout un tas de choses qu'on peut faire. Nous voulons juste l'espacement vertical. Donc, si nous cliquons sur ce qu'il mettra automatiquement un venu droit pour nous, c'est celui de sélectionné là. Maintenant. Si je clique sur cette contrainte, vous remarquerez dans la droite. On peut en changer la valeur. Donc, je peux tout à fait jusqu'à 25 et vous voyez que ça change. Maintenant, contrôlons le clic à partir du bouton de conversion à l'étiquette, et nous allons avoir un espacement vertical là, aussi. Ça a l'air assez bien Maintenant, ce bouton de conversion, je pense, doit être plus grand. Alors montons cette taille avant et remarquons comment tout se déplace hors du chemin pour s' adapter aux contraintes que nous avons placées dessus auparavant. Cliquez sur notre étiquette. Changeons-le pour répondre en Celsius, puis changeons un peu la taille de celui-ci. Faisons en sorte qu'il soit complètement envoyé. Ok, ça a l'air juste. Maintenant. Choisissons notre réponse et notre étiquette Celsius. C' est la contrainte sélectionnée sur Donnons-lui une largeur fixe parce que nous ne voulons pas vraiment que cette largeur change. D' accord, donnons-lui aussi une hauteur fixe. Ok, maintenant vos motifs juste en dessous. Cette intelligence est de couleur rouge, et j'ai besoin de le sélectionner et juste sélectionner l'étiquette pour que vous puissiez voir qu'il y a cette couleur rouge . Cela signifie que ce n'est pas corrigé, et cela signifie qu'il peut se déplacer, ce qui n'est pas bon. Donc, ce que nous devons faire est d'aligner cela sur le centre aussi, sorte qu'il est aligné horizontalement. Donc, sélectionnons notre horizontalement et conteneur et ajoutons cette contrainte et le rouge disparaît . Maintenant, il sait où il doit être à l'écran. Faisons la même chose pour notre entrée de texte en haut. Sélectionnés. Donnons-lui à la fois la largeur et une hauteur, et vous remarquerez que la barre rouge apparaît parce qu'elle ne sait pas où elle est, horizontalement parlant. Alors, plaçons aussi les oups au centre horizontalement et le rouge s'en va ? Donc tout est trié. Si nous cliquons sur chaque élément, tout devrait être bleu, et nous ne devrions pas avoir d'erreurs. Parfois un petit avertissement. Essaie d'avoir des pops, mais on verra ça plus tard. Quand je fais une erreur quelque part dans ce cours, accord, je pense que nous sommes dans un bon endroit pour le tester. Alors sélectionnons l'un de nos simulateurs. Peut-être que j'aurai un S E cette fois. Allons frapper le jeu et le déposer dans le simulateur juste pour tester notre petit écran. Nous pouvons également tester la rotation comme nous l'avons fait avant, et juste en attendant qu'elle se charge. C' est une bonne idée si vous testez toutes vos mises en page graphiques sur autant d'appareils que vous ne pouvez pas les deux simulateurs riel avec rotation sans rotation, etcetera parce qu'il y a beaucoup de petites erreurs qui peuvent apparaître que vous pouvez corriger correctement maintenant que vous pouvez vous assurer qu'ils ne apparaissent pas quand il quand un utilisateur a encore qu'ils sont dans leur Excusez-moi quand l'utilisateur a votre application dans leurs mains parce que quand cela se produit, s'ils ont une mauvaise expérience, vous obtiendrez un avis d'une étoile, ce qui craint évidemment, et vous les obtiendrez même si vous êtes le meilleur développeur au monde. Mais nous voulons essayer de les éviter autant que possible, n' est-ce pas ? Donc, il y a notre simulateur de convertisseur de température facilité et de lui donner une seconde à charger. Et ça n'a pas l'air sympa ? J' aime vraiment ça maintenant. Si on appuie sur le bouton, rien ne se passe. C' est prévu. Le texte du bas. Nous ne pouvons pas cliquer dessus, mais nous pouvons effectivement cliquer sur cette case. Et quand ça arrive, notre clavier apparaît. Maintenant, nous voulons un numéro hors de cela, donc nous voulons limiter notre utilisateur à des nombres. Faisons ça en arrière un code X. Arrêtez de courir. Cliquez sur la zone de saisie de texte, puis sur la droite. Si nous faisons défiler vers le bas, nous avons cette section appelée Traits d'entrée de texte. Quel genre de texte mettons-nous ? Donc, nous allons avoir un type de contenu. Cliquons dessus et regardons toutes ces choses que nous pouvons avoir. C' est le truc fantastique à propos de I West. On peut dire que c'est un prénom, donc ça va capitaliser les choses pour nous. Charges et charges et charges de choses différentes. Et si nous continuons à défiler vers le bas, voyons si nous avons quelque chose comme un nombre, il n'apparaît pas, ce qui est dommage. Alors continuons à descendre cette liste. Et donc nous arrivons au type de clavier. Ça a l'air bien. Euh, hein. On peut avoir des chiffres en ponctuation. On peut avoir un numéro qui ressemble à ce dont on a besoin. Donc, avec cela sélectionné, exécutons à nouveau cette application. Et maintenant, on devrait se lever. Qu' est-ce qui devrait vous être familier ? Chaque fois que vous avez cliqué sur une sorte d'entrées sur votre appareil IOS, vous obtiendrez un pavé numérique au lieu d'un clavier. Alors, cliquez dessus. Et on y va. On a notre numéro, donc on peut entrer du texte si on veut. Si je maintiens un de ces boutons, rien ne se passe. Ce qui est bien, parce que nous ne voulons que des chiffres. Bien sûr, nous avons limité notre utilisateur parce que nous ne les laissons pas mettre en décimale. Mais c'est très bien. Je pense que pour ce numéro, parce que je ne pense pas que personne le veuille jamais aussi précis. Je pourrais me tromper. Bien sûr, toute façon, nous avons maintenant conçu l'écran principal de notre application. Il est temps de passer à autre chose et d'écrire du code. 29. M5 3 Éléments principaux au code: Nous avons maintenant l'écran principal de RM trié pour convertir de Celsius à Fahrenheit, mais le bouton ne fait rien pour l'instant, donc ce que nous avons à faire est festival. Attrapez l'entrée de ces dollars. Nous devons saisir le bus et cliquer sur l'action, et nous devons sortir quelque chose dans l'étiquette en bas. Alors regardons comment nous connectons toutes ces choses à notre manteau. Cela semblera un peu familier parce que c'est ce que nous avons fait dans la dernière session de création d'application, où nous avons connecté un bouton toe notre code. Mais cette fois, nous relions quelques éléments supplémentaires. C' est assez simple, alors allons voir comment c'est fait. Maintenant, si vous vous souvenez quand nous avons un storyboard, il est connecté automatiquement à tout ce qui est spécifié ici dans sa classe. Donc, dans ce cas, c'est le contrôleur de vue, et si nous cliquons sur ce contrôle de vue de l'économie de Dot sur la gauche, alors nous sommes présentés avec cette vue de classe, a été chargé et a reçu un avertissement de mémoire. D' autres fonctions standard sont celles qui sont là par défaut. Revenons donc à notre storyboard et connectons les deux festivals, cliquez sur ces icônes en haut à droite pour faire une petite place. Si vous avez un écran plus grand que moi, alors vous n'aurez peut-être pas à le faire. Ouvrons l'éditeur assistant, qui est ces deux cercles, et cela amène les deux fichiers à vue. La première chose que nous devons connecter est cette boîte de saisie. Maintenez donc la touche enfoncée, cliquez sur la case et faites-la glisser vers votre fichier. Lorsque vous relâchez le bouton de la souris, il vous donne quelques options. Vous pouvez sélectionner ceci comme une prise et la sortie est simplement une référence à cette boîte dans cet écran sur la gauche. Appelons ça quelque chose d'intéressant. Disons Entry Tim Text Champ. Maintenant, c'est votre premier aperçu de la façon de nommer les choses. abord, nous le nommons en fonction de ce que c'est, mais la prochaine chose que nous faisons, c'est que nous renversons réellement le genre de chose qu'il est. Donc, quand nous l'utilisons plus tard dans le code, nous savons quel type de chose il est sans avoir à gâcher et regarder trop autour de notre fichier . Donc, il y a sur le type vous champ de texte blanc. Vous n'avez pas à vous taper. Pourquoi parce que le champ de texte est assez bon pour nous. Maintenant, on va le connecter. Maintenant, nous avons une variable pour cet élément. Ok, parfait. Relions maintenant l'étiquette tout en bas. Cliquez et faites glisser quelque part à l'intérieur de notre fichier en tant que prise. Et appelons cette étiquette de réponse. J' ai donc appliqué la même règle un pendentif avec l'article ou le type de chose qu'il est. Raccordons ça. Parfait. Maintenant, ce que je vais faire, c'est que je vais attraper ces deux lignes. Je vais les couper, et je vais les mettre en haut du dossier. Maintenant, ça devrait aller. On ne devrait pas avoir d'erreurs. Mais juste pour m'en assurer, je vais aller à mon menu et je vais chercher quelque chose appelé Build, qui est sous le menu produit, et qui essaie simplement de créer votre application et de m'assurer qu'il n'y a pas d'erreurs. Et en fait, les réussites étaient bien bouger. On devrait aller bien. Il dit qu'il croisait les doigts. On y va. On va bien maintenant. La raison pour laquelle je les ai déplacés au sommet est que c'est une sorte de pratique standard de programmation. Vous mettez toutes vos propriétés et vos variables en haut de votre classe. Donc, vous savez où regarder à l'avenir parce que vous pourriez avoir un fichier qui a 1000 lignes de code, et vous ne voulez pas avoir à regarder jusqu'au bout pour ces variables que vous recherchez . Tu veux juste regarder directement vers le haut. C' est un genre de convention. Fais-le comme ça et tu iras bien. La dernière chose que nous avons à faire est de sortir le bouton, alors nous allons cliquer. Convertir en contrôle Farron Heights. Cliquez ici et faites-le glisser vers le bas. Maintenant, ça n'a pas besoin d'être au sommet parce que c'est une action. C' est un clic de bouton. Donc, nous allons convertir les clics de Boston et le type est n'importe quel. Vous pouvez changer cela pour vous bouton blanc. Je n'expliquerai pas pourquoi c'est en ce moment, mais plus tard je le ferai. L' événement est retouche à l'intérieur, qui est un plan Cliquez et cliquez sur connecter. Maintenant, nous avons notre fonction pour les boutons, donc tout est branché, pour ainsi dire. Nous allons frapper le produit une fois de plus, et cela nous dira que tout fonctionne, et si c'est vrai, nous pouvons réellement envoyer cela à notre jeu de succès simulateur. Et si ça arrive bien, alors nous sommes en mesure de procéder. Excellent. Donc une petite boîte d'entrée fonctionne toujours ? Tout va bien, non ? Nous sommes prêts à écrire ce que nous appelons la logique de notre acte. C' est donc le code qui prendra notre numéro. Il se convertira en Fahrenheit et l'affichera ensuite. 30. M5 4 Écrire le code principal: Maintenant, nous allons écrire le code rapide principal pour notre confort de température pour agir i e. Le code se trouve derrière ici et fait toute la magie pour nous. Alors ouvrez votre projet et suivez beaucoup, n'est-ce pas ? Voici notre projet. Réorganisons ça. Éteignons cet éditeur assistant que nous avions laissé et réinitialisons les barres latérales des heures et déplacons cela au centre. On y va. Tout va bien maintenant ont été codés. Alors ouvrons notre contrôleur de vue dot swift. Et rappelez-vous, nous avons une entrée, champ de texte temporaire et une étiquette de réponse, et un bouton de conversion cliqué. Alors, quelle est la première chose qu'on a à faire ? Eh bien, on doit vérifier ça. Nous pouvons obtenir du texte à partir de ce champ d'entrée car il pourrait être vide. Donc, la première chose que nous faisons est de dire, si le résultat est égal à notre entrée, tenter le texte de point de champ de texte, puis ouvrir et fermer les accolades. Pourquoi ai-je fait ça ? Pourquoi ai-je mis si je laissais pourquoi je n'ai pas juste ça ? Eh bien, nous allons cliquer sur cette ère et voir, ou ce résultat d'avertissement a été défini mais jamais utilisé. Idée Yadi Ok, assez juste. Ça ne teste pas ce qu'on doit savoir. J' ai utilisé ceci parce que ce texte pourrait ne pas exister réellement. Et je ne veux pas dire le texte que quelqu'un a tapé. Je veux dire la propriété réelle. En termes de programmation, c'est un peu difficile à comprendre pour le moment, mais c'est toujours une bonne idée de vérifier que les choses existent. Et si c'est le cas, on peut continuer. Donc nous avons ce texte. Il existe. Nous avons une chaîne hors de lui parce que si je retourne à ce texte et que je tape à nouveau, cela me dit que c'est une force. Mais écoutez, c'est facultatif. Il y a un point d'interrogation Suivant, une chaîne. Rappelez-vous les options de quand quelques modules de retour. Donc il pourrait y avoir des textos là-bas ? Ils pourraient ne pas. Voyons si on réussit à traverser ça. Si déclaration, alors nous voulons vérifier s'ils ont réellement mis des textos et pas seulement des taches blanches vierges. Donc, nous voulons vérifier si le résultat est égal à citation, citation, citation, et cela signifie vide parce qu'il n'y a rien entre eux. Donc, s'il n'y a pas de résultat, nous voulons arrêter le traitement parce que ce n'est pas une bonne idée de continuer donc nous allons taper return . Et qu'est-ce que le retour ? Est-ce que c'est complètement sortir de ça ? Il ne continue à traiter aucune des lignes en dessous. Il sort complètement de cette seule fonction. Ok, bunts. Si nous en avons, alors ce retour ne sera pas traité, donc nous pouvons en dire autrement et nous pouvons en faire quelque chose maintenant . La première chose que nous devons faire est de convertir ce nombre, car pour le moment c'est une chaîne et pas un nombre. Et même si le clavier apparaît et que c'est le numéro, notre code réel ne sait pas, que c'est le nombre est toujours considéré comme une chaîne. Alors corrigeons ça. Disons, si nous allons non est égal à et ce que nous allons dire est un double parenthèses ouvertes résultats. Qu' est-ce que j'ai fait ici ? Eh bien, j'ai pris le résultat, et j'ai dit, si vous pouvez en créer un double, c' est pour ça que c'est entre ces deux crochets. Ensuite, mettez cela dans cette variable appelée numéro ouvrir et fermer nos accolades. Maintenant, j'ai dit avant que vous vouliez éviter de convertir autant que possible, mais dans ce cas, c'est quelque chose que vous devez vraiment faire. Ok, donc une fois qu'on a le dos, on a notre numéro. Maintenant, nous devons convertir ce nombre 2 F. Donc laisser la sortie égale au nombre fois. Et quant au risque est fois qui est au-dessus de votre huit sur la plupart des claviers frappent Maj huit. Et la façon dont vous vous convertissez à Fahrenheit, c'est en disant neuf divisés. C' est permettre barre oblique cinq plus 32 est la façon dont vous convertissez en Fahrenheit de Celsius. Parfait. Donc nous avons le nôtre. Alors, où le mettons-nous ? Eh bien, nous voulons mettre ceci dans notre étiquette de réponse, donc l'étiquette de réponse ne pas le texte est égal à Et nous pourrions juste dire la sortie. Mais voyons ce que le code X dit à ce sujet. Nous avons une erreur, parce que c'est la bonne ère ? Ça va changer. Là, nous allons ne pouvons pas assigner la valeur de type, double pour type chaîne. Cela signifie que cette sortie est un double, et nous essayons de le mettre dans une chaîne qui ne fonctionne pas. Donc, nous devons le lancer à nouveau à une corde. Ok, donc une fois qu'on a couru, on devrait avoir nos résultats. Sauvegardons ça et frappons le jeu. On y va. Allez d'abord, vérifions si on appuie sur le bouton. Si c'est vide, rien ne se passe. Cliquez sur la boîte et mettons quelle température est-il là où je suis, environ 30 degrés Celsius. Allons frapper. Convertir en F. On a 86 F. Ah, mais on a un problème. Le clavier est sur notre chemin. Nous ne allons pas couvrir comment déplacer le clavier sur le chemin pour l'instant. Cela vient dans un module beaucoup plus tard, mais pour l'instant nous pouvons aller à notre storyboard, et ce que nous pouvons faire, c'est que nous pouvons tout changer. Alors, nous allons cliquer dessus. Convertir en bouton Fahrenheit, cliquez sur cette barre horizontale parce que, ironiquement, l'horizontale est en fait l'espacement vertical dans l'axe Y. Et si vous double-cliquez dessus, vous pouvez changer sa constante. Alors, allons-y et peut-être 75. Ou nous allons en fait soustraire 75 et qui déplace tout vers le haut et vous pouvez voir la beauté des contraintes. Il bouge tout avec elle. Donc maintenant, si je lance ceci, ça devrait être déplacé et notre clavier ne sera pas vraiment gêné. Donc maintenant, nous pouvons cliquer sur 30 degrés convaincu 86. Parfait. Faisons 50 degrés convertir 1 à 2. Donc, vous avez une température de travail magnifiquement convertie. Maintenant, dans la section suivante, je vais vous donner juste une petite mission, et ce n'est rien que vous n'avez pas fait avant et ça ne prend pas beaucoup de temps, alors j'aimerais que vous essayiez ça ensuite. 31. M5 5: il est temps de faire un peu de devoirs. Ce que je veux faire est de prendre notre application telle qu'elle est. Et j'aimerais que vous ajoutiez une petite étiquette en haut de l'écran juste là. Et ce label va être un peu sourd. Ce n'est pas une caractéristique principale de notre, mais il nous indique combien de conversions nous avons effectuées au cours de cette session. Maintenant, cela peut sembler un peu ridicule, mais il a un très bon but quand il s'agit de rendre absent vos données d'envoi d'avant en arrière , mettre des choses dans la base de données et ce qui ne pas ajouter de choses et compter le nombre de fois que vous avez effectué certaines opérations est en fait assez bon pour le débogage. Vous êtes dehors et clouez les zones qui gênent tout le processus du pouvoir. Donc, ces devoirs ont en fait une très bonne raison. Maintenant, je ne suis pas un sens. Voici donc quelques conseils pour vous aider sur votre chemin. Tout d'abord, vous allez avoir besoin d'une variable entière pour suivre le nombre de clics, et ce sera une variable de niveau classe. Ensuite, vous allez devoir en ajouter un à l'entier chaque fois que vous cliquez sur le bouton. Et enfin votre mise à jour de l'affichage pour afficher le nombre réel de clics sur. Alors c'est tout. Bonne chance et bonne vitesse. 32. Solution M5 6: Allons passer en revue la solution aux devoirs que je t'ai fixés. Si vous vous souvenez, je veux que vous en ajoutiez un petit. Conversions, deux conversions, trois conversions compteur en haut, coin gauche de votre application. C' était un peu sourd. Alors regardons ma solution. Mais juste avant nous. Si vous avez une solution légèrement différente qui est absolument bien dans la programmation, il n'y a pas vraiment de mauvaise réponse tant que cela fait le travail dans le moins lignes hors couche. Donc, si vous avez une solution qui est meilleure que la mienne et n'hésitez pas à la publier afin que tous les autres étudiants puissent voir Ouvrez votre projet et regardons à quoi ressemble la solution . Ok, avec notre storyboard ouvert, la première chose que nous allons faire est de glisser une étiquette, et nous allons positionner ça quelque part près du coin supérieur gauche maintenant, parce que nous avons positionné en haut à gauche, chaque appareil a un coin supérieur gauche, donc nous n'avons pas à nous soucier tant du positionnement. Donc, ce que nous pouvons faire dans ce cas, c'est tout simplement 12 et 12 en haut et à gauche, et cela va le limiter aux côtés de notre écran. Vous pouvez voir qu'il y a deux très petites étiquettes là-bas. Si je fais un zoom avant, vous pouvez le voir encore mieux. Donc vous avez ces deux petites contraintes bleues. Ok, donc c'est parfait. Cliquez sur notre étiquette. Allons-le un peu. Donnons-lui une longueur fixe wits. Ajoutez la contrainte. Maintenant, juste un point à noter. Si je édite cela avec elle dit 156 le plus petit appareil IOS Wits, au moins un que vous tenez dans votre main est 320. Donc 156 conviendra toujours. On n'a pas à s'en soucier. Sélectionnez à nouveau l'étiquette. Et ce que nous pouvons faire est de définir des propriétés dessus. Donc, tout d' abord, nous voulons que cette couleur soit une sorte de gris clair pour qu'elle ne pénètre pas en quelque sorte. L' autre façon de le faire est que vous pourriez le rendre un peu gris foncé, et vous pouvez faire défiler vers le bas jusqu'à Alfa. C' est l'opacité. Comme il est facile ou difficile de voir à travers. Et en réduisant l'Alfa, vous réduisez également sa visibilité. Donc, si on clique dessus. Il est maintenant très silencieux. Parfait. Maintenant, ouvrons notre assistant rédacteur en chef. Donc, pour faire de la place et nous allons cliquer et faire glisser cette étiquette dans notre petite rangée de points de vente I B. Et appelons cela ce que nous appelons cette étiquette de comptes de bus ou peut-être un meilleur nom car il est Bouton cliqué. C' est beaucoup plus descriptif maintenant. Il peut sembler que je suis un peu pédant à propos de ce nommage, mais vous pouvez imaginer que si vous avez 10 boutons à l'écran, ce nommage peut en fait très important pour comprendre ce qui se passe. Donc nous voulons juste que ce soit un débouché. Raccordons simplement ça. Ok, éteignons l'assistant rédacteur en chef et remettons les barres en place. Et rappelez-vous toujours, vous n'avez pas à le faire si vous avez un écran plus large que moi. Mais j'ai besoin d'un écran plus petit pour que vous puissiez voir ce qui se passe beaucoup plus facilement en ce moment. Ça a été moche d'avoir cette étiquette là, donc je peux double-cliquer dessus, et je peux l'éditer directement. Mais je peux juste supprimer. Ça ne veut pas dire que les étiquettes ont disparu. Il est toujours là. n'y a pas de texte à l'intérieur. Maintenant on peut faire la même chose sans répondre au Celsius pendant qu'on est là, pourquoi pas ? Donc, nous pouvons simplement supprimer ça. Donc maintenant, il a l'air un peu plus propre, un peu plus heureux, si vous voulez. Éditons le contrôleur de vue et mettons nos fonctionnalités dans cette étiquette. Donc d'abord, j'ai dit que tu avais besoin d'une interview. Donc c'est simple hors de notre compte. Interject est égal. Pas si ça devrait l'être. Attendons que ces erreurs disparaissent. On y va. Ok, maintenant on veut que ce compte augmente chaque fois qu'on clique sur notre bouton. Donc on veut regarder à l'intérieur. Notre bouton de conversion a cliqué, et nous voulons seulement l'incrémenter. Si notre bouton de conversion est effectivement cliqué et que cela fonctionne, nous ne voulons pas en ajouter un. Si nous n'avons rien dans notre champ de texte, par exemple, afin que nous sachions ajouter, nous pouvons dire compte plus égal à un. Parfait. Alors ce que nous devons faire, c'est changer notre label. Mais j'ai une solution différente pour vous, qui va entrer dans une minute. C' est assez soigné. Votre chance. C' est ça. Ok, donc on a ajouté le compte. Maintenant, nous devons changer notre étiquette. Alors, quelle est notre étiquette appelée Bouton click Label Button Clics étiquette. Nous voulons en changer le texte. Et n'oubliez pas que nous devons convertir notre numéro de compte en une chaîne ou nous ne pouvons pas l'assigner à ce texte. Ok, donc on a tout réglé. Je vais sauver ça. Et peut-être que nous allons vraiment ajouter un peu de force. En plus et tout ça. Et quand tu parles de cordes, c' est une arnaque Katyn ? Huit cordes et actrice signifie les assembler. Donc si tu as mon nom, sol et mon ordinateur portable et que tu les écrases ensemble, ils pourraient devenir une corde ensemble. Et c'est ce que fait l'icône plus lorsque ses chaînes quand il est nombres plus est en fait addition. Donc, nous voulons ajouter des conversions d'espace de devis maintenant, l'esprit saute la ligne suivante. Donc j'ai juste déplacé ça pour que vous puissiez le voir. Ok, donc on va dire d'abord et je vais faire ça, et on devrait faire apparaître cette jolie petite étiquette en haut. Là, nous l'avons. Alors laissons tomber quelque chose dans cette petite conversion Box 22 convertis. Nous obtenons notre température et notre chemin au sommet. Nous obtenons une conversion maintenant, évidemment, des conversions et une ne correspond pas vraiment, mais nous allons sauter ça pour l'instant. Je suis sûr que vous pourriez corriger ça si vous voulez, et chaque fois que nous cliquons dessus, nous obtenons une augmentation des conversions. si vous me demandez Maissi vous me demandez, ces conversions sont un peu trop élevées. Donc, ce que nous allons faire est que nous donnerons le storyboard réel et sélectionnerons l'étiquette, ce qui est difficile à faire quand il est invisible. Donc, vous pouvez utiliser cet outil de sélection sur la gauche et nous pouvons aller pour le bouton Cliquez sur Étiquette, puis nous pouvons changer cette distance. Peut-être que 20 est plus sensé, alors ne laissez pas tomber cette étiquette pour nous. Et maintenant que voulons-nous faire d'autre ici ? Je ne pense pas qu'on ait besoin de faire autre chose. Tout fonctionne comme nous l'attendons. Mais il y a une autre chose dont nous devons parler. Une sorte d'éléphant dans la pièce est cette fonction ici ? C' est une fonction assez grande. Il y a beaucoup de choses qui se passent. Maintenant regarde par ici. Nous avons nos clics de bouton, et une fois que nous avons fait cela, nous avons saisi un numéro où vous avez une étiquette de réponse étaient en train de mettre qui sont également pendant le décompte. Et si on avait un bus différent et un autre endroit pendant la même chose ? Eh bien, nous devrions copier ce code, qui n'est pas une bonne solution. Donc ce qu'on va faire est de créer un orteil de fonction séparé, tenir une partie de ce code. Allons donc dans notre classe et tapons funk. Et appelons cela quelque chose de raisonnable, comme le nombre de mises à jour. C' est juste une fonction simple. Il ne faut pas d'arguments. Et ce qu'on va faire, c'est qu'on va prendre tout ça pour la mise à jour de l' étiquette de comptage . On va le couper et le coller directement ici. Parfait. Maintenant, nous allons aussi avoir une autre fonction. Quatre calcule et affiche Réponse. Ou en fait, on va avoir des calculs de réponse. Et ça va prendre un double comme un nombre, ou plutôt il va avoir le numéro double. Ok, donc ce qu'on doit faire jours, attrape ça. Je l'ai fait tomber. Et j'ai fait une petite erreur là. Faisons froid dessus. Donc, laissez la sortie égale nombre, et nous l'avons converti en Celsius. On y va. Ça marche maintenant. Ok, maintenant ce que nous voulons faire est de retourner la réponse. Donc on va mettre ça et ça devrait être familier quand je t'ai enseigné les fonctions dans la section de base Swift 4 de ce cours, on va retourner un double. Donc, en dessous, nous allons retourner la sortie. Parfait. Maintenant, ici à l'intérieur de nos clics de bouton de conversion. Eh bien, disons, répondons égal à compter Réponse. Et on va passer ce numéro. Donc, cet engourdissement correspond à cela, et ce nombre est simplement le nom est la variable que nous avons dans cette fonction. Ok, maintenant nous pouvons définir la réponse étiquetée texte Doc comme une chaîne faite à partir de la réponse que nous venons de retirer de notre fonction appelée Cal Cancer. Maintenant, vous pouvez regarder ça et aller Wow, c'est beaucoup de complexité. Et avant, c'était beaucoup plus simple. C' est quelque chose qui est malheureusement, vous devez vivre avec à ce stade précoce de votre carrière de programmation, parce que dans la programmation, si vous pouvez faire quelque chose une fonction et il est logique de le faire, alors vous devrait le faire, même si vous n'avez qu'une ou deux lignes dans cette fonction. Donc, par exemple, ici, je n'aurais même pas à dire laisser sortir ce que je pourrais dire est le suivant. Je pourrais juste le rendre directement. Donc, je n'ai qu'une ligne et vous êtes comme, Eh bien, pourquoi ne pas juste utiliser la ligne à l'intérieur de votre bouton de conversion cliqué à la place de faire deux lignes supplémentaires. La réponse est vos fonctions. Ils peuvent être aussi simples. Parfois, ils ne le sont pas. Et aussi si j'ai un bouton différent, mais je veux calculer Fahrenheit à partir de lui, j'ai le code disponible pour moi juste ici et tout le temps. Cela peut ne pas sembler important maintenant. Plus tard, Ron, si tu viens éditer tes acteurs, tu réalises qu'il y a un burger dans l'erreur. Vous n'avez qu'à changer ce code en une seule plaque. Vous n'avez pas besoin d'aller à tous vos boutons de conversion et de le changer là. Donc c'est une chose très importante à noter. Ok, la dernière chose qu'on a à faire est de jouer, et vérifions que tout ça marche. Je suis presque sûr que ça le fera. Tu ne peux pas me voir croiser les doigts. Allez. On y va. Droit. Essayons ça. 55. Où est notre étiquette de conversion ? Je vais vous dire ce que j'ai oublié de faire. C' est quelque chose que tout le monde oublie de faire. Et c'est que j'ai oublié d'appeler les mises à jour. Compte à l'intérieur de mon bouton de conversion cliqué. Alors réparons ça. Allons avoir des mises à jour. Comte. Maintenant, nous allons construire et charger et nous devrions être bons à partir. J' espère que je me demande si je devrais croiser les doigts cette fois parce qu'ils n'ont pas fonctionné si bien la dernière fois. Allez, tu peux le faire. On y va. C' est le moment de vérité qui arrive. 55 convaincre. On y va. Ça marche. Et notre label a été assez bien abandonné vers le bas. Parfait. Droit ? Donc, vous avez maintenant de l'exercice et vous avez vu comment nous divisons les choses en fonctions. Même si ce n'est qu'une ou deux lignes et n'a pas de sens en ce moment, cela aura du sens plus tard, plus votre APS devient compliqué 33. M5 7 de l'application de température: Bravo, les gars. Vous avez terminé ce module. Vous avez fait votre propre application de conversion de température. Et ce n'était pas si dur. Je suppose que vous avez fait un brillant petit convertisseur tenté comme celui que vous voyez sur cet écran. Vous avez appris à prendre la saisie de texte et même limiter que les chiffres orteils avec le Kiev. Avez-vous appris à créer un bouton et pourquoi ils sont à votre code principal afin que vous puissiez convertir la température. Et enfin, vous avez appris à convertir cette force en double, ce qui signifiait que vous pourriez ensuite faire des maths dessus. Et vous pourriez mettre ce double dans une chaîne en l'affichant à l'écran. Et enfin, vos devoirs étaient de charger une étiquette qui vous indiquait combien de conversions vous aviez faites. Et en cours de route, nous avons appris un peu plus sur la façon d'organiser nos programmes en termes de création de fonctions et quand nous devrions ou ne devrions pas le faire. Vous avez également appris à vérifier que la partie texte de ces entrées existait réellement. Donc nous n'avons pas une sorte de crash horrible quand nous exécutons ces APS plus tard. Encore une fois, bon boulot. Bien joué. Et comme d'habitude, voici les feux d'artifice 34. Introduction à votre idée d'appli: Faisons une petite pause de la programmation. Faisons quelque chose d'amusant. Après tout, vous êtes là pour créer vos propres siestes ou l'APS de quelqu'un d'autre. Mais chaque application commence par une idée. Alors, quelle est votre idée d'APP ? Je suis sûr que vous en avez des tonnes maintenant avant de nous plonger dans la conception de votre toute première idée d'application . Je veux juste souligner ce qui devrait être évident, mais parfois n'est même pas pour les développeurs professionnels. Si vous voulez concevoir la prochaine application Facebook ou une application similaire à elle, vous avez environ un an ou deux au moins hors développement devant vous, car ceux-ci sont très compliqués. Ils peuvent sembler simples à leur surface, mais il y a beaucoup de choses en coulisses pour leur faire l'expérience qu'ils sont. Il en va de même pour Instagram et Twitter. Twitter est probablement le plus simple off. Tout ça ne fait que transférer des caractères. Mais ne vous y trompez pas, Twitter a toujours une équipe de développement, pas une seule personne. Donc, ce que j'essaie de dire, c'est que vous devez réduire un peu votre ambition initiale. Je ne veux pas que vous soyez moins excité, mais je veux que vous commenciez petit. Je ne veux pas que vous soyez moins excité, Alors, quelle est votre idée d'APP ? Que pensez-vous que les gens ont besoin ou veulent ? On peut prendre un bout de papier ou un iPad dans le ciel. Lis, j'aime bien que le nouvel iPad Pro puisse juste en avoir un et vous pouvez commencer à concevoir. Mais avant de le faire, il y a quelques choses que nous devons définir d'abord, pour vous donner les meilleures chances de faire de votre application un succès. 35. M6 2 Que les gens What ou veulent réellement ?: vous pouvez voir par le titre de cette conférence. De quoi les gens ont-ils besoin ou veulent vraiment ? Vous pouvez voir que j'ai mis des bouchons là-haut, et il y a une bonne raison. C' est parce que ces deux mots en majuscules et peut-être le mot veulent, devraient être vos guides. Quand tu fais un acte. Maintenant, c'est génial si vous voulez faire une sieste parce que vous voulez faire un peu de repérage de train. Mais si les gens n'en ont pas besoin ou ne le veulent vraiment, alors vous n'aurez pas de succès sur vos mains parce que les gens n'ont pas de raison de télécharger votre numéro. Alors plongons un peu plus profondément dans ce que le besoin signifie réellement. Tout d'abord besoin signifie que quelque chose est presque impossible à vivre sans. Pensez à l'iPhone que vous avez probablement très près de vous en ce moment que vous continuez vérifier constamment. Cela n'a pas commencé comme un besoin, certes, mais il en est vite devenu un. Maintenant, nous avons tous besoin d'un smartphone, et avant cela nous avons tous besoin d'un téléphone portable et avant ça, eh bien, eh bien, nous n'avions besoin de rien de mobile parce que nous ne pouvions pas l'avoir. Donc, quand il s'agit de votre, vous devez penser, quoi les gens ont besoin ? Quoi sur un bon chemin. Avoir une idée de cela, c'est regarder votre propre vie et voir ce dont vous avez besoin, ce que vous devez utiliser tous les jours. Maintenant, c'est la raison pour laquelle IOS a en quelque sorte inclus une torche dans son petit écran d'affichage rapide . Parce que nous avons tous besoin d'une torche de temps en temps, c'est un exemple classique. Ensuite, ils n'ont pas besoin d'en avoir besoin en ce moment, tout comme l'exemple des smartphones. Soit ils savent qu'ils en ont besoin, soit ils ne le savent pas encore. Mais vous le faites, parce que vous êtes le développeur et que vous avez repéré ce besoin parmi quelques personnes choisies. Maintenant, c'est un peu risqué de le faire car il pourrait s'avérer que personne n'a réellement besoin de votre application, ce qui pourrait être un flop. Donc, il est préférable de er sur le côté de la prudence et de penser, Qu'est-ce que les gens ont réellement besoin ? De quoi disent-ils qu'ils ont besoin ? Et regarder leurs actions ? Cherchez-vous pour APS dont ils ont besoin enfin simples, simples, simples, simples et ciblées idées gagnent la guerre de besoin ? Prenons un exemple, vous avez une torche, génial, très populaire. Mais si tu as dit quoi, je vais ajouter plus de choses, je vais en faire le couteau de l'armée suisse, donc ça va avoir une torche. Il aura une règle calibrée sur cet écran. Il aura un niveau d'esprit. Il fera tout. Alors que cela peut faire appel à un certain sous-ensemble de D. Je télévire quelqu'un à la recherche d'une torche ne va pas ramasser votre application. Donc, parfois, il est préférable d'avoir une application séparée pour une torche comme application séparée pour la règle. Parce qu'à ce moment où quelqu'un a besoin de cet élément spécifique, c'est ce qu'il recherche sur l'APP Store, il ne recherche pas une boîte à outils. Ok, ça a besoin de prendre Carol. Maintenant, quelle est la prochaine section ? Eh bien, si quelqu'un veut vraiment quelque chose dans une application, comment ça marche ? Eh bien, le tout premier point est que la façon de faire que les gens veulent quelque chose est d'en faire un concept nouveau , donc personne n'a jamais vu la trancheur de votre genre de choses avant. Mais gardez à l'esprit que la trancheur prend beaucoup de temps à se développer. Ce n'est pas un projet d'une ou deux semaines. Ce que vous voulez penser, c'est qu'il s'agit d'un roman. Il n'a jamais été vu auparavant afin que les gens se réjouissent de votre application. Vous obtiendrez un petit ensemble de fans durs qui l'adorent vraiment. Mais il y a une petite mise en garde ici. Vous avez peut-être un concept nouveau. Les gens en veulent vraiment, mais ça va avoir une courte vie, comme la mode. Si votre application est incroyable, les gens vont bientôt s'ennuyer de lui, peu importe à quel point il est incroyable jusqu'à ce que la prochaine chose chaude arrive le long et ils vont obtenir celui-là et supprimer votre vous. Donc, avec des durées de vie courtes, vous devez faire une chose, et cela est évolué rapidement. Donc tu as fait ton roman. Tu as une courte vie. Vous devez vraiment écouter ce que vos utilisateurs veulent, puis vous évoluer vers la chose qu'ils veulent réellement slash besoin. Donc c'est là que vous pouvez transférer une fois dans les besoins afin qu'ils aient l'impression qu'ils ne peuvent pas vivre sans Irak parce que cela correspond parfaitement à ce dont ils ont besoin. Maintenant, je dirais que pour résumer cette conférence, vous voulez aller pour les besoins, besoins, les besoins, c'est votre priorité numéro un. Si vous ne pouvez pas l'obtenir, ou si vous voulez vraiment, vraiment faire un autre genre d'acte, alors optez pour vraiment une fois qu'il doit être nouveau. Gardez à l'esprit. Il a une courte durée de vie, et vous feriez mieux de tourner très rapidement. Ok, c'est tout l'intellectualisation que nous devons faire sur ce concept de conceptualiser votre maintenant, il est temps de passer à autre chose et de commencer à le concevoir avec quelques croquis rugueux. 36. M6 3 Votre idée sur papier: la toute première étape que j'aime faire quand je conçois une sorte de cela est de mettre mon idée sur papier ou sur l'écran de, disons, mon iPad avec un styliste. Cela aide à faire couler mes jus créatifs, et cela ne me limite pas à taper des trucs ou à dessiner sur quelque chose comme Photo Shop, ce qui est un peu laborieux, donc je vous conseille d'essayer la même chose. Ce n'est peut-être pas bon pour vous, mais vous pouvez l'adorer. Alors prenez un morceau de papier et un crayon et un stylo, ou même vos stylos de couleur si vous le souhaitez. Et passons à la conception d'un gentil, simple et nécessiteux. Parfois, vous marchez autour de la ville et vous voulez vérifier ce qui se passe parce que votre petit bateau. Donc, une option que vous avez est de mettre en place un site Web de vos annonces locales en regardant l'un des journaux locaux, etcetera, etcetera. Mais parfois ils ont raté les choses qui sont vraiment chaudes, les choses qui se passent vraiment ou ils ne les annoncent pas aussi bien qu'ils devraient. Donc, je pense que ce serait génial si nous avions une sorte d'application qui transmettait votre emplacement à une sorte hors serveur, puis plus tard. Votre emplacement pourrait être utilisé de manière anonyme, bien sûr, et votre emplacement serait superposé sur une carte de votre région locale avec l'emplacement de tous les autres. Et qu'est-ce que cela obtiendrait ? Ça vous indiquerait les endroits chauds où la plupart des gens ont sauvé la plupart des gens de votre ville. On utilise ça. Vous pouviez voir où tout le monde va maintenant. Évidemment, nous partagerons toutes les données privées dans ce dehors. Mais s'il y a de grandes taches roses ici, alors c'est évidemment un point chaud que nous devrions probablement vérifier pour que nous puissions y aller nous-mêmes. C' est donc une façon agréable et facile de voir où les gens vont réellement, comment ils votent avec leurs pieds si vous voulez. Donc, c'est une bonne idée simple de base sur l'application Maintenant ce que vous avez à faire est développeur lorsque vous concevez ces choses, est que vous devez vraiment, vraiment spécifier ce qui va où et comment cela fonctionne. Donc, pour ce faire, j'allais soulever tout cela. Donc, nous avons l'idée de base. Nous n'avons pas à nous soucier du serveur envoyer des trucs tout à fait encore qui viendra plus tard dans ce cours de toute façon, nous avons est que je vais utiliser qui ouvre notre application gauche excusant mes iPads va battre Spassky que notre utilisateur ouvre l'application. Et qu'est-ce qu'ils sont présentés ? Eh bien, nous voulons vraiment que nous soyons assez simples, donc je suggère qu'ils soient présentés avec une carte locale, et vous pouvez facilement utiliser les cartes Apple pour cela. Vous n'avez pas à construire le vôtre. Il a simplement intégré, et cela est disponible dans d'autres parties de mon cours. Et puis étant je nous, un peu pop up apparaîtra qui dit, Autoriser GPS ou quelque chose comme ça et les utilisateurs de travail clique simplement oui ou non. Évidemment, ils doivent cliquer. Oui, et c'est tout ce qu'il y a. Donc, il n'y aura pas d'autres paramètres que votre utilisateur peut faire. Vraiment, vraiment simple. Pourquoi est-ce que je fais ça aussi simple ? Eh bien, la réponse elle-même est en fait assez simple. C' est parce qu'en tant que développeur, nous n'avons aucune idée de ce qui va s'accrocher. Et quand vous commencez à faire des choses compliquées comme, Hey, partageons sur Facebook. Partageons sur Twitter, ce qui n'est en fait pas trop difficile. Mais partageons sur Instagram ou quoi que ce soit. Permettons à nos amis de se contacter avec différents niveaux d'autorisation. Ça devient vraiment compliqué très vite. Et au lieu de passer une semaine ou deux sur votre projet parallèle, vous allez passer des mois, peut-être même des années dans certains cas et tous ensemble cela s'appelle un ballonnement de fonctionnalité, et ce n'est pas quelque chose que nous voulons introduire dans nos vies à ce point. Donc ce que je veux que tu fasses, c'est avec ton morceau de papier ou ton nouvel iPad pro 10,5 pouces . Je veux que vous dessiniez une application très simple pour vous-même, et je le ferai. Je ne veux pas que vous vous souciez des spécificités de la mise en œuvre de celui-ci. Tout ce que je veux voir, c'est une information simple et de base, peut-être au plus deux écrans d'information. Je veux dire, j'ai un mantra personnel que je vis par que si je ne peux pas adapter mon application complète dans deux écrans ou le concept de base de mon application dans deux écrans, maximum absolu, alors je n'ai pas une application viable. C' est une chose importante à noter. Si vous ne pouvez pas intégrer votre concept dans une seule petite boîte, personne ne saura ce qu'est votre concept et deux. Cela signifie que personne ne vous donnera de l'argent pour cela, soit en l'utilisant et en faisant de la publicité ou en payant les extras que votre APP peut offrir. Donc vos petits devoirs ici et évidemment il n'y a pas de solution. Mais c'est votre devoir à faire est de créer votre propre application très simple sur un morceau de papier. Vous n'allez pas nécessairement faire cela, mais vous pourriez le faire plus tard une fois que vous aurez appris un peu plus de programmation. Mais je veux juste vous faire entrer dans cet esprit, créer quelque chose dont les gens ont besoin ou veulent, puis le rendre vraiment simple et ultra concentré pour que tout le monde puisse le comprendre quand ils le rencontrent. Alors allez-y et faites ça maintenant et bonne chance. 37. Introduction à la calculatrice de M7: il est temps de commencer à devenir un peu plus compliqué et un peu plus de mains sur avec une version un peu plus compliquée d'une sieste. Et il n'y a pas de meilleur candidat pour la complication qu'une application de calculatrice. Et c'est ce que vous allez faire cette belle calculatrice que nous avons à l'écran maintenant dans la prochaine conférence ou vous fournir toutes les images qui composent cette interface APS. Tu n'as pas à t'inquiéter pour ça. Cette application a trois sortes de choses uniques. Tout d'abord, nous avons un pavé d'affichage numérique. C' est la boîte d'entrée NorAm. Il affiche simplement le numéro sur lequel nous avons cliqué. Il a un pavé numérique, bien sûr, et il y a tout un tas d'opérations que vous pouvez effectuer maintenant Sur le visage, cela peut sembler assez simple, mais en fait, en arrière-plan, cela nécessite un peu de réflexion. Ce n'est pas difficile, mais cela nécessite un peu de s'asseoir et de réfléchir à ce qui se passe. Donc, c'est un module fantastique pour vous montrer comment vous pouvez décomposer les idées d'applications complexes en exécution vraiment simple en termes de manteau. Donc, avec cela dit, allons-y 38. M7 2 Réaliser les images d'écran de calculateurs, les réglages d'images et des boutons: a toujours L'approche que j'aime prendre quand je fais mon APS est que j'aime faire l'interface utilisateur graphique d'abord, si je peux. Et si ça a du sens, c'est ce que nous allons faire. On va faire l'écran principal de notre calculatrice, et je vais vous fournir des ressources pour toutes ces images afin que vous puissiez les intégrer en Europe. Voyons donc comment nous incorporons des images et créons un Juif. Je de lui, ouvrez le manteau X et suivez le long. La toute première chose que vous devriez faire est de télécharger les ressources qui sont inclus dans cette conférence. Ils viennent dans un fichier zip et sur Mac, si vous double-cliquez sur ce fichier zip, vous obtiendrez un dossier. Et si vous ouvrez cela, nous avons tous les chiffres et les autres symboles dont nous avons besoin pour notre application de calculatrice. Donc, nous sommes prêts à partir une fois que vous aurez l'Open Up X Code 9 et que nous allons commencer avec un tout nouvel EP. Créez un nouveau projet de code X. Vous devriez être habitués à ça maintenant. Nous voulons une application de vue unique et nous allons juste appeler cela me calcule ou quelque chose de funky. Tout ce que vous ressentez. Nous laissons les options au fur et à mesure qu'elles sont frappées et enregistrez-les simplement où vous le souhaitez. Je vais l'enregistrer ici sur mon bureau. Bon, donc nous avons notre application de base. Maintenant, je veux juste vous présenter quelques idées intermédiaires sur le développement IOS. Et la première chose que je veux vous montrer avant de continuer est que dans cette section ici, si vous cliquez sur le nom principal du projet, nous avons cette boîte d'informations qui apparaît. Le premier onglet s'appelle Général, et il contient le nom et le bundle identify de l'Europe. Le bundle identifier est comment l'APP Store sait quel Apple est le vôtre et comment d'autres APS Non, pour ouvrir votre app store. Si vous permettez que cela se produise, Si nous faisons défiler vers le bas, nous pouvons accéder à cette section de signature. Maintenant, si vous avez un compte développeur payé ou, en fait, juste un compte gratuit, vous pouvez ajouter votre signature ici. Vous avez besoin d'un compte de développeur payant, en fait vraiment saps. Mais vous pouvez faire avec un jeu gratuit pendant que vous ne prévoyez pas de publier ci-dessous que nous avons des informations sur les déploiements et ici nous pouvons choisir notre cible car vous pourriez cibler choses sur IOS 11 qui n'existent pas dans 10 9 ou 8. Donc, vous pouvez dire qu'au moins IOS 11 doit être sur l'appareil, puis l'APP Store prendra soin du reste. Il ne laissera pas les anciennes versions d'IOS télécharger les vôtres ci-dessous que nous avons des appareils. Nous pouvons choisir iPhone, iPad ou les deux, puis le reste. Je vais juste partir pour l'instant, donc c'est juste un peu de connaissances rafraîchir pour vous afin que vous puissiez comprendre ce qui se passe chaque fois que cet écran, revenons à faire notre écran de calculatrice maintenant. Quelle est la première chose qu'on a à faire ? Eh bien, le G u Y. Alors nous allons à notre planche principale. Et comme on peut s'y attendre, c'est complètement vide pour le moment. Que voulons-nous faire ? Eh bien, nous voulons laisser tomber quelques boutons basés sur l'image, donc les boutons qui ont une image comme arrière-plan donc nous avons besoin d'images Maintenant. Malheureusement, ce n'est pas aussi simple que je vais juste déposer dans les images de Got nous devons réellement aller et créer ce qui sont appelés jeux d'images et jeux d'images sont un atout, et les actifs sont contenus dans le dossier barre oblique du fichier actif XY Assets. Si vous cliquez dessus, vous remarquerez que nous n'avons pas sorti comme sur. Et si vous cliquez sur ce que nous avons tout un tas de tailles d'appareil et ce qui ne vient pas. C' est donc là que vous aurez votre icône APP à l'avenir car c'est une image. Ne vous inquiétez pas pour ça. Pour l'instant, ce que nous voulons faire est de se diriger vers le bas de ce volet gauche ish et appuyer sur plus, pour ajouter un groupe ou une image envoyé. Nous voulons ajouter un nouvel ensemble d'images, puis si nous double-cliquez dessus, nous pouvons réellement changer ce jeu à tout ce que nous aimons. Donc je vais appeler celui-là pour le numéro un. Vous pourriez aussi, bien sûr, appeler numéro un si vous le vouliez. Tant que vous vous en tenez à une convention de dénomination décente, ça ira. Alors, comment peut-on faire entrer notre image ? Eh bien, nous allons juste frapper deux X et en fait juste avant de le faire, nous avons un x deux x trois x, et ceux-ci correspondent aux densités d'affichage de nos appareils. Si vous voulez en savoir plus, il suffit de chercher sur Google Image Assets IOS un x deux x trois x Ils correspondent à des appareils plus anciens qui avaient un écran de résolution inférieure et des appareils plus récents comme l'iPhone sept. Plus. Ce que nous pouvons faire juste pour des raisons de simplicité est de cliquer sur la boîte vide de deux X. Maintenant, c'est ici que nous allons laisser tomber notre image. Donc si nous allons la trouver et obtenir notre image numéro un, nous pouvons cliquer et faire glisser, c'est et ça va directement dans. Donc c'est trié. Nous avons importé à l'image maintenant en termes de mise à l'échelle. IOS va prendre soin de cela pour nous quand il s'agit d'exécuter l'application, donc nous n'avons pas à nous inquiéter à ce sujet pour l'instant. Il y a quelques considérations plus tard dans votre carrière que vous devrez être conscient en ce qui concerne la mise à l'échelle. Mais pour l'instant, nous sommes bons avec un sur les deux X. Revenons à notre planche principale. Nous voulons déposer un beurré pour correspondre à celui-ci, alors descendons à notre objet en explorant le bas à droite et le côté, mais un. Alors, déposez-le. Maintenant, ce bouton doit être un bouton carré, alors fixons ses dimensions. Cliquez sur nos nouvelles contraintes en bas. Donnez-lui un avec et les hauteurs, et je pense que nous en aurons 64 maintenant. Juste une note de côté. Apple dit que les boutons doivent être 44 en taille 44 sur 44 au moins, mais on va faire la Maison 64. Rends-les gentils et grands. Je vais ajouter ces deux contraintes. Et bien sûr, il montre du rouge. Mais c'est très bien. Nous pouvons simplement traîner les choses dans un des coins, et nous pouvons en faire à peu près la taille dont il a besoin. Maintenant, ce bouton doit utiliser cette image que nous avons. Et si vous passez à l'Explorateur de propriétés sur la droite, nous pouvons choisir l'image ou l'image d'arrière-plan. Maintenant lequel est correct ? Eh bien, comme toujours, ça dépend. Il les a essayés tous les deux. Sélectionnez l'image et obtenez la liste déroulante. Notre numéro un apparaît automatiquement, ce qui est génial. Et si on redimensionnait ça parce que ça devient un peu fou, remarquez ce qui se passe. C' est un peu chevaucher le bouton d'une manière très étrange. Donc ce que je vais faire est de supprimer ça et je vais choisir l'image de fond à la place. Et maintenant, l'arrière-plan correspond à la taille réelle du bouton. Peu importe ce que nous avons défini, la prochaine chose que nous devons faire est de supprimer ce texte de bouton parce que nous n'avons pas besoin de texte. Et hé, presto, c'est presque fini. Maintenant, vous pouvez être tenté de positionner cette idée de votre écran en ce moment, mais ce n'est pas vraiment une bonne idée parce que nous allons avoir un tas d'éléments plus annonces orteil . Donc ce qu'on va faire, c'est qu'on va ajouter tous ces éléments supplémentaires avec toutes ces images supplémentaires dans notre fichier d'actifs. Donc, ce que je veux faire entre cette conférence et la prochaine conférence lorsque nous continuons cette mise en page c'est que je veux que vous ajoutiez un ensemble d'images pour chaque image que nous avons. Donc numéro deux ici, je vais tomber dans le numéro deux, et je vais juste te montrer ça une fois de plus pour l'exhaustivité. Trois sera le numéro trois, et tu vas le faire pour chaque seule de ces images qui restent. Alors allez-y, faites ça. Il suffit d'ajouter les images, n'avez pas encore de boutons, et je vous verrai dans la prochaine conférence 39. M7 3 Les piles d'écran de calculatrice: Bonjour et bienvenue Dans la dernière conférence, je vous ai demandé de continuer à configurer toutes les images que je vous ai fournies en tant que jeux d'images dans IOS. Jetons un coup d'oeil à votre projet et voyons comment vous vous entendez, non ? Donc, vous devriez avoir toutes les images, grosso modo, que vous voyez ici vos noms pour eux pourraient en fait être un peu différents. Et c'est parfaitement bien. En fait, c'est mieux. Ainsi, vous pouvez commencer à comprendre et à penser par vous-même. Comment avez-vous appelé votre propre image et comment y faites-vous référence ? droite. Allons à notre planche principale. Jusqu' à présent, nous n'avons que le seul chiffre qui devrait être d'environ 64 sur 64. Si vous prenez le coin de l'une de ces images, par la façon ou les boutons et que vous maintenez la touche Maj enfoncée lorsque vous la déplacez dans et hors, il le fait à l'échelle. Donc, il fait à la fois la largeur et la hauteur, peu importe où le curseur de la souris va. Je n'ai pas, c'est 64 ? Ok, maintenant c'est assez simple. On peut copier ça, et on peut le coller. Et c'est une chose parfaitement légitime à faire, et nous pouvons le faire à nouveau. Donc, pour copier, appuyez sur la commande, vous voyez ? Et puis commandez V pour coller. Alors, qu'est-ce que je fais maintenant ? Eh bien, je pose juste ces choses très grossièrement pour que quand il s'agit de ça, on puisse commencer à les positionner en fonction de l'endroit où se trouve chacun. Donc maintenant, une fois que vous devez ramer plein, on peut copier ça, et on peut coller toute la route, et on peut déposer ça ici, mais il y a en fait une meilleure façon de le faire. Donc, au lieu de coller cette deuxième rangée, je vais frapper les commandes. Je vais sélectionner cette première ligne, que je pense avoir collée deux fois. Faisons encore des commandes. Là, on n'en a qu'un. Et si vous ne savez pas combien de fois vous l'avez collé, passez à votre vue ici et il vous indiquera que vous avez quatre boutons. Sélectionnez. Tout ce qu'on va utiliser ce tout nouveau concept appelé « empilements ». Maintenant empilez les mises en page, créez une boîte si vous le souhaitez, et cette boîte vous permet d'y placer des éléments et de répartir les éléments à l'intérieur de cette boîte de façon plus ou moins égale ou dans n'importe quelle configuration de conflit que vous pouvez penser. Donc, sans éléments sélectionnés en bas, si je l' espère ici, il dit intégrer dans la pile. Et si je clique sur ce bouton, tous ces éléments sont transportés dans une vue de pile. Si nous regardons dans notre liste d'éléments, nos boutons maintenant à l'intérieur de cette vue de pile, cette vue de pile si nous regardons ses propriétés, a une disposition horizontale, donc tout va être étalé horizontalement à l'intérieur. Bien sûr, vous pouvez aussi obtenir des verticales, mais nous ne le ferons pas maintenant. Ensuite, si nous sélectionnons à nouveau cette vue de pile, nous avons d'autres options. L' alignement. Nous pouvons remplir toute la vue de la pile, ce que je pense est ce que nous voulons faire. On peut tout avoir. Le haut, le sens du fond. Nous pouvons l'avoir comme nous l'aimons la distribution. Nous pouvons remplir les éléments également proportionnellement égale espacement, etcetera. Laissons-le, Phil. Se sentir orteil libre. En fait, expérimentez avec ces plus tard. Si vous le souhaitez non, obtenons notre vue de la pile. Et qu'est-ce qu'on va faire ? Eh bien, je pense que va positionner cette vue de pile en fonction des bords de notre écran. Alors nous allons frapper le contrôle et c'est un peu pénible de l'avoir. Pourtant, vous pourriez avoir un bouton. Donc, ce que nous allons faire est que nous allons appuyer sur le contrôle et cliquer sur cette vue de pile, et nous allons passer à notre vue principale et relâcher la souris. Maintenant, nous voulons l'espace de fuite vers le conteneur, et ensuite nous allons faire la même chose de l'autre côté, ce qui devrait conduire l'espace au conteneur. Mais il a quelque chose qui arrive assez souvent. Vous avez cliqué dans la mauvaise direction, et Extra a essayé d'être trop intelligent. Il est parti. Oh, il va de gauche à droite. Par conséquent, il doit vouloir ce côté. Il ne réalise pas qu'on veut vraiment ce côté. C' est un problème. Essayons de cliquer et de faire glisser à partir de l'objet réel et relâchez. Essayons de diriger l'espace. Je pense que cela pourrait réellement fonctionner sur le chemin de voir que cela fonctionne est d'aller aux contraintes sous la vue de la pile, vous empiler en tête et en fin de sorte que cela semble avoir fonctionné mais toujours être pris en charge. Véhicule ces contraintes, parce que vous pouvez passer me faire confiance heures à résoudre ces types de problèmes droits qui est tous triés Nous allons double-cliquer sur certaines de ces contraintes pour les prendre directement sur le bord. 20 comme ça. 20 comme ça, et nous avons quelque chose de très étrange qui se passe. Notre dernière image est étirée, alors nous allons cliquer sur vous empilé et nous allons distribuer ces Phil tout aussi parfait. Donc, ça le sent bien. Toutes ces images elles-mêmes nos contraintes orteil ont 64 sur chaque site. Mais pourquoi ? Ils lisent Eh bien, ils sont rouges parce que la vue de la pile essaie d'étendre l'image et de remplir l'écran autant qu'il peut, donc cela pose quelques problèmes. Ce que nous pouvons faire est effectivement supprimé ces 64 alors sélectionnez la contrainte pour le supprimer. la fois horizontale et verticale prend un peu de temps à faire. Mais c'est une bonne leçon en tant que programmeur que si les choses tournaient mal, enlevez toujours des éléments de votre écran. Bon, donc maintenant on l'a réglé. Donc, si nous sélectionnons notre vue de pile, il est là. Maintenant, nous pouvons donner à notre vue de pile une hauteur, donc nous allons restreindre notre vue de pile à vous l'avez deviné 64 et maintenant nous avons nos boutons triés, donc nous obtenons toujours un peu de rouge parce que nous n'avons pas positionné cela. Absolument parlant, Il n'a pas de positionnement vertical, mais ce que nous devrions faire à ce stade est en fait tester cela sur, Disons, un iPad et puis je vais juste paraître pour vous. Pas trop, cependant. Et comme vous pouvez le voir sur l'iPad, il a étiré nos boutons, ce qui n'est pas un superbe look. Alors comment on peut contourner ça ? Eh bien, c'est votre premier morceau de pensée critique en tant que programmeur qui vous a dit que cette section une sorte de section intermédiaire qui est leurs plusieurs façons de le faire. Nous pouvons restreindre les fonds eux-mêmes d'une manière ou d'une autre, mais je ne pense pas que ce soit une solution très élégante. Nous pouvons contraindre la vue de la pile, alors essayons ce contrôle. Cliquez sur la vue de la pile, puis Dragon est tombé à lui-même et relâchez. Nous pouvons définir un rapport d'aspect, qui est le rapport hauteur/largeur. Alors frappons ça. Je crois que cela s'est fixé. Oui, si nous passons aux contraintes, nous avons des hauteurs, et nous avons cet aspect. Si vous double-cliquez sur l'aspect, vous pouvez le modifier dans la vue principale ou plus dans les droits que vous pouvez modifier les propriétés ici. Donc, ce que nous voulons avoir est peut-être un 4 à 1, parce qu'il y a quatre boutons, comme si excellent. Donc maintenant, nous avons trié ça sur l'iPad. Nous avons un problème différent. Et c'est la beauté des choses contraignantes. Tu auras des problèmes tous les jours. Alors nous allons frapper notre vue de pile. Encore une fois, vérifions notre alignement, peut-être affaiblir les éléments centraux qui ne fonctionnent pas. Distribution. Peut-être qu'un espacement égal fonctionnerait. Non, ça ne le fera pas, Phil. Proportionnellement pas sentir également ? Non. Donc, le problème est vraiment ces contraintes sur les côtés gauche et droit. Donc ce que je vais faire, donc je vais les sélectionner et je vais les retirer. Donc maintenant nous avons juste une pile flottante libre que nous pouvons déplacer partout où nous voulons. Ce qu'on peut faire, c'est revenir à l'ancien classique. Envoyez-nous à cela horizontalement dans le conteneur, puis à double vérifier va cliquer sur notre appareil IOS un autre. Les sept ici. Peut-être que nous allons cliquer encore plus petits. Allons-y. Plus petit iPhone quatre s. Ok, ça a l'air assez bon. Tout est contraint à l'exception de la verticale. Mais bien sûr, nous savons que la verticale arrive très bientôt. C' est donc la fin de cette petite section sur les vues et les contraintes de pile. Maintenant, les contraintes sont un sujet très, très important dans I I I ice. Et bien sûr, on va les couvrir au fur et à mesure qu'on va comprendre comment ils fonctionnent. Mais vous devez faire attention quand les contraintes interfèrent avec d'autres contraintes. Donc, ajoutez toujours des contraintes avec parcimonie. Ne continuez pas à ajouter et à ajouter, c'est pourquoi j'ai ajouté toutes ces contraintes à des boutons individuels, car je veux vous montrer ce qui se passe lorsque vous travaillez de cette façon. Il suffit d'ajouter des contraintes tout le temps. Vous finissez par venir contre un mur de briques, faites des rappels, et il dit que cela ne fonctionnera pas si bien fait là-dessus et dans la prochaine conférence complétera cet affichage. 40. M7 4 Copie de l'écran de calculatrice !: bienvenue à la dernière partie de la réalisation de notre écran de calculatrice. Jusqu' à présent, nous avons quelque chose qui ressemble à ceci, et nous avons beaucoup appris sur les piles et la contrainte de ces piles et ne pas mettre trop contraintes sur les éléments à l'intérieur de la pile, mais plutôt contraint la pile elle-même et puis permettant à la pile de prendre soin des éléments qui sont à l'intérieur. Alors finissons l'affichage de notre calculatrice dans cette conférence. Maintenant, comme vous pouvez le deviner, c'est un simple comme copier notre vue de pile, puis simplement le tracer. Et vous pouvez faire copier coller à partir de cette vue de liste sur le côté afin que je puisse coller un autre et un autre, et je peux les faire glisser et déposer où je veux, mais pas les images. On ne fait pas ça, a dit Pit Command, et défaites ça et ça fait tomber ça. Ok, c'est presque parfait. Maintenant, qu'est-ce qu'on va faire ? Nous avons quatre piles, et je sais qu'elles sont toutes le même numéro du moment. Nous allons changer cela dans un peu, mais pour l'instant, nous allons trier la mise en page. Choisissons toutes ces piles et, avant de le faire, sélectionnez-les . Choisissons. Disons qu' il allait les réorganiser parce que je n'aime pas qu'ils soient hors de l'ordre. Je pense que c'est un truc d'O. D. D. Alors que l'on devrait être le plus bas. Celle-ci devrait être en bas. J' aime qu'ils aient un ordre. 1234 Donc quand je viendrai éditer, je ne serai pas confondu par quoi que ce soit. Ok, donc on a ces quatre piles. Maintenant, positionnons l'un d'entre eux à peu près au centre. Donc je pense que ce 3ème 1 nous pouvons positionner verticalement au centre. Ok, donc ça sait où il est grand. Et si on double clique sur ce positionnement, on peut le laisser tomber, disons, moins 40 ou plus 40. Donc ça va aller un peu plus loin, et puis nous devons, bien sûr, trouver Stacked. Tu vas arrêter ça un peu ? Et je vais faire la même chose avec la vue à pas ici, et vous remarquerez que l'Iowa X chante vous aide en arrachant des choses ensemble pour vous parce qu'il sait que vous voulez quelque chose à peu près dans la ligne en ce moment. Si nous revenons à ces alignements des vues de pile Tout d'abord, si nous les cliquons et nous les ouvrons et nous ouvrons des contraintes, nous avons nos hauteurs. Maintenant notre aspect, c'est parfait. Donc ce qu'on va faire, c'est contraindre toutes ces piles ensemble au sens vertical. Maintenant, nous avons peu d'options ici, nous pouvons contrôler, cliquer et faire glisser vers la pile suivante et placer dans l'espacement vertical. Si nous le voulions, nous pourrions également sélectionner les quatre piles, et nous pourrions les empiler toutes dans une pile verticale. Donc X devient assez intelligent pour savoir que ceux-ci iraient dans une pile verticale. Cependant, plutôt que de compliquer trop les choses parce que je ne pense pas que nous devions vraiment le faire. Je vais frapper le contrôle. Je vais glisser vers le bas et juste cliquer sur l'espacement vertical, l' espacement vertical et l'espacement vertical. Donc maintenant, ils devraient tous être alignés verticalement, ce 1er 1 parfaitement en ligne. Essayons cela en ouvrant un iPad, et cela nous permet de voir les erreurs horribles que nous avons. Alors, quelles erreurs de ceux-ci ? Eh bien, cette première vue de pile est alignée horizontalement au centre, mais le reste ne le sont pas. Nous pourrions donc sélectionner ces trois et les aligner horizontalement au centre, ou bien aligner les bords d'attaque. Le bord sur le côté gauche ou, en fait,sur le côté droit. Le bord sur le côté gauche ou, en fait, Donc, je veux faire sélectionner cette première pile pour vous, et je ne sais pas pourquoi cela s'est déplacé vers le bas. C' est très ennuyeux. Laisse-moi juste les réarranger. Mettons ce haut en haut pour que vous puissiez simplement cliquer et faire glisser ceux-ci, et il les décalera pour vous. Maintenant, appuyez sur le contrôle et cliquez à partir de cette première. Empilez vous jusqu'au 2ème 1 et c'est une ligne des bords d'attaque et regardez comment ils s'accrochent ensemble. Je ne sais pas pourquoi celui en dessous s'est aussi cassé. Voyons ce que ça fait. Je pense que c'est implicite. Eh bien, nous pouvons vérifier ça dans une minute, et c'est sélectionner à nouveau le top. Contrôle, cliquez sur la vue de la pile inférieure qui n'est pas encore en ligne et alignez le bord d'attaque en ce moment. Donnons à cela le test ultime. Mettez-le sur l'appareil différent. Zoom un peu vers le haut. Faisons pivoter l'appareil. Il y a peu de robinet d'orientation là-bas qui fonctionne. C' est parfait. Ok, alors si nous sélectionnons des individus empilent des vues, nous devrions avoir tout bleu maintenant. Parfois, vous obtiendrez certaines de ces contraintes qui sont dupliquées dans votre projet lorsque vous copiez et collez. Je ne sais pas pourquoi, mais c'est juste. Je pense que c'est un bug qui existe depuis des siècles et code ex, donc vous pouvez les supprimer un par un. S' il y a trop de doublons, s'ils montrent du rouge, c'est juste au combat. des chances que ça ne t'arrive pas. Ok, donc nous avons nos quatre piles à utiliser dans l'ordre. Mon O. C. D. est très heureux. Tout ce que nous avons à faire maintenant son aller de l'avant et sélectionnez chaque bouton individuel et, bien sûr, a changé le nombre. Et vous pouvez changer l'image d'arrière-plan simplement en tapant ce qu'elle est. Ou vous pouvez appuyer sur les blocs de défilement et le rechercher de cette façon. Pour que je puisse taper quatre. C' est là. Cinq. C' est assez facile. Oh, attends. J' ai fait quelque chose de mal ici. Ces boutons latéraux vont en fait être ajoutés. Soustraire, etc. Mettons-les à l'intérieur. Maintenant, il est suivi. Qu' avons-nous d'autre ? Multiplie, crie ! Si vous me voyez, passez le, divisez et c'est bon. Maintenant, on pourrait faire les chiffres. Clairement. J' ai besoin d'aide pour compter cinq. Peut-être que je ne fais pas assez bien, disons, pour six, sept huit. Je pense que vous pouvez voir où ça va. Neuf. Et puis, bien sûr, nous avons le numéro zéro. Donc ces deux derniers boutons ne font rien. Nous devons changer ces deux égaux, mais est un peu obtenu votre attente et j'ai mis en place spécialement pour vous obtenir le bouton égal a un rapport d'aspect différent des autres, et nous utilisons ces mises en page de pile. Alors, comment pouvons-nous nous occuper de ce problème ? Supprimons un de ces boutons et voyons ce qui se passe. Tout s'étend. Sélectionnons ce bouton. Changons-le en égal. Ensuite, donnons ce bouton égal assez grande taille qui voit si cela fonctionne environ 1 à 8, ce qui est deux fois la taille d'un bouton normal. Et regardez toutes ces flèches rouges qui apparaissent sont empilées. Les mises en page n'aiment pas ça. Alors, comment résoudrons-nous ça ? Eh bien, allons cliquer sur notre pile pour votre festival et puis quittons cette distribution pour remplir proportionnellement parce que si nous définissons la largeur d'un bouton, alors il va l'utiliser avec ce rapport d'aspect comme une proportion de ce qu'il devrait être l'étape que nous avons là, et il va comparer cela aux petits boutons et organiser les choses en conséquence. Et vous remarquerez que nous n'avons pas à mettre une hauteur là-dessus non plus, non plus, ce qui est assez pratique. Alors on y va. Parfois, vous pouvez réellement mettre une contrainte sur l'un des boutons, mais soyez très prudent quand vous le faites des yeux, vous allez arracher vos cheveux dans la frustration quand les choses ne s'alignent tout simplement pas. Je sais que j'ai raison. La dernière chose que nous allons faire est simplement de chercher une étiquette glisser-déposer qui va compléter l'affichage de notre calculatrice. Maintenant, nous allons utiliser quelques contraintes supplémentaires pour cela. C' est le contrôle. Cliquez et faites glisser vers le bas jusqu'à la première pile vous, et faisons la même largeur, ce qui est assez simple en allant à intelligence égale. Parfait. Ensuite, nous allons avoir cette vue de pile à l'ensemble d'espacement vertical de l'étiquette, mais tout est toujours lu en termes hors de l'étiquette. C' est simplement parce que nous lui avons donné une largeur si on lui donne une distance en vertical, mais il ne sait pas où il se trouve horizontalement, donc nous pouvons toujours aller contrôler, cliquer et faire glisser vers la vue de la pile, et nous pouvons aligner centre, horizontal ou le bord d'attaque, et tout devrait devenir bleu. Maintenant, c'est juste assez sur cette étiquette. C' est une calculatrice, donc ces étiquettes vont généralement à droite et encore dans nos propriétés. Nous pouvons sélectionner cette option. Ensuite, nous pouvons sélectionner notre couleur. On peut partir. C' est noir. Je pense que ça a l'air assez gênant. Et qu'est-ce qu'on veut faire ? Nous voulons trouver une couleur d'arrière-plan pour cette étiquette. Malade. Défilons vers le bas et allons à l'arrière-plan. Et ce que je pense que nous allons faire, c'est que nous allons changer légèrement, qu'il fera sombre et changera la couleur elle-même en jaune pour que le texte corresponde à toutes les autres couleurs. Maintenant, changeons ce front. C' est monter cette taille et vous remarquerez qu'il se développe parce que vous ne lui avez pas donné une hauteur fixe pour étendre autant qu'il a besoin d'aller de l'avant et de se développer jusqu'à ce qu'il semble visuellement correct. Ok, en double-clic sur l'étiquette et juste mettre le numéro zéro dedans comme une calculatrice pourrait commencer avec maintenant, le guide électronique parmi vous avez probablement remarqué qu'il nous manque un bouton, et c'est ce bouton clair, et je m'excuse. Si vous l'avez déjà ajouté. C' est très bien. Si tu l'as bien ajouté par moi, c'est bon. Tu peux l'avoir là-dedans. Le bouton clair sera en fait vos devoirs dans quelques conférences une fois qu'on aura fait un peu de codage. Donc, en parlant de codage, continuons avec ça. 41. M7 5 Le fait de la connexion aux graphiques au code facile de voie !: il est temps de connecter notre écran principal à notre base de code principale. Maintenant, si vous étiez cool dans les épisodes précédents de ce cours ou des causes précédentes, je vous ai montré que vous pouvez connecter des boutons un par un prises de feu. Mais regarde ce qu'on a là. Nous avons beaucoup de boutons et nous ne voulons pas vraiment créer une prise d'action pour chacun d'eux. Donc je vais te montrer quelques trucs pour qu'on puisse prendre tous ces boutons ou plutôt pas cette étiquette en haut. Mais juste les boutons et nous pouvons les connecter à une ou deux actions simples dans notre manteau. Alors ouvrez votre projet et voyons comment faire ce raccourci. Maintenant, si vous vous souvenez à l'avance, nous ouvririons un éditeur assistant et nous contrôlerons, cliquerons et glisserions sur notre code principal et déposerons dans une prise ou une action. Si nous voulions un bouton, cliquez sur la réponse. On va faire quelque chose de légèrement différent. Alors éteignez cet éditeur d'assistant si vous l'avez en cours d'exécution et passez à votre contrôleur de vue dot swift. Non, à l'intérieur d'ici, nous allons écrire notre propre action de constructeur d'interface et c'est exactement la même chose. Contrôle le clic et le glissement sur 12 couches. Ce qui est créé est une action à I B, qui bien sûr, est une fonction, et nous allons appeler. Ce numéro a été cliqué. Ce nombre cliqué va passer sur ce qu'on appelle un expéditeur. C' est juste la chose qui identifie ce qui déclenche cette action, et nous savons que ce sera un type de bouton U Y. parce que nous avons seulement des boutons sur notre écran et ce sont seulement les boutons qui se connecteront à cela. Ne vous inquiétez pas pour ça. Soulignement. Pour l'instant, c'est quelque chose que je vais expliquer plus tard dans le cours maintenant, donc nous avons une action quand un numéro est cliqué. C' est génial. Nous allons aussi avoir une action I B pour quand un opérateur est cliqué, I e plus moins diviser et fois parce que cela va effectuer une fonction légèrement différente . C' est sous l'école. L' expéditeur va à nouveau être un bouton u I. . Maintenant, nous pourrions avoir ces deux fonctions enroulées en une seule et les séparer un peu plus tard d'une manière que je vais vous montrer dans une minute. Mais pour ce projet particulier, je pense que c'est plus logique s'ils sont réellement séparés, donc nous n'avons pas trop de désordre quand vous organisez les choses. Enfin, nous pourrions avoir un clics égal, et nous voulons qu'il effectue notre action finale, qui pourrait être agir. Soustrayez ce que c'est. Donc je serais égal à fonction cliqué sous l'école. L' expéditeur, qui est encore une fois un vous je bouton parfait. Donc on a tout réglé. Maintenant, comment connecter nos graphismes à cela maintenant que nous l'avons spécifié ? Parce que rappelez-vous, au moment où X Code ou Swift sont compilés, programme n'a aucun moyen de savoir qu'il devrait les connecter. Revenons à notre planche principale. Assurez-vous d'abord d'enregistrer ce fichier. Ouvrez ensuite votre Story Board et nous pouvons connecter nos boutons en contrôlant le clic et en faisant glisser. Mais où ? Eh bien, nous contrôlons clic et glisser tout le chemin vers le haut au contrôle View, et cela va nous connecter au code. Donc si je libère ça, ça nous dira que nous avons des Segways d'action. Les choses entreront dans plus tard, mais nous avons aussi ces événements envoyés égaux clics de nombre de clics, opérateur clit. Et ce sont tous des événements que nous avons déjà créés, ce qui est fantastique. Donc ça va être un nombre de clics maintenant. Faisons la même chose pour chaque bouton. Maintenant, les clics s'assurent que vous obtenez le bon. C' est un peu fastidieux, mais je pense que ça calcule un rap. Est-ce que l'application que vous auriez Teoh faire ça le plus sur il y a tant de boutons ? Ce n'est pas un événement courant. Lèvres. J' ai cliqué sur le mauvais. Là, j'ai cliqué. L' opérateur a coupé à droite, donc j'ai fait une erreur. Comment puis-je me débarrasser de ça ? Et si je sélectionne ce bus huit ? Je viens à mes propriétés sur cette toute dernière icône en haut à droite connexions. Inspecteur. Si je clique dessus, il me dit que j'ai retouche à l'intérieur, lié à faire fonctionner un clipped. Clairement, ce n'est pas correct. Donc il y a un petit X sur la gauche, et si on clique dessus, ça disparaît. De même, si je clique sur les sept, il me dit que le numéro cliqué est l'événement qui est déclenché. Essayons à nouveau ce taux de nombre. Contrôle, cliquez et faites glisser le numéro coupé. Même avec neuf numéro cliqué et, bien sûr, numéro zéro. Cliquez sur. Maintenant, avant de continuer et de brancher nos opérateurs et d'égaler les boutons, il y a un problème. Vous pourriez regarder cela va bien, si je clique sur 12 ou trois, comment mon numéro de contrôleur de vue, cliquez sur section, savoir quel bouton j'ai cliqué ? On peut résoudre ça. Je retourne à notre storyboard, sélectionnez le bouton, puis sélectionnez les propriétés, et nous pouvons donner à cela une nouvelle balise miracle. Donc, si nous faisons défiler vers le bas dans cette section des propriétés, et pour le moment c'est l'inspecteur des attributs affiché, cette balise ici est quelque chose que nous pouvons changer. Heureusement, c'est un nouveau Miracle. On peut faire la même chose que nos boutons. Donc dans ce cas, je vais faire celle-là pour le numéro deux. Je vais faire le numéro deux, et vous pouvez voir où je vais avec ces trois quatre. Assurez-vous juste que tout est correct. En fait, vous pouvez les taper si c'est plus facile pour vous de le faire. Numéro six. Et puis, bien sûr, nous avons le numéro sept huit. C' est comme apprendre à compter et zéro on peut laisser zéro. Donc maintenant nous avons quelques tags avec ça Revenons à notre code. Et comment pouvons-nous savoir ce que sont ces tags ? Eh bien, rappelez-vous, quand ça se déclenche, le bouton est passé comme un expéditeur pour qu'on puisse saisir l'étiquette de cet expéditeur. Et quand nous avons la balise, nous pouvons utiliser une instruction de cas switch pour voir quelle balise nous avons. Alors on va changer et qu'est-ce qu'on va changer ? C' est la balise point de l'expéditeur, qui est une interject. Et puis on a juste mis dans les affaires pour presque tout ce qu'on a affaire zéro. Et nous pouvons éventuellement avoir Prince zéro si nous le souhaitons. Et nous pouvons parcourir tous les cas jusqu'à ce que nous soyons en défaut, ce qui reviendra. Maintenant. Rappelez-vous, les défauts étaient des exécutions d'aucun des cas exécutés. Mais dans ce cas, nous savons que tous les cas seront effectivement exécutés. Donc ce qu'on va faire, on a un à ne pas apporter, on va essayer une affaire. Et dans ce cas, nous en imprimerons un. Et maintenant que j'ai fait ça, je vais faire ça sur notre simulateur. Amenons ça sur le SC. Juste un double chèque que nous recevons. Ça l'imprime maintenant. Je ne t'ai pas encore montré où on a imprimé les choses, mais tu verras dans une minute quand ça se chargera, ok ? Retournez un ex Croate en bas de notre écran de code principal. Il y a une petite icône qui indique Afficher la zone de débogage. Si vous cliquez dessus, nous pouvons maintenant obtenir la sortie, espérons-le de notre. Donc, si je clique sur un, il n'imprime rien parce que nous ne l'avons pas configuré, mais zéro devrait imprimer la Syrie. Donc, ce que j'ai fait là, c'est que je débogue l'application. Chaque fois que j'ai prié, j'imprime dans cette petite zone de tenue et nulle part ailleurs. C' est donc un outil utile pour nous développeurs de voir ce qui se passe en arrière-plan. Nous n'avons pas besoin de mettre en place un schéma élaboré sur l'APP elle-même, vous savez, comme mettre une étiquette au bas de celui-ci ou autre. En l'état actuel, nous pouvons simplement le faire de cette façon. Donc, nous avons notre affaire. Nous avons nos empreintes. Nous savons que tout cela fonctionne. Maintenant que j'ai fait des nuits et je m'excuse pour cela, nous allons en fait éliminer le cas de commutateur parce que chaque fois que nous envoyons cette balise, c'est le numéro que nous voulons montrer et utiliser pour calculer, ce qui est assez pratique et aussi pratique. Cela signifie que nous n'avons pas besoin d'un boîtier de commutation pour 10 étiquettes différentes. Alors retirons ce boîtier de commutation. Ou plutôt, coulons-le et collons-le dans l'opérateur Collect Now, pourquoi ai-je fait ça ? Parce que notre opérateur, nous aurons besoin de traduire de ce que l'étiquette est à ce que l'opérateur réel est. Donc c'est bon pour notre storyboard à nouveau. Et nous allons marquer certains de ces éléments. Nous allons avoir des fois comme le numéro d'étiquette 10. Alors, où sommes-nous ? J' espère que nous sommes sur les attributs. Crier. Si tu vois, ça ne peut pas s'asseoir. Il y a le numéro 10. Oups. 10 et nous aurons moins comme numéro 11. Bien sûr, 12 et 13. Revenons à notre code. Et si l'étiquette est maintenant 10, nous allons imprimer les temps. Si c'est 11 moins 111 juste 11 c'est copier cette affaire 12 et enfin 13. Laisse-moi juste aligner ça correctement. Il waas fois moins diviser plus diviser et oui. Ok, c'est parfait. Je vais faire ça maintenant pour m'assurer que je les ai corrects. Et c'est quelque chose que vous devez faire. Est un développeur prendre l'habitude de faire et qui est Vérifier, vérifier et vérifier à nouveau. Vérifiez toujours en supposant que le simulateur fonctionne, bien sûr. Revenons à notre simulateur. Appuyons sur la maison et supprimons ça. Donc, si vous cliquez et maintenez, appuyez sur le X, nous pouvons le supprimer et ensuite nous pouvons exécuter cette carte à nouveau. Il devrait être lancé pour nous maintenant. Parfois, la zone de sortie ne s'affiche pas par défaut. Donc tu as juste cliqué ce peu comme on y va. C' est le temps des coups. Donnez-lui une seconde pour répondre. Je jure que c'était beaucoup plus rapide avec le code X, mais à la fin, mais encore une fois, je cours un batteur. Alors, qu'est-ce que je m'attends ? Times moins diviser Plus et nous avons absolument rien. Pourquoi ? Parce que j'ai vu un idiot. Je ne l'ai pas vraiment connecté, n'est-ce pas ? Allons à notre storyboard arrive aux meilleurs d'entre nous. Contrôlons cliquez sur nos temps pour le contrôleur View et aller fonctionner. Il a cliqué et la même chose avec le reste d'entre eux. Wow. Une telle erreur de débutant pour faire opérateur cliqué. Et pendant que nous sommes ici, reste fera égal à deux égaux cliqués. Maintenant, je vais diriger ça et j'espère que ça va marcher et ne me gêner plus loin. Allez, terre. Tu es un professionnel, non ? Il tire la puissance de sortie et les temps moins diviser plus excellent. Donc tout est aligné. Tous nos chiffres sont exacts. Tous nos opérateurs sont corrects. Donc c'est tout pour tout brancher. Nous sommes tous triés, et nous sommes prêts à passer à un peu plus loin du code plus ardu et compliqué. En fait, je mens. Ça ne va pas être si compliqué, alors ne t'inquiète pas. Je te verrai à la prochaine conférence. 42. M7 6 Encodement des Enums: Maintenant je vais te montrer un peu plus rapide, un peu de vitesse intermédiaire sous la forme de quelque chose appelé Denham's. Maintenant, comment ça va s'intégrer dans notre projet de calculatrice. Eh bien, jusqu'à présent, nous avons nos opérateurs, et chaque fois que nous cliquons sur ces derniers en ce moment, nous imprimons simplement ce que devrait être cet opérateur, qui est assez juste. Mais la question est, comment pouvons-nous stocker cet opérateur Times moins diviseur Plus, Eh bien, Eh bien, c'est une bonne question, parce que votre première réaction intestinale et la mienne quand j'ai commencé à programmer était simplement de le stocker comme un opérateur. String dire, opérateur est égal à quelque chose, et c'est une approche assez juste qui est une bonne réaction. Mais il y a quelque chose d'autre que nous pouvons réellement utiliser appelé un Denham, qui limite effectivement nos choix. Mais cela a des avantages plus tard, Ron, quand nous programmons des choses plus complexes parce que les choix de limites du Denham signifient qu'il est difficile pour nous de faire une erreur ou, plus important encore, difficile pour l'un des les membres de votre équipe pour faire une erreur sur votre code précieux. Et vice versa. Bien sûr, parce que si vous faites une erreur dans le manteau de quelqu'un, ils vont vous haïr pour toujours parce que ça prend beaucoup de temps pour démystifier ces choses. Alors ouvrons notre projet et apprenons à utiliser le NMS e. Nous allons créer un tout nouveau fichier swift dans notre projet pour stocker notre Inam parce que ce contrôleur de vue peut commencer à se rapprocher un peu il cliquez sur notre dossier de projet pas le premier niveau, mais celui juste en dessous de celui du jaune orange. Droit ? Cliquez dessus nouveau fichier, et nous avons toute une tonne d'options. On n'a rien de compliqué. Nous voulons juste IOS en haut et les fichiers rapides prochaine. Ensuite, il vous demande un nom pour ce fichier. Donc, vous devriez toujours nommer ceci quelque chose de descriptif et quelque chose qu'il n'entre en conflit avec aucun des fichiers que vous avez actuellement en train de lire des fichiers que vous êtes susceptible d'ajouter à votre projet. Donc, dans ce cas, je pense que nous pouvons appeler cet opérateur. Um, je pense que c'est assez bon. Donc on note pour les opérateurs et on sait que c'est un in um, Maintenant, comment définit-on Anin ? Hum, eh bien, comme vous pourriez le deviner, vous savez, le fait pour nous. Alors appelons ça un opérateur. C' est juste le nom, pas le type. Alors prenons notre côlon. Et dans quel genre de choses s'agit-il ? Je vais stocker Eh bien, ça va stocker Street Simple, c'est que maintenant, dans een, hum, prend un mot clé spécial appelé une affaire, comme une affaire de commutation. Ajoutons un cas et une annonce. Voici juste le nom est égal à, puis entre guillemets. Prenons un plus. Si tu n'es pas confus en ce moment, pourquoi on fait ça ? Si tu n'es pas confus en ce moment, Si cela semble un peu redondant, ne vous inquiétez pas. Dans quelques minutes, tout deviendra clair car au moins je ferai de mon mieux pour le rendre clair. Prenons un pour soustraire un cas pour les temps ou multiplier et les temps et la programmation est un astérisque qui est sur votre numéro. Des clés. Faisons une affaire pour diviser, diviser et conquérir. C' est une barre oblique. Et puis j'aime généralement avoir un dossier pour rien ou un cas d'erreur. Quelque chose comme ça, que dans ce cas on pourrait appeler ça rien ou on pourrait le laisser vide. Nous n'allons pas réellement l'utiliser, mais c'est une bonne pratique de faire ces choses afin que vous puissiez mieux déboguer plus tard. Maintenant, j'ai promis de définir pourquoi nous faisons cela et pourquoi il vaut mieux le faire de cette façon. Nous le faisons de cette façon parce que la tentation est que si nous sommes dans notre contrôleur de vue, nous pourrions dire quelque chose comme l'opérateur Var, et nous avons besoin d'un O majuscule pour cela parce que la minuscule est réservée est égale à, disons fois. Et il n'y a rien de mal à ça, sauf que ce sont les yeux. Donne-moi une ère. Ne vous inquiétez pas pour ça, sauf que c'est un peu partout. Je pourrais le faire ici. Je pourrais en faire un autre ici. Et peux-tu voir comment ça devient fragmenté en ayant un Denham ? Nous avons un seul endroit où nous savons changer notre variable. Donc, quand nous disons plus tard quelque chose comme l'opérateur DOT annonce, nous savons qu'il se réfère seulement à cette chaîne. C' est une chose très importante à faire parce qu'elle met toutes nos données en un seul endroit afin que nous puissions changer un seul endroit à l'avenir si nous le devons. Bon, alors revenons à notre contrôleur de vue et réglons notre opérateur. Donc, tout d'abord, nous avons évidemment besoin d'un opérateur. Allons donc jusqu'au sommet et créons un opérateur de niveau de classe, variable, variable,courants lointains. Et c'est hors type d'opérateur de cours. Et que Denham soit tiré à travers est égal à. Donc, quand nous chargeons, notre premier opérateur n'est rien opéré, pas rien. Parfait. Ensuite, cela va à notre opéré, cliqué et commencer à définir cet opérateur. Donc, lorsque notre cas est de 10, nous voulons que l'opérateur actuel soit réglé sur l'annonce point de l'opérateur. Ou plutôt, ce n'est pas ajouter, est-ce pas ? Il se multiplie quatre fois. Ok, on finira par y arriver, donc c'est parfait. On peut copier ça. Pourquoi cet opérateur actuel ne partage-t-il pas ? C' est parce que j'ai besoin d'un autre. Y a-t-il de super ? Donc on peut café ça et on peut faire ça pour moins Ne soustrait pas et la même chose pour diviser. Et enfin pour l'annonce puisque nous utilisons un in, um, um, et nous le spécifions simplement comme nous le ferions avec n'importe quelle autre variable, sauf qu'il est limité aux options que vous spécifiez réellement ici. C' est la chose importante en termes de leur limité. Et tu veux vraiment faire ça correctement ? De quoi d'autre avons-nous besoin ici ? On a besoin d'un autre Inam parce que quand on utilise une calculatrice, vous pourriez frapper et j'écrirai juste quelques commentaires ici, vous pourriez dire un plus six fois neuf. On a besoin d'un autre Inam parce que quand on utilise une calculatrice, vous pourriez frapper et j'écrirai juste quelques commentaires ici, Nous avons donc besoin d'un moyen de savoir si nous venons d'entrer un numéro ou si nous venons d'entrer un opérateur parce que nous savons si nous devons effectuer le calcul. Alors faisons un lavement pour cela. Créons un autre fichier, un fichier swift. Et appelons ceci un calcul État E. Non. Maintenant, c'est un peu exagéré pour ce que nous faisons ici, mais je veux juste que vous pratiquiez ça dans, euh concept parce que c'est très, très utile. Faisons un état de canapé Denham, qui va stocker la force. Et nous allons avoir une affaire d'abord, où nous entrons un numéro et ça va être une corde froide entre eux. Et puis nous allons avoir un cas où nous allons avoir de nouveaux engourdissements commencés. C' est un peu de mes vieux langages de programmation glissant là-bas est égal à et vous l'avez deviné midi, hum, commencé. Donc on vient juste d'arriver aux états. Revenons à notre contrôleur de vue et puis mettons cela en place. Donc, jusqu'à présent, Count State, qui est de type count State, est égal à Cal State Don't. Et quelle est la première chose que vous faites quand vous ouvrez votre calculatrice ? Vous entrez un nombre parfait. Maintenant je pense que nous allons laisser cette conférence là parce que vous en avez assez appris, et nous allons continuer à entrer dans notre Denham et écrire Mawr du code de notre calculatrice dans la prochaine conférence. 43. M7 Écrire la logique principale de notre application de calculatrice: il est temps d'écrire le code de base et la logique qui se trouve derrière le joli genre de joli petit G y de notre application de calculatrice. Alors ouvrons votre projet et obtenez le codage correct. La toute première chose que nous devons faire est de stocker le premier numéro que nous entrons. Donc, créons une variable de niveau de classe appelée Far First Value, et nous allons définir cela comme une force. Maintenant, pourquoi est-ce que tu dis ? Eh bien, on devrait en fait stocker. Il s'agit d'un nombre de bunts quand il vient en tant que chaîne chaque fois que nous cliquons sur ces boutons, et il est pratique de le garder comme une chaîne parce que nous avons également besoin de l'afficher dans notre étiquette principale haut de nos boutons de calculatrice. C' est pourquoi nous stockons c'est une force. Donc, en parlant de mettre à jour l'affichage, créons une fonction pour le faire. Donc, un peu plus bas ici simplement créer une fonction simple qui met à jour l'affichage, et cela prend le nombre qui est dans la forme hors d'une rue. Ok, donc on l'a fait maintenant, maintenant, on ne va pas remplir ça tout de suite, parce qu'on va se concentrer sur la logique de niveau supérieur ici, alors allons à notre fonction de clips numériques . Rappelez-vous, cela est appelé chaque fois que nous cliquons sur un numéro. Je veux dire, ici, on va mettre à jour l'écran. Je vais appeler cette fonction qu'on vient de créer. Et qu'est-ce qu'on va lui envoyer ? Eh bien, nous allons envoyer une chaîne qui est faite à partir de l'étiquette ancrée de l'expéditeur. Parce que si vous vous souvenez dans notre storyboard, nous cliquons sur notre image. Nous avons en fait donné à cela une balise, ce qui est sur le côté droit dans les propriétés. Donc on sort cette étiquette, et on en fait une force simple. Super. Maintenant, nous pouvons réellement revenir à notre affichage de mise à jour, et nous pouvons écrire le numéro reçu que nous avons sur notre étiquette. Mais si vous vous souvenez si vous appuyez sur les chiffres sur une calculatrice, il ajoute les chiffres. Il les met à l'écran jusqu'à ce que vous appuyez sur un opérateur, puis il montre un petit symbole d'opérateur que nous ne allons pas montrer. Cela n'a pas d'importance pour l'instant et puis après l'opérateur, une fois que vous appuyez sur un autre numéro, il commence à montrer le nouveau numéro que vous tapez. Par conséquent, nous devons vérifier si nous commençons réellement un nouveau numéro. Donc, nous devons dire, si notre état de calcul et c'est avec la minuscule C. Si vous vous souvenez, nous avons mis cela en place dans les conférences précédentes et c'est cette ligne juste en haut. Donc, si l'état de calcul est égal à l'état de calcul de capital C points nouvel engourdissement a commencé. Donc nous disons que si nous commençons un nouveau numéro, alors nous allons effectuer une certaine action. Et bien sûr, pour aller avec ça, nous avons l'autre affaire. Si l'état de la calculatrice est égal aux états de comptage avec un Capital C fléchettes les entrant, alors nous allons faire autre chose. Donc, juste pour que cela soit vraiment, vraiment clair, cette section est pour si nous commençons un nouveau numéro et cette section est pour si nous continuons , si nous continuons un numéro que nous avons déjà commencé à entrer, droite, Donc, dans la première déclaration if, quand nous avons un nouveau engourdi commencé d'abord, nous devons saisir le texte de notre étiquette d'affichage. Donc, si nous sommes engourdis est égal à et comment s'appelait-on notre étiquette d'affichage ? Je ne pense pas qu'on l'ait encore ajouté, alors passons à notre storyboard. Cliquez sur cette étiquette d'affichage à droite sur la tonalité, puis sur la droite. Nous pouvons cliquer sur ce petit inspecteur de connexions, et il nous dira s'il y a une sortie de référence qui devrait être dans cette deuxième rangée. Cela signifie qu'aucun morceau de code ne fait référence à cette étiquette, qui signifie que nous devons le faire. Alors ouvrons l'assistant éditeur en haut. Tu devrais être habitué à ça maintenant. Contrôle, cliquez et faites glisser à partir de notre étiquette et laissons tomber quelque part près du haut de notre vue Controller amas et appelons cette étiquette d'affichage. Nous laisserons son type au fur et à mesure que vous êtes étiqueté, et ce n'est qu'un point de vente. C' est juste une référence, donc nous savons de quoi nous parlons quand nous y accédons dans notre contrôleur de vue. Alors passons à nouveau au contrôleur de vue. Maintenant, nous pouvons accéder à cette étiquette d'affichage texte sombre. On peut ouvrir et fermer nos accolades, donc je dis juste, assurez-vous que vous pouvez obtenir quelque chose de ce texte et si vous le pouvez, nous allons utiliser cette famille. Donc, si ce nombre n'est pas égal à et c'est à citer, donc si ce n'est pas la longueur alors nous gardons aller à un signe la première valeur. Tu te souviens de ce qui a créé cette chaîne ici ? La première valeur de la première valeur est égale au nombre. Et c'est juste pour que nous ayons quelque part où nous stockons le premier numéro sur lequel nous appuyons . Ok, donc on a fait ça maintenant dehors, hors de If Laisse engourdir Changer d'autres choses. Eh bien, la première chose que nous allons changer est l'état du calcul parce que nous n'avons plus commencé dans votre numéro. On vient de faire ça. Nous devons donc le changer pour entrer le numéro. Alors avons aidé. Les États sont égaux à compter les États dont la capitale C n'est pas entrée. Non. Ok, donc on a fait ça. Tout ce qui reste à faire, mais terminé toute la logique est en fait afficher ce nombre. Donc c'est assez simple. On appelle juste notre étiquette d'affichage, on a obtenu un texte égal au nombre pair. Et c'est le nombre qui est passé dans l'affichage de mise à jour, qui à son tour est en fait passé le clip numéro d'environ. Donc nous allons assez simple, mais il y a juste un peu de logique un peu compliquée ici. Nous devons savoir si nous avons commencé à vous numéro ou si nous continuons à entrer un numéro. Maintenant, par tous les moyens, ce n'est pas la seule façon de le faire. Il y a d'autres façons de le faire. Donc, une fois que vous avez terminé ce module, n'hésitez pas à partir et à expérimenter différentes façons de le faire. C' est une excellente façon d'apprendre à programmer quand vous n'avez pas de pression, expérimentation et juste de vous amuser avec la langue et de voir ce que vous pouvez créer. Voyez si vous pouvez faire tout cela dans environ la moitié de nombreuses lignes. Je pense que je pourrais, mais la question est, pourriez-vous les droits ? Maintenant, nous allons gérer ça d'autre. Si c'est le cas, nous avons entré un numéro et nous y ajoutons des chiffres. Pas d'ajout dans le sens mathématique, mais vous devez utiliser un vrai terme technique, les nombres ensemble, comme dans ce sens suivant, non ? Donc tout ce qu'on va faire ici, c'est aller à notre étiquette. On va mettre son texte égal à Et qu'est-ce qu'on va faire ? Eh bien, nous allons avoir le texte qui existe déjà dans cette étiquette d'affichage, et ensuite nous allons simplement smush sur le numéro que nous avons passé comme une force. Maintenant, cela va nous donner une ère, ce qui est très bien. Je m'y attendais. Et si nous cliquons sur cette petite valeur d'erreur rouge de la chaîne de type optionnelle, pas déwraps Voulez-vous utiliser l'exclamation ou le droit de question afin que vous puissiez le réparer ? Il y a une petite icône de correction automatique si nous le voulons vraiment, mais je ne veux pas le faire pour le moment, parce que je veux vous expliquer. Ici, nous avons bean à travers un peu d'options et les options disent que peut-être variable est stockée dans une propriété. Peut-être que c'est le mot clé qu'il peut y avoir. Maintenant, si nous sommes absolument sûrs que le texte est stocké sous l'étiquette d'affichage, alors nous pouvons dire que nous sommes absolument sûrs en appuyant sur shift et en faisant un point d'exclamation . Donc nous disons, Unwrap que je suis certain qu'il y a une chaîne contenue dans ce texte d'étiquette d'affichage, et comment puis-je savoir que c'est une chaîne ? Eh bien, le texte de la propriété est lui-même une chaîne, et vous remarquerez la question Mark vous disant que c'est facultatif. Donc c'est ton, euh, je pense, qu' est-ce que c'est ? Votre troisième ou quatrième course avec des options ? Alors ne vous inquiétez pas si vous ne les obtenez pas maintenant, ils sont assez compliqués à comprendre, mais sachez juste que vous pouvez le faire. Les bunts utilisent uniquement l'exclamation ou le déballage d'un optionnel. Si vous êtes absolument certain, variez quelque chose là-bas, sinon utilisez ceci. Donc, vous allez tester s'il y a un nombre dans cette étiquette d'affichage, doc, texte et par nombre signifie en fait une chaîne. Désolé, C'est un peu déroutant de nommer là, mais revenant au point d'options, je teste ici et ici. Je ne teste pas. Je dis juste y aller. Dans la deuxième version, s'il n'y a pas de chaîne et que je la déballe, cela s'appelle Forcer le déballage. On va avoir un craquement. Mais je suis assez expérimenté pour savoir que nous avons vraiment du texte là-bas, et c'est OK dans ce cas. Ok , on teste ça. Laissons-le dans notre simulateur. Et j'espère que cette étiquette d'affichage va travailler les orteils, comme je m'y attendais. Donc nous n'avons pas fait d'autre logique, il n'y a pas de logique d'opérateur. Juste l'affichage du numéro que nous entrons. Essayons. Sept, cinq, 23 etcetera. Ok, donc ça marche plutôt bien. Il y a un peu gênant avec deux zéros au début, mais on ne va pas s'inquiéter pour ça. Maintenant, on est juste heureux que nous transférions les bons chiffres. Et, bien sûr, ce seront toujours des erreurs. Je veux dire, ces trois points, l'ellipse, comme on l'appelle, n'est pas idéal. Mais nous avons les bases mêmes de notre application. Donc, nous pouvons maintenant passer à autre chose et faire l'opérateur, puis entrer sur le numéro suivant. Alors faisons ça dans la prochaine conférence. 44. M7 8 Écrire la logique principale de notre application de calculatrice partie 2: Ok, on y est presque. Nous avons la logique de base d'entrer des nombres à l'intérieur de notre application de calculatrice, et maintenant nous allons nous concentrer sur le reste, en faisant les opérateurs et le bouton égal pour que nous puissions réellement effectuer le calcul. Alors ouvrez votre projet et allons-y. Nous avons déjà configuré notre affichage de mise à jour. Nous avons trouvé un moyen de stocker notre première valeur et avec vérifié si nous avons un numéro d'entrée le moment ou un nouveau numéro a commencé. Donc la prochaine chose qu'on va faire est de se diriger vers notre opérateur, cliqué et de finir cette petite section. Maintenant, si vous êtes un appel, nous avons cette instruction de cas de commutateur afin que nous puissions avoir quelque part pour stocker notre opérateur actuel à l'intérieur d'une variable surprenamment appelée opérateur actuel. Maintenant, qu'est-ce qu'on a à faire d'autre ? Eh bien, nous devons dire à notre calculatrice que c'est parti avec Clinton. Opérateur, on va commencer un nouveau numéro, donc on doit changer en haut. Notre état de calculatrice comme nouveau engourdi a commencé. Deux ont inventé un certain nombre de frapper opéré. Le numéro suivant est entrant, non ? Alors, qu'est-ce qu'on fait après ça ? Eh bien, nous voulons vraiment définir le texte de notre étiquette d'affichage. Alors faisons un si. Let num est égal à afficher le texte de point d'étiquette. Rappelez-vous, nous vérifions cette option qu'elle existe réellement. Ouvrons et fermons nos accolades et puis, bien sûr, nous pouvons en faire quelque chose. D' abord, on va vérifier si le nombre n'est pas égal à un blanc qui est important. Ouvrir et fermer, accolades. Ensuite, nous allons réinitialiser notre première valeur à ce que notre étiquette a stocké. Maintenant, la première valeur va saisir ce texte d'étiquette, et ce sera le nombre entier. Donc si j'ouvre le simulateur, il est là. Il va prendre tout ce numéro là-bas, et il va le stocker en deux premières valeurs. Donc, nous avons quelque part où le numéro est réellement stocké. Donc, une fois que nous appuyons sur l'opérateur en option, nous pouvons alors effacer l'écran pour informer l'utilisateur que quelque chose a été pressé ou quelque chose se passe. Donc on peut mettre ça en blanc ? Donc c'est l'opérateur qui a fait. C' est à peu près tout ce qu'on a à faire. Et si vous êtes très nouveau dans la programmation, cela aide à penser d'une manière très modulaire. De quoi cette fonction devrait-elle être chargée ? Que devrait-il prendre soin et ensuite vraiment blanchir cela vers le bas vers le peu que possible ? Et en faisant cela, vous pouvez effectivement créer la logique de votre application beaucoup plus facile que si cela accédait également à divers autres bits de votre programme et essayer de faire tout se passer dans une seule fonction. Donc, parfois, cela aide juste à rendre tout agréable et simple. C' est ce que je vous conseille pour la journée d'un développeur professionnel. Rends-le simple. La philosophie du baiser. Je ne suis pas sûr que beaucoup d'entre vous sachent ce que cela signifie, mais certains d'entre vous le feront, et elle va rire tout de suite. Alors passons à l'écart assez de moi. La prochaine chose que nous devons faire est de vérifier. Nos égaux ont cliqué. Et donc ce qui va se passer quand on cliquera est égal, on va faire quelque chose comme calculer un peu et ça n'existe pas encore. Sois toujours une erreur, mais faisons-le exister. Fonction calcule certains, et cela ne nécessite aucun argument à passer pour toutes les variables parce que nous avons tout disponible dans notre plus. Nous avons le numéro de l'opérateur. Maintenant, si quelqu'un appuie sur égal sans entrer un numéro, eh bien, c'est inutile. Donc, disons que si le premier point de valeur est vide, donc cela signifie qu'il n'y a absolument rien stocké dedans. Ensuite, nous allons revenir en dehors de ça. Donc ça ne va pas faire de calculs. Il ne passera pas cette section mois. Si ce n'est pas vrai, si nous avons une première valeur, alors il continuera à s'exécuter ici et vous remarquerez que nous n'avons pas réellement à mettre autre chose. Ce que nous pouvons faire est simplement écrire du code parce que je connais ce code. Tout ce que je tape ici ne sera pas exécuté car ce retour nous quittera de la fonction avant que nous puissions arriver à cette ligne. Donc c'est juste un programme pratique, un raccourci pour vous. Donc on va faire ce qu'on appelle un résultat. Et ça va être une chaîne vide parce que tu n'as pas encore calculé, non ? Alors faisons défiler vers le bas et effectuons le calcul réel. Donc, si l'opérateur actuel est égal à points de l'opérateur fois, alors que va-t-on faire ? Quoi ? On va le multiplier pour que notre résultat soit égal au résultat de la multiplication. Maintenant, je vais aller dans un puits, ça devrait être un double égal ici. Je vous demande pardon. Maintenant, je vais aller dans un peu de main courte si vous voulez, et c'est très utile pour vous. Donc, sans le raccourci, cela prendrait 1 à 2 ou trois lignes de plus comme mais avec le raccourci, nous pouvons tout faire en une seule ligne. Nous pouvons dire que le résultat est égal à et évidemment cela doit être une chaîne. Donc, avons deux guillemets maintenant à l'intérieur d'une chaîne, nous pouvons placer des calculs, variables et toutes sortes de choses en appuyant simplement sur barre oblique arrière. Donc affaiblir à barre oblique arrière. Nous pouvons dire que je veux que vous fassiez un double nombre à partir de la première valeur, mais cela nous donnera un optionnel. Donc ce qu'on peut faire, c'est forcer à le déballer. Donc ce que je vais faire ici, c'est juste enlever ce deuxième support et je vais forcer le déballer . Donc je fais un double à partir de la première valeur et je dis que vous êtes définitivement là. Et je le fais seulement parce que je sais que nous limitons leur utilisateur à simplement entrer numéros sur notre étiquette. Donc c'est tout ce qu'on peut en sortir, et il n'y a aucun moyen qu'ils puissent contourner ça. Ok, donc une fois qu'on aura fait ça, on va se multiplier parce que c'est des moments qui sont l'astérisque. Et puis nous allons doubler le texte du document d'affichage de l'étiquette. Et bien sûr, cela a également besoin d'un déballage de force parce qu'il pourrait ne pas exister. Mais nous savons qu'il existe réellement. Alors maintenant pourquoi est-ce que ça me donne sur l'ère ? Eh bien, j'ai ces deux crochets juste à l'extérieur, là où mon curseur est en train de planer. Donc un ici et un en bas. Maintenant, quel est le problème ? Eh bien, code X me dit que ce résultat lui-même pourrait en fait être un optionnel. Et si je clique sur la chaîne d'icône rouge, pas sur les rats. Tu voulais dire etcetera, etcetera ? Eh bien, on pourrait juste arranger rapidement, et ça va mettre une exclamation juste à la fin. Alors il a déballé cette conversion. Nous avons déballé cette conversion et ensuite nous avons déballé ce résultat final de multiplication. Donc, si vous n'êtes pas un programmeur expérimenté, c'est en fait un peu dangereux de simplement forcer le déballage partout. Mais à mesure que vous aurez plus d'expérience, vous comprendrez où vous pouvez et où vous ne pouvez pas le faire. Maintenant, je m'excuse d'avoir pris beaucoup de temps sur cette section, mais c'est un concept important pour vous de comprendre, non ? Alors fouettons rapidement tout le reste. C' est assez facile parce que nous pouvons simplement copier ceci. On peut taper d'autre. Nous pouvons le coller et nous pouvons simplement passer par tous nos différents opérateurs et ensuite changer le symbole approprié pour le calcul lui-même. Alors faisons ça deux fois de plus. Était-ce moins ou soustraire ? Peut-être que c'était. Soustraire. On y va. Soustrayons et enfin édition. Ok, donc c'est assez simple pour nous parce que c'est un calcul assez simple. Alors, qu'est-ce qui reste pour bien faire en nous ? Calculez un peu. Nous devrions montrer le résultat. Amenons une étiquette d'affichage. Le texte point est égal au résultat. Parfait. Alors, qu'est-ce qu'on veut faire ? Eh bien, n'oubliez pas, nous avons un état de calcul, et une fois que vous avez appuyé sur Egals, vous avez terminé un certain l'état devrait maintenant être un nouveau nombre commencé, donc il sait recommencer. Droits. Ça a été un trou assez long. Alors frappons le jeu. Voyons voir que tout cela fonctionne. Ça me dit que nous avons un échec. Échec du démarrage tactile pour le lancement. Donc, nous allons simplement cliquer sur le bouton d'accueil. Supprimons l'application offensante. Cliquez à nouveau sur le bouton d'accueil, puis réexécutez-le dans les droits du simulateur. Bingo, disons aux fois trois égal à six. Parfait neuf. Accrochez-vous. Avoir un moment ils sont divisés par trois est égal à trois points. Oh, je pense que mon simulateur fait quelque chose de bizarre parce qu'il supprime ce fond noir. Donc je pense que ce n'est qu'un dollar. Il n'y a aucune raison de codage pour que cela se produise. Donc nous avons là. Nous avons tout en marche. Prenons quatre fois. Oui, c'est juste un bug de codage. Je pense que cinq équivaut à 20 ou pas. Un codage Bug bouton X Code livre. Rappelez-vous, nous sommes toujours invaincus par ces choses. Ça arrive, alors ne t'énerve pas à leur sujet, est-ce pas ? C' est donc notre calculatrice très simple triée. Mais bien sûr, il y a des morceaux qui sont un peu ennuyeux et certaines choses qu'une calculatrice n'aurait pas si vous publiez réellement ceci. Donc, dans la section suivante, je vais vous mettre quelques tâches pour vous d'épiner cela et ajoute mystérieux bouton clair que nous n'avons jamais ajouté en premier lieu. Alors on se voit dans la prochaine. 45. M7 9 de superbes travaux de calculatrice: à droite. On y va. C' est les devoirs. Les premiers devoirs que je vais te donner là où je ne te donnerai aucun indice. On a une calculatrice. Il fait tous les calculs dont nous avons besoin. Mais si on lui faisait un état alors que ce serait bien d'avoir un bouton clair et que j'en ai fourni un dans ce pack graphique pour vous. Donc, je veux prendre ce bouton clair fourni, et je veux le mettre quelque part sur notre écran de sorte que lorsque l'utilisateur appuie dessus, tout se réinitialise à l'état de début de la calculatrice. Et comme un petit bonus, j'aimerais aussi que vous supprimiez ce zéro dans l'étiquette. Tu sais, celui qui apparaît toujours à chaque fois que la calculatrice commence. Donc, deux tâches effacer bouton sur la fonctionnalité derrière elle et supprimer ce zéro de début lorsque la calculatrice démarre. J' ai une solution pour ça. Mais je veux que vous me montrez quelle est votre solution avant de jeter un oeil à la mienne. Bonne chance. 46. Solution calculatrice M7 10: Il y avait quelques choses qui m'embêtent et probablement vous à propos de la calculatrice que nous avons créée. Tout d'abord, il y avait cet horrible zéro en tête dans l'étiquette, et deuxièmement, il n'y avait pas de bouton clair si nous faisions une erreur. Alors ajoutons ce bouton clair et supprimez cet horrible petit zéro en ouvrant notre projet et en voyant quelle est ma solution avec notre planche principale ouverte, allons cliquer sur cette étiquette, et en fait, nous pouvons double-cliquer dessus. Nous pouvons simplement appuyer sur retour arrière et supprimer cet élément frappé, entrer, puis l'étiquette sera vide. Et je pense que je viens de trouver la cause première de ce bug auquel je faisais allusion. Quand il n'y a pas de numéro là-dedans, ça fait disparaître l'étiquette, et je ne suis pas sûr de quoi il s'agit. Son do commande à nouveau d'annuler cela, et si nous cliquons sur l'étiquette qui est bien inspectée, la première chose que vous remarquerez. Il n'a pas de hauteur fixe. Et c'est en fait le problème, je pense, parce que quand vous supprimez la lettre, elle n'a rien à contenir, donc elle s'effondre à ce qu'elle devrait faire. Donc, avec cette étiquette toujours sélectionnée, ajoutons une hauteur fixe 45.5. Eh bien, juste à ça maintenant. Maintenant, si nous double-cliquez dessus arrière espace et appuyez sur entrer notre étiquette reste toujours là. Il s'avère que j'avais tort. Je m'excuse. Pomme. Ce n'est pas un parc dans ton logiciel. C' est un bug dans mon logiciel. Ok, donc ça trie zéro. Maintenant, soyons sérieux. Essayons de régler ce bouton clair. Tout d'abord, allons à nos actifs. Démarrer X cassettes Vérifier. Nous avons été clairs, a ajouté Boston. Si vous ne l'avez pas, ajoutez-le , plus un nouveau jeu d'images en bas et il suffit de le glisser et de le déposer dans les deux X. C'est donc là. Revenons à nos storyboards et laissons un bouton quelque part. Maintenant, nous avons cette belle, symétrique, mais je pense qu'on pourrait en fait laisser tomber ça en bas. Alors découvrons les objets et le bouton à l'intérieur de fair. Faisons glisser et déposer un bouton dans. Ensuite, avec ce bouton sélectionné en haut, montrons les attributs qui défilent vers le bas jusqu'à notre image d'arrière-plan. Où était-ce ? C' est là. Et soyons clairs pour ça maintenant. Ce bouton ne fera pas partie de ces vues de pile que nous avons créées, donc il va l'avoir en bas de notre calculatrice ou peut-être en haut, même pas encore décidé. Donc, nous ne allons pas nous embêter avec les vues Stack. Au lieu de cela, nous allons lui donner une largeur et une hauteur fixes. Et essayons 44 par 44. Il a eu des contraintes grandes. Et bien sûr, nous pouvons redimensionner ça. Et qu'est-ce que vous venez de parler grossièrement jusqu'à ce qu'on le mette en place. Maintenant, où devrions-nous le mettre ? On pourrait le mettre en bas, mais je pense que les endroits les plus habituels au sommet quelque part. Donc, sélectionnons cette étiquette supérieure et sélectionnons cette contrainte qui la positionne entre les deux numéros de série. Si nous double-cliquez dessus, nous pouvons le rendre un peu plus grand pour faire un peu d'espace pour mettre notre bouton clair dans. Alors donnons ça. Peut-être que 70 a une autorisation, et c'est trop parce que vous pouvez voir qu'il est déplacé de l'écran. Essayons peut-être 60 55 c'est de retour sur cet écran. Super. Alors laisse-le là, alors on va chercher le bouton R C. Retirons cette étiquette de bouton parce que nous n'avons pas besoin de cette tente. Euh, nous allons cliquer et faire glisser. C' est entre ces deux éléments, et vous remarquerez que X Code alignera les choses pour vous presque automatiquement tout le temps. Je vais le mettre là-dedans maintenant. Quelle est la prochaine ? Eh bien, nous devons le positionner de manière à contrôler. Cliquez et faites-le glisser jusqu'à l'étiquette. Alignons les bords d'attaque pour qu'il sache où il se trouve, et qu'il soit rapide et glissez-la vers l'étiquette d'affichage. Et nous allons avoir un espacement vertical. Le sexe et toutes ces marques rouges devraient disparaître. Ok, donc je vais juste dire ça, et nous avons notre bouton clair, donc ça se démarque quelque peu. Mais c'est ce que les boutons clairs devraient faire. Je pense que maintenant nous devons connecter ceci à notre contrôleur de vue. Nous avons donc quelques options. Nous pouvons le connecter à une pression de bouton et l'opérateur pressé ou quelque chose comme ça, ou vous lui donnez simplement sa propre petite fonction. Faisons ce dernier, alors ouvrons l'éditeur assistant. Contrôlons clic et faites glisser une fois que nous faisons défiler un peu vers le bas. Je pense que nous allons mettre cet été près du fond parce que ce n'est pas si important pour le contrôle de notre calculatrice. Cliquez et faites glisser et vers le bas, il va en bas. Changons ça à l'inaction. Appelons ceci clair, mais cliqué. OK, et cliquez sur Se connecter. Maintenant, éteignez l'éditeur assistant. Retournez au contrôleur de vue et remplissons cette fonction. On vient de le laisser tomber. Alors, qu'est-ce qu'on a à faire ? Eh bien, festival. Nous devons effacer notre étiquette d'affichage. C' est assez simple, le texte Doc est égal à vide. Ensuite, nous devons dire à notre programme que nous commençons un nouveau numéro deux. L' état de calcul doit être mis à jour pour un nouveau nombre démarré, et cela devrait être le cas. Et encore une fois, je vais juste répéter ce que j'ai dit il y a quelques conférences. Et c'est, si vous obtenez cette logique droite et que vous le comprenez d'une manière modulaire dans votre tête, alors ces fonctions deviennent vraiment simple orteil, en fait créer. Tu vois, j'ai juste mis deux lignes ici, et j'ai déjà tout effacé. Parfait. Ok, donc la prochaine chose qu'on doit faire, bien sûr, c'est frapper jouer et vérifier deux fois. C' est tout ce que j'ai à dire. En fait, il est pour quelque chose. Bien. Allez. Ok, on va bien. Donc, nous allons avoir deux fois. 33 Je suppose, égal à 66. Assez juste. Mais si nous disons neuf divisé par ? Allons annuler ça. Allez-y. Maintenant, disons à des fois à 22 égal à 44. Donc, notre bouton clair fonctionne réellement. Et aussi en prime, nous n'avons pas cet horrible zéro qui existait auparavant dans notre label. devoirs si gentils et simples. J' espère que vous avez la solution dans ses quelques lignes que si vous ne l'avez pas fait, ne vous inquiétez pas, parce que vous y arriverez éventuellement. L' important, c'est que tu continues d'essayer. D' accord, je te verrai dans la prochaine. 47. Résumé de la calculatrice de l'ordre: bien fait pour compléter ce module sur la création d'une calculatrice simple et agréable . Ce n'est qu'un résumé de ce que vous avez accompli jusqu'à présent. Tout d'abord, bon boulot. C' était assez difficile, et il y avait une logique assez complexe. Maintenant, en réalité, la plupart des APS n'auront pas de logique aussi confuse que cela soit, parce que la calculatrice en soi est assez déroutante, logique sage. Alors ne vous inquiétez pas. Si vous n'avez pas tout compris, nous avons transformé ce gâchis de symboles en symboles un peu moins mélangés avec certaine logique derrière. Nous avons également appris beaucoup de choses qui sont importantes pour nous les programmeurs en cours de route. En premier lieu, nous avons appris les dispositions des piles lorsque nous concevons notre calculatrice et comment les utiliser efficacement. Je vous ai aussi montré quelques choses que les acteurs gouaches, des erreurs que vous pouvez faire, et vous vous demanderez ce qui se passe jusqu'à ce que vous réalisiez que vous avez ajouté une contrainte tort, quelque part. Ensuite, nous avons examiné plusieurs actions de boutons. Affecter la même action à différents boutons et simplement utiliser leurs balises pour les identifiercomme je viens de le dire, et puis nous avons regardé toute une série de logique. Affecter la même action à différents boutons et simplement utiliser leurs balises pour les identifier comme je viens de le dire, Mais plus important encore, nous avons divisé cette logique en variables simples que nous avons gardées à suivre, comme l'état de la calculatrice et le premier chiffre que nous avons appris à propos de Denham. Nous nous sommes donc limités à raconter certaines valeurs pour nos variables, ce qui est un exercice important pour nous assurer que vos programmes à l'avenir ne deviennent pas trop fragmentés. C' est important parce qu'il garde toutes ces variables en un seul endroit, et c'est le seul endroit où vous devez réellement les changer. Et enfin, nous avons regardé quelques bons principes de conception ou plutôt bons principes de mise en page pas vraiment conçus parce que aussi fantastique que la calculatrice soit, ce n'était pas le meilleur design. Je serai honnête. Je suis sûr que vous pourriez trouver mieux, mais ça a servi le but si bien. Disposez les principes où nous mettons notre bouton clair comment nous alignons les choses sur l'écran, n'est-ce pas ? Alors c'est la fin. Tu mérites une pause. Va prendre un verre de vin et je te laisse un peu de combat. 48. M8 1 Retour à l'avenir: Êtes-vous prêt pour un module épique ? Tu vas apprendre beaucoup dans cette section. J' ai tellement mis dedans pour faire de vous un très bon programmeur. Alors, qu'est-ce qu'on construit ? Eh bien, comme vous pouvez le voir par le titre, nous allons construire un retour au futur voyage dans le temps à. Donc voici un petit rappel sur le film qui a inspiré cette application et il sert probablement orteil mouiller votre appétit parce que je ne sais pas pour vous, mais j'adore absolument ce film. Il envoie Marty 30 ans dans le temps. Oui, il est piégé dans le passé. Ça doit être un rêve de rencontrer ton père. Et il fait une impression sur sa mère. Eh bien, vous l'avez là. C' est notre inspiration, en fait, je veux aller regarder le film maintenant ? Donc, dans cette section, nous allons apprendre, ou nous allons faire un regard très basique sur le futur, mais ce sera quelques éléments importants ici. Nous allons tout apprendre sur l'APS à onglets comment il affiche les informations en plein de différents robinets . Qu' est-ce que ça va apprendre ? Quelques versions plus avancées de positionner nos éléments à l'intérieur de nos contrôleurs de vue et l' aperçu du storyboard à l'aide des outils que nous avons disponibles, et cela va être inestimable lorsque vous commencez à créer votre propre APS, alors nous sommes va droit un peu de code, comme toujours pour obtenir des années aléatoires ou obtenir l'année en cours, obtenir la date et l'heure actuelles que quelque chose que vous ferez assez souvent dans votre carrière de programmation et comment choisir des lettres à partir de chaînes. Ensuite, nous allons mettre en place des minuteries et des minuteries, répéter un bloc de code chaque fois que vous avez. Donc dans notre cas, chaque seconde et on va l'utiliser pour montrer une horloge à tic-tac. Donc ça va être assez gentil. Et enfin, on va prendre cet écran de voyage dans le temps quand on appuie sur le bouton de départ du voyage dans l'heure. Nous allons en fait montrer une animation pour ces numéros de quatre ans, et je ne vais pas vous le montrer à l'avance. Tu vas devoir compléter le module pour voir à quoi ça ressemble. Mais en faisant cela, je vais vous donner les outils pour animer à peu près n'importe quelle propriété hors de n'importe quelle vue que vous allez créer dans vos actes. Et ça va être absolument inestimable, non ? Allons-y 49. M8 2 Retour à les futures applications d'ongles expliquées: Comprenons un peu plus sur APS à onglets dans IOS. Maintenant, les chances sont que vous allez faire un onglets éventuellement parce que c'est juste un paradigme de conception très utile, sorte que vous pouvez afficher beaucoup d'informations à la fois sans accabler l'utilisateur. Ils sont très natifs sentiment maintenant que IOS est autour depuis 11 12 générations, peu importe ce qu'il est, et nous avons eu beaucoup d'actes qui ont utilisé des onglets. Il est donc très utile pour vous de concevoir votre APS de la même manière. Et bien sûr, nous avons tout un tas d'exemples. Je veux dire, ce sont assez vieilles images, mais vous pouvez voir le classique Instagram Onglet APS, et nous avons très souffrir des éléments comme Facebook et leurs robinets. Donc c'est ce que nous entendons par onglets dans Now de l'Iowa. Généralement, ces onglets s'exécutent le long du bas de votre application. Ils ont tendance à ne pas courir le long du sommet quand il s'agit d'Android. Ils fonctionnent le long du haut parce que le bas a le bouton d'accueil sur l'écran, le bouton de retour et le commutateur de tâches. Où est un IOS ? Le tout du puits du fond n'est rien d'autre que le bouton d'accueil lui-même, donc c'est une distinction entre les deux systèmes d'exploitation que vous devriez faire. Et si vous lisez les directives de conception IOS d'Apple, ils disent, Ayez vos onglets en bas parce que mes doigts peuvent aussi atteindre beaucoup plus facilement et les gens s'y attendent. Donc, faisons notre propre version d'un deux exploités en ouvrant X Code et en créant un nouveau projet, Cliquez sur créer un nouveau projet X Code. Tu devrais être habitué à ça maintenant. Mais avant de cliquer sur Suivant sur cet écran sous IOS, nous ne allons pas créer une seule vue Apple va créer une application onglet, qui est cette option ici sur la deuxième ligne. Ça pourrait sembler légèrement différent. Ton ex pourrait le mettre ailleurs. Mais c'est la version que nous voulons frapper ensuite. Et bien sûr, nous devons donner le nom à ça. Donc je vais rappeler ça au futur B t f frappé suivant. Et bien sûr, enregistrez-le partout où vous avez besoin pour le sauvegarder, n' est-ce pas. Nous avons donc notre application de base. On nous présente cet écran initial, donc nous comprenons tout ce qui se passe ici. Nous avons une fonctionnalité d'onglet générale. La ressource est et vous n'avez pas besoin de savoir ce que c'est en ce moment. Nous les atteindrons quand nous en aurons besoin. Donc tout est pareil. Si nous arrivons à notre liste de fichiers sous le TTF B plus ancien et que je vais juste les fermer rendre plus clair, nous avons le délégué APP. On l'a déjà vu. Nous avons le premier contrôleur de vue et le second contrôleur de vue, et ceux-ci sont les mêmes en dehors de leurs noms. Donc c'est quelque chose de différent. Avant, nous venons d'avoir le contrôleur de vue. Ok, maintenant qu'est-ce qu'on a d'autre ? Nous avons une histoire principale bonne, et tout le reste ressemble, mais dans notre storyboard, si nous l'ouvrons et zoomons, nous avons de nouvelles choses. Ici, nous avons un onglet, notre contrôleur, puis la première vue et la deuxième vue. Maintenant, quand nous avons un onglet à, nous avons besoin de quelque chose qui prend soin d'afficher l'onglet approprié. Quel que soit l'onglet sur lequel nous avons cliqué et est actuellement affiché à l'écran. Et c'est le boulot, notre contrôleur. Donc, le contrôleur n'est jamais quelque chose que vous voyez réellement à l'écran. Il contrôle juste quelle vue nous avons, et il garde une trace des éléments qui se produisent dans ces vues. Donc, par défaut, IOS sait, ou plutôt, ex code sait que nous devons taper. C' est donc le projet par défaut. Nous avons le premier onglet. Et bien sûr, nous avons le deuxième robinet. Et si vous passez à la première vue, vous remarquerez que ce nom d'abord est le même que le nom ici et de même avec deuxième vue. Donc tu sais ce qu'ils pointent maintenant ? Si je zoom arrière et que nous regardons ces éléments, ces petits liens avec ces lignes, ils nous disent quelle est la relation entre l'onglet, notre contrôleur et quelle vue il va. Maintenant, s'il veut créer un autre onglet, ce que vous pourriez faire est de faire glisser votre propre ligne. Donc ce que je vais faire et vous n'avez pas à le faire, mais suivez le long si vous voulez, je vais collecter ceci en premier ou en fait, la deuxième vue sur je vais cliquer sur la ligne qui va du contrôle en vue juste frapper dans le backspace. Donc, il est parti. Maintenant. Le contrôleur de tabulation se rend compte qu'il n'y a qu'un seul onglet attaché, et cette seconde vue est juste flottante. Il n'est pas appelé de n'importe où il ne sera pas affiché ou ne sera même pas chargé. Alors, comment on répare ça ? Eh bien, c'est le contrôle. Cliquez sur notre onglet, notre contrôleur, et relâchez-le sur la deuxième vue. Et puis, si nous regardons cette liste, nous avons manuel Segways montrer le détail, le mode présent. Lee saute. Aucun de ces sons ressemble à Tab. On a une relation. Contrôleurs de vue Segway. Que se passe-t-il si on clique dessus ? Là, nous l'avons. Donc notre deuxième robinet devient le nouveau Tamp. Donc, pratiquons ça pendant une minute, parce que c'est important de savoir que tu vas faire beaucoup de ces APS. Glissons dans un autre contrôleur de vue. Donc plus d'une heure d'objet, inspecteur, nous devrions vous le contrôler disponible. Et si vous ne pouvez pas le voir, tapez simplement view et il devrait apparaître dans la liste courte. Cliquez et faites-le glisser et déposez-le. Donc, nous avons un contrôleur de vue Maintenant, cela n'a rien dedans, et il ne sera jamais montré à moins que nous contrôlions clic et glisser à partir de l'onglet, notre contrôleur et nous cliquons sur la relation Segway pour afficher les contrôleurs. Et c'est maintenant l'onglet numéro trois. Donc je vais essayer de faire glisser ça pour que vous puissiez voir la flèche. On y va maintenant. Ces flèches ne correspondent pas réellement à l'icône affichée à l'écran. Ils appellent, répondent au fait que ça va dans le contrôleur. Mais cela a été ajouté comme le troisième aisam afin que je puisse faire défiler ici et là. Nous avons l'article maintenant. Nous n'avons pas besoin de 1/3 1 pour l'instant, Donc supprimons cette relation et c'est supprimer le contrôleur de vue. Alors sélectionnez-le. Vous devrez peut-être sélectionner cet espace médian, puis appuyer sur Supprimer car parfois cela , il ne supprime pas. Donc, s'il ne supprime pas, zoomez à nouveau sélectionné, zoomez un peu plus, sélectionnez à nouveau et il ne disparaîtra pas. Alors, qu'est-ce qu'on fait ici ? Eh bien, c'est juste un autre code ex. Donc, ce que je vais faire est de cliquer et de faire glisser dessus, puis d'appuyer sur Supprimer. Et maintenant, il est parti. Juste quelques petites idiosyncrasies, si vous voulez, quand il s'agit de code X et de concevoir ces mises en page de sorte que vous devriez finir avec votre vue comme vous pouvez le voir ici, à mon avis. Donc, nous avons peu de contrôleurs et nous avons l'onglet, notre contrôleur, et il est relativement facile d'y ajouter plus d'onglets maintenant, un mot de note que vous voulez généralement avoir au plus quatre ou cinq, selon l'appareil. Vos onglets de ciblage en bas. N' essayez pas de rouler dans 20 onglets, parce que si vous vous trouvez avec 20 robinets, vous n'avez pas conçu votre application correctement. Vous devez retourner à la planche à dessin et cacher certains des éléments. Donc quatre ou cinq onglets ? Maximum absolu Ok, juste une ou deux choses de plus pour le couvrir. Dans cette petite section. Quand nous cliquerons sur Tab, notre contrôleur, vous remarquerez dans notre section inspecteur sect. en haut, non ? Si vous cliquez sur l'icône de l'inspecteur d'identité et que vous regardez la classe, c'est génial comme vous. Je touche notre contrôleur, alors que si vous cliquez sur la première vue, nous avons le contrôleur First View, qui correspond au premier contrôleur de vue dans notre liste hors éléments. Et, bien sûr, c'est la même chose avec notre contrôleur de seconde vue. Cela correspond donc à la classe que le code X a créée automatiquement pour nous. Donc, revenant au contrôleur de barre d'onglets, c'est génial parce qu'il n'y a pas de contrôle de fichier dans notre projet que nous pouvons voir il y a un fichier qui va être inclus avec nos projets compilés. Donc, l'onglet, notre contrôleur sait comment se comporter. Mais si vous le vouliez, vous pourriez créer le vôtre. Vous, j'onglet contrôlez le fichier et vous pourriez attribuer son année sous la classe, et cela ramènerait automatiquement une fois que vous l'avez créé. Maintenant, on ne va pas faire ça. Nous allons utiliser l'onglet standard, notre classe de contrôleur. C' est une partie de base de I OS X Code et Swift, donc nous n'avons pas à y toucher. Mais c'est juste pour que tu saches, parce que plus tard on va faire des trucs comme ça. Maintenant, si vous avez un projet et que vous avez seulement une vue et que vous voulez déposer dans un robinet notre contrôleur bien, comme vous l'avez peut-être deviné dans l'inspecteur objet, nous pouvons rechercher Tab Et là, nous avons un robinet, notre afin que nous puissions faire défiler quelque part vide cliquez et faites glisser et appuyez sur notre manette . Si je relâche, la souris se posera sur notre bureau ou dans notre conception. Un storyboard et laissé au contrôle est par défaut. Donc je ne vais pas faire ça. Je vais juste le garder là pour que tu puisses toujours faire ça. Et vous pouvez contrôler, cliquez et ajoute la vue actuelle Contrôle est que vous avez juste juste une dernière chose parce je ne suis pas sûr que je vous ai déjà dit cela avant, Mais dans le storboard, quand nous cliquons sur cette petite flèche, décider ici Qu'est-ce que ça veut dire ? Ça veut dire que c'est le point d'entrée du storyboard et dans notre liste, sur la gauche. C' est ce qu'il nous dit. Cela signifie que chaque fois que nous chargeons ce storyboard, l'onglet, notre contrôle, il est chargé en premier par défaut. Et il doit toujours y avoir quelque chose qui est chargé en premier par défaut. Droit ? Nous avons donc créé les bases de notre dos à l'application future, et j'ai expliqué en détail sur les storyboards, contrôleurs de barre de tour et l'associé ID You. Je vois les contrôleurs, Alors passons à autre chose et commençons à concevoir dans la section suivante. 50. M8 3 en d'autres barres et icônes de plan, et de l'ensemble de choses !: Maintenant, nous allons passer à la modification de nos contrôleurs de vue dans le storyboard principal et en fait exposer les bases de notre retour à la future application. Maintenant, parce que nous allons de l'avant et que vous avez beaucoup appris jusqu'à présent, je veux que vous mettiez votre propre spin personnel sur cette application afin que vous n'ayez pas nécessairement à suivre mon schéma de couleurs. Je veux que vous choisissiez vos propres couleurs pour mélanger les choses, changer de forme, faire ce que vous voulez, tant que c'est vaguement similaire à la mienne. Et puis une fois que vous avez fait ça, déposez-nous une capture d'écran et voyons à quoi ça ressemble si vous êtes vraiment fier de votre travail. Alors ouvrons X Code et commençons à créer votre propre retour à la future application. La première chose que nous voulons faire est de changer les noms de ces termes Nous ne voulons pas abord, et nous ne voulons pas de seconde cause qui n'a pas de sens pour nous. Alors, où fais-tu ça ? Eh bien, vous ne le faites pas dans le contrôleur de barre d'onglets, parce que le festival il n'y a aucun moyen de le faire. Et deuxièmement, tout ce que vous faites dans la vue contrôle un onglet en bas est propagé vers l'arrière à la barre d' onglets contrôlée par défaut. C' est donc l'endroit sensé pour le faire. Si vous le sélectionnez et que vous sélectionnez l'inspecteur des attributs en haut à droite, droite, vous pouvez simplement modifier le titre de celui-ci. Maintenant, comment devrions-nous appeler ça ? Eh bien, le tout premier onglet va simplement afficher l'heure maintenant. Mais le deuxième onglet va nous permettre de voyager dans le temps afin que nous puissions changer cet attribut et remarqué que cela est propagé à l'onglet VIP onglet, nos droits de contrôleur. Maintenant, si vous le voulez, vous pouvez changer ces images pour toutes les images qui vous plairont et un endroit idéal où j'aime aller pour des images qui sont complètement libres de redevances. Vous n'avez pas à attribuer quelqu'un est des photos d'un point com. C' est aussi d'où j'ai tous les feux d'artifice. Si vous vous demandez, à droite donc d'abord nous avons besoin de quelques images liées au temps. Alors temps de temps en temps. Voyage dans le temps maintenant défilant à travers ces images, il n'y en a que quelques-uns qui sorte de se démarquer comme des images raisonnables que nous pouvons réellement utiliser pour nos robinets. Pourquoi est-ce que je dis ça parce que le nom est avec un fond sombre n'est pas génial. On va devoir éditer ça. Nous voulons une image avec un fond clair, peut-être comme cette horloge. Et qu'est-ce qu'on va utiliser d'autre ? Essayons cette horloge avec l'arbre ici. D' accord ? Donc on veut, genre, arrière-plan, et je vais te montrer pourquoi ? Parce que quand vous sauvegardez tout ça, c'est cool ce voyage dans le temps et appelons ça une fois maintenant. Ok, donc on a ces deux images. Si nous revenons à nos projets et nous allons à nos actifs dot xsi assets, alors nous pouvons ajouter quelques images Nouvel ensemble d'images. Et tu l'as déjà fait avant. Vous devriez avoir le temps maintenant et voyager dans le temps. Ok, donc si on sort du temps maintenant et qu'on tombe dans le temps aujourd'hui, alors laisse-moi apporter ça sur mon bureau. Oh, c'est la roue de ballon de la mort. Ok, donc nous avons notre temps maintenant, je peux cliquer et faire glisser ça dans leur et nous avons notre voyage dans le temps. On peut aussi cliquer dans le suivi, n'est-ce pas ? Donc j'ai sorti deux articles. Revenons à notre storyboard, et il a essayé d'assigner ces temps. Maintenant, si nous sélectionnons ce contrôleur de vue et nous passons à l'image, passons le temps maintenant et oh, nous avons un gros problème et ce que je vais dire maintenant, il est le bienvenu sur IOS. Que se passe-t-il si je voyage dans le temps ? Eh bien, c'est aussi un problème parce que ces images sont trop grandes. Et pour autant que je sache, il n'y avait aucun moyen de réduire le pouce. Donc c'est ton premier petit gotcha. Comment vous contournez ça ? Eh bien, si vous ouvrez Google et je préférerais vous donner les outils sur la façon de rechercher ces choses plutôt que de simplement vous donner les réponses tout le temps parce que cela fera de vous un meilleur développeur. Si nous définissons pour l'icône de la barre d'onglets soupirs. Espérons, eh bien, nous avons un poste de débordement de pile. Nous avons la partie développeur de Apple s. Essayons ces deux éléments. Voici donc notre élément développeur. Si vous arrivez, les tâches s'il vous plaît ne peuvent presque pas être représentées par une icône système ou la sœur Michael ne correspond pas à votre style. Vous pouvez créer le vôtre. Nous savons qu'une icône personnalisée, parfois appelée le modèle, rejette les informations de couleur afin de revenir ici. C' est pourquoi il est parti Ce bleu bizarre parce qu'il vient de supprimer les informations de couleur complètement disparu et utilise le masque pour produire l'apparence que vous voyez à l'écran dans tous les droits hors de ces barres. C' est une note importante. Tous ces éléments qui pourraient être n'importe quelle couleur, mais I West met un masque sur eux et les rend quelle que soit la couleur qu'il juge bonne ou que vous programmez correctement. Donc, il y a quelques directives de conception ici. Créez des designs simples. Utilisez une icône de couleur unie avec transparence. Donc, en revenant à cela comment ah le temps maintenant, si vous vous souvenez, avait la transparence autour des bords, alors que le temps parcourait que J. Peg était blanc. Et c'est pourquoi l'icône temps maintenant ici a cette forme ronde parce que les extérieurs de clair et inversement, Voyage dans le temps est carré parce que les extérieurs ne sont pas clairs. Ok, donc ce sont les versions d'Apple de tout, et ils vous disent ce que vous devriez faire, puis en bas. Ils ont des icônes personnalisées, tailles, donc la barre de navigation recommandée en tuba, icône, la taille icône Taba. Donc c'est ce qu'on veut. Maintenant, il nous dit que nous avons besoin de 75 % 5 pixels pour la résolution de trois x et 50 par 50 pour les deux X . Je ne m'inquiéterais pas pour un X , tu ne vas pas le concevoir d'ici peu de temps. Donc, nous avons en fait deux types 70 cinq et cinquante, et ceux-ci, bien sûr, vont aller dans nos actifs commencer actifs XY. Donc, ces images nécessitent en fait un peu de manipulation de boutique photo. Ça ne fait pas partie de ce cours, et je ne veux pas vous obliger à rester assis à travers ça. Ça ne fait pas partie de ce cours, Mais si c'est ton truc, , tu peux y aller. Alternativement, vous pouvez simplement Google. J' étais le bar tapé d'Icahn, et il devrait y avoir quelques sites Web qui fournissent ces. On a des lumières de la bête icône, Icahn a huit. Je les ai déjà utilisés. Ce sont eux que je connais. En fait, utilisons des icônes. Huit. Ils sont plutôt bons, non ? Donc, on peut juste chercher du temps et encore de ce côté-ci. Ils n'ont pas encore IOS 11, mais ils ont Iowa 10 donc nous allons garder ça tel quel. Et là, nous avons une belle icône de temps que nous pouvons avoir en 50 pixels ou 100 pixels, tout ce dont vous avez besoin. Alors allons-y pour 100 pixels. Nous pouvons télécharger cela et il nous dit N'oubliez pas d'inclure un lien sur chaque page. Les vues sont des icônes. Eh bien, c'est moi qui leur donne le mérite. Maintenant, c'est ma façon de te dire d'où j'ai les icônes, donc je vais fermer ça. Et en plus, vous allez récupérer vos propres icônes de ces endroits de toute façon, donc nous avons notre temps et nous en avons besoin d'un de plus pour voyager dans le temps. Je pense que le champ temporel est assez agréable. Alors téléchargeons ça. Excellent. Donc, ce sont les icônes huit points com. Si vous voulez aller chercher des icônes et n'oubliez pas d'attribuer, dites aux gens d'où vous l'avez obtenue. Si vous utilisez leurs icônes, un lien dans votre application ou sur votre site Web est correct. Maintenant, en revenant à la taille, il nous faut 70 5 et 50 ans et chante Tu es sur Mac. C' est très facile à faire. Nous pouvons utiliser dans des outils construits pour y parvenir. Tout ce que vous avez à faire est de double-cliquer sur l'image pour qu'elle s'ouvre en prévisualisation. Si elle ne s'ouvre pas dans l'aperçu, droit de la souris, cliquez dessus, cliquez sur Ouvrir avec et sélectionnez l'aperçu à partir de là ou à partir d'autres. Si ça ne s'affiche pas bien, nous avons notre aperçu. Nous avons quelques outils et nous pouvons ajuster la taille. Donc, quand ce dialogue apparaît, nous pouvons aller jusqu'à des pixels et nous pouvons en faire un simple vieux 75 par 75. Assurez-vous que l'on clique sur l'échelle proportionnellement. Si vos images sont carrées et que vous voulez qu'elles restent de cette façon et cliquez simplement sur OK, pensez aux outils. Au contraire, passons au fichier et disons cela ou vous pouvez l'exporter en tant que PNG afin que vous puissiez l'appeler autre chose. Je vais mettre ça dans mes téléchargements et c'est celui sur le terrain. Donc nous allons faire ce voyage dans le temps et nous allons lui donner la résolution 75 pixels. Nous savons donc lequel c'est à l'avenir. Ensuite, nous allons aller aux outils, va ajuster la taille à nouveau. On descend à 50 et on exporte ça. Et si vous cliquez sur ce camion bloqué, nous pouvons obtenir tout ce dont nous avons besoin. Donc, je peux cliquer sur l'ancien nom et nous pouvons changer cela à 50 pixels. Ok, donc ils devraient apparaître dans nos derniers fichiers. Et si je sélectionne cette icône dans mon Finder. Il me dira plus de détails sur les fichiers. Tu dois le laisser se rattraper. Ou si, en fait, si je sélectionne celui-ci, c'est une meilleure. Cela nous donnera les détails des fichiers car nous devons nous assurer qu'ils sont 75 pixels et 50 pixels, respectivement. Ça ne marche pas trop bien, est-ce pas ? Nous allons juste aller dans le dossier des téléchargements. Ok, donc on a nos 50. C' est un clic si peu comme sur, alors on sort. Détails tour Voyage 50. C' est 50. C' est 100 fouet, donc on doit changer ça. Retournons en arrière. Ajustez la surtaille 75 par 75. Exporter vers le 75 va l'écraser, et maintenant nous devrions tous être triés afin que nous puissions fermer cette image, et c'est maintenant 75. C' est donc une bonne idée de tester ces deux images. Revenons à l'ex code, allons au voyage dans le temps et passons dans le 75. Mais où est-ce qu'on le laisse tomber ? 75 est trois X Là, nous allons et le 50 dans les deux X. Maintenant, nous allons tester cela sur. Allons au storyboard. Oh, brillant pour que ça fonctionne très bien. Nous avons notre icône du temps, mais nous voulons vraiment que celui-ci soit en voyage dans le temps. Alors changeons son image pour voyager dans le temps. Revenons au premier onglet et passons au temps Maintenant, qui est encore horrible. Goto assets passent au temps maintenant et faisons le même processus en prévisualisation quatre fois maintenant. Alors, qu'est-ce qu'on veut ici ? Nous voulons obtenir nos derniers fichiers. Ils ont ajouté que c'est celle-là ? Ok, donc les outils, c'est juste la taille. Tu devrais prendre le coup de ça maintenant, d' accord ? Et c'est assez soigné parce qu'un aperçu a beaucoup de pouvoir que les gens ne réalisent pas combien il a réellement de puissance. Alors, c'est maintenant, 75 ans. Les choses que vous pouvez faire dedans. Je ne fais presque pas de boutique photo nulle part. Presque. Nous allons avoir 50 par 50 le temps d'exportation de fichiers maintenant. 50. Ok, donc vous pouvez fermer aperçu sur le temps maintenant 50 qui va là-dedans et le temps maintenant 75 qui va dans trois X. Maintenant, si nous allons à notre storyboard, nous avons deux très différents regardant le temps d'Icahn maintenant et Voyage dans le temps et remarquez comment il a laissé tomber les informations de couleur. Ils étaient seulement en noir et blanc, mais c'est fini de mettre sa propre couleur bleue maintenant pour changer ça, c'est un peu plus compliqué et un peu plus impliqué, et c'est une conférence pour une journée complètement différente. Nous ne allons pas le faire en ce moment, mais c'est ainsi que nous avons mis en place nos onglets et obtenir ces images personnalisées là-dedans, juste dans la section suivante, nous allons continuer à créer les vues de notre application de voyage dans le temps. 51. M8 4 Retour aux storyboards futurs de mise en page: On y va. Nous allons maintenant créer la vue principale du tout premier onglet de notre application. Et c'est celui qui dit actuellement la première vue et chargé par le contrôleur de première vue sur elle sans petit onglet pratique sont icône en bas qui dit le temps maintenant. Alors ouvrez votre projet et commençons à créer. droite. Donc, le but de notre première fois de vue maintenant est simplement de nous montrer l'heure actuelle et l' année en cours que Rin, Parce que Voyage de temps de haine est difficile. On peut obtenir la dernière. Ce serait pratique d'avoir une petite horloge. Donc, tout d'abord, supprimons tout ce que les ex entraîneurs ont mis là, il suffit de le sélectionner et de cliquer sur retour arrière pour le supprimer . Donc, il commence avec une ardoise vierge, et si vous cliquez et faites glisser à l'intérieur, rien ne devrait être sélectionné. Si quelque chose est sélectionné, supprimez cet élément. droite. Alors, qu'est-ce qu'on va montrer ? Eh bien, je voudrais montrer l'année, peut-être dans une boîte ici et puis ci-dessous que je veux montrer l'heure actuelle et la date de l'année est vraiment la principale caractéristique de notre application. Nous essayons de voyager à travers les années. C' est ce que j'utilise, c'est vouloir voir. C' est donc votre première introduction à la réflexion sur l'interface utilisateur. Vous devez faire la chose que vous voulez que votre client ou utilisateur interagisse avec la mise au point principale hors des écrans. Ils n'ont pas à penser à où ils vont taper. Ils savent qu'ils savent aussi quoi regarder. Maintenant, plus tard dans ce module, nous allons faire quelques animations, des animations sympas, et nous allons avoir une sorte d'animation de retournement pour notre affichage de l'année Maintenant, afin de pour ce faire, nous allons avoir besoin de quatre étiquettes différentes, une pour chaque chiffre de l'année. Donc, si vous avez 2000 et six, alors vous aurez 2006 dans différentes étiquettes. Donc, nous allons juste déposer une étiquette de notre petite liste Objets. Ici, il est développé manuellement. Obits. Il n'y a pas encore de contraintes. C' est un double clic et il suffit de le mettre à l'intérieur. Ensuite, élargissons cette taille de police pour le numéro deux. Donc je vais voir l'inspecteur des attributs, et je ne fais qu'augmenter ça. Peut-être à 130. Voyons ce que ça fait. Ce n'est pas trop mal. Je pense que ça pourrait être juste une touche plus petite de 1 20 pour s'assurer qu'on s'adapte à tout. Cliquez simplement sur terminé. Changons cet affichage pour le plus petit possible. Ce qui est, bien sûr, l'iPhone quatre. Et c'est peu probable. À ce jour et l'âge, vous serez en fait cibler iPhone quatre appareils que vous allez simplement cibler exclusivement, probablement à cibler exclusivement, partir de l'iPhone cinq vers le haut. Mais l'iPhone cinq a la même largeur que l'iPhone quatre en termes de pixels et la taille de l' écran physique, je pense que c'est juste ? Donc je nous déplaçais un peu jusqu'à ce que ça semble bien, non ? Alors je me suis levé jusqu'à maintenant. Je pense avec ça aussi. Je voudrais réparer son esprit et sa hauteur. Nous ne voulons pas vraiment que ça change. Laissons la largeur et la hauteur sur nos contraintes. Ajoutons ces deux-là. Super. Donc maintenant, vous pouvez réellement copier ceci. Il suffit de le sélectionner et d'appuyer sur la commande C Command V. Et il est déplacé le suivant juste à côté de lui. Là, nous l'avons. Maintenant, ces quatre chiffres. Donc, nous voulons définir la ligne centrale de nos chiffres comme étant la ligne centrale de notre contrôleur de vue au centre ici, donc pour le moment, c'est peut-être un peu trop grand. Mais on peut toujours aller sur les bords, et je vais contraindre ce deuxième numéro au centre, donc je vais contrôler, cliquer et faire glisser dessus. Je viens de tomber quelque part dans la vue, et puis regardons à travers nos options, affaiblir. Centrer horizontalement. Je pense que c'est une bonne idée. Donc on va faire ça. Ça va le laisser tomber au centre. Mais maintenant, si vous faites un peu de maths, nous pouvons regarder avec. Donc ce que nous avons nous lui avons donné quand c'est 68, la moitié est 34. Donc, si nous revenons à notre contrainte centrale et que nous double-cliquons dessus et que nous touchons moins 34 , cela va le déplacer d'un côté. Et cela signifie que le bord droit de ce numéro deux se trouve directement sur la ligne centrale , donc c'est parfait. Ça va bien. Maintenant. Décalons simplement celui-ci jusqu'à ceci pour que le côté gauche et le côté droit soient sur la même ligne. Alors frappons le contrôle, cliquez et faites glisser. Disons un espacement horizontal. Sélectionnez cet espacement horizontal. Double-cliquez dessus et il suffit de mettre zéro. Et ça va, mais ils sont juste à côté l'un de l'autre. Ok, parfait. Maintenant, nous allons coller un autre nombre. Commandement V. Il devrait toujours être en mémoire. On peut changer ça ici, contrôle. Cliquez sur les fouets d'espacement horizontaux et faites-le glisser vers ce milieu. Tu vois ce que je veux dire ? Lorsque vous cliquez dessus, il se déplace vers le bas. Parfois, j'ai besoin de double-cliquer dessus. Mettez zéro dedans. Nous avons notre prochain numéro et collons un autre numéro. Contrôle. Cliquez et faites glisser l'offre habituelle. Horizontal Et si vous ne pouvez pas voir cette contrainte horizontale comme ici, nous ne pouvons pas la voir trop facilement. Il suffit de déplacer votre numéro loin de lui et il devrait se faire connaître quelque part des derniers mots célèbres . Bien sûr que ça ne fait pas ça. Maintenant que je t'en ai parlé, je pense que c'est peut-être cette fine ligne bleue qui monte verticalement avec la malédiction. Bélier. En fait, il s'éloigne un peu plus loin, non ? Donc on a un problème ici. Nous ne pouvons pas voir cette contrainte horizontale, et si vous ne pouvez pas la voir ou si vous ne pouvez pas cliquer dessus, vous pouvez sélectionner votre élément. Et plus dans cette petite liste d'éléments, vous pouvez cliquer sur la flèche et vos contraintes seront affichées. Donc, nous avons une largeur et une hauteur, donc je pense que ce n'est pas réellement montrer la contrainte. Donc, si cela ne fonctionne pas, ce qui est clairement impossible, vous pouvez descendre à la liste des contraintes dans la vue et devrait aller de cette façon à la place. Donc nous avons ça aussi. Nous avons entre ces deux-là. Euh, hein. Et c'est celui-ci maintenant dans vous sélectionnez cette contrainte sur le côté droit. Sous les attributs, Inspecteur, vous pouvez voir quelle est la constante, et pour une raison quelconque, c'est moins un. Eh bien, nous voulons que ce soit zéro. Tout va s'emboîter là-dedans, mais vous remarquerez qu'il y a encore des lignes rouges. Et c'est parce que ces objets, je ne sais pas vraiment où ils sont assis verticalement. Donc, ce que je vais faire, c'est que je vais sélectionner cette seconde pour, parce que c'est notre principale contrainte pour si vous voulez, contrôler le clic , glisser vers la vue, et je vais définir ceci comme centre verticalement dans le conteneur. Mais je vais juste compenser ça un peu vers le haut. Donc peut-être par centaines ou même moins les centaines a chuté un peu moins 80. Parfait. Donc c'est contraint. Le reste de ces deux-là ne sont pas encore contraints, mais nous pouvons corriger cela assez facilement. Contrôle, Cliquez et faites glisser sur ce pour aligner les sommets, disant avec cela pour aligner le haut et enfin, le dernier. Donc maintenant ce dernier montre orange. C' est très bien. Si nous voulons que notre affichage se mette à jour, je passe de l'endroit où il se trouve actuellement à l'emplacement Orange. Parfois, Exco ne fait pas cela automatiquement, Donc si vous regardez vers le bas dans le coin inférieur de cet écran est une petite icône qui dit mettre à jour les cadres. Et si je clique sur cela, il va tout déplacer en place. Si je clique simplement sur le contrôleur de vue, les trames de mise à jour ne sont pas disponibles. Mais si je viens d'envoyer quelque chose hors du chemin, filmez ma vue. Les trames de mise à jour du contrôleur sont disponibles et nous pouvons cliquer dessus, et il va tout déplacer là où il devrait être. Le moment est donc venu de cliquer sur votre sélecteur d'appareil. Peut-être changer l'orientation, Déplacer quelque chose hors du chemin, Mettre à jour vos cadres et assurez-vous que toutes les lignes joliment pour que vous puissiez courir à travers toute la litanie des appareils iPads, iPhones, etc. Nous avons donc notre affichage de l'année. Il va changer ces chiffres aussi. Quoi qu'il en soit, quelle que soit la date actuelle. Donc celui-ci est un peu mal aligné. Maintenant, la raison pour laquelle j'ai changé de date est pour vous le montrer. Et si nous sélectionnons tous ces éléments, l'inspecteur des attributs nous montrera tous les attributs de chaque élément. Et ce que nous voulons vraiment faire est envoyé à cela. Donc, la section d'alignement, nous pouvons cliquer dessus et le changer. Alors quelle lettre Quel numéro est centré à l'intérieur de sa propre étiquette, ce qui semble beaucoup mieux en ce moment. Nous avons besoin d'une étiquette pour aller en dessous de ce qui va simplement montrer le contrôle de la date, cliquez et faites glisser. Et ce que je vais faire, c'est que je vais contrôler ce qu'on veut faire. Eh bien, nous voulons en faire une largeur fixe. Je pense que oui. Amenons-le tel qu'il est. C' est l'esprit actuel. Et positionnons-le sous notre étiquette zéro avec un espacement vertical. Super. Maintenant, augmentons la taille de la police. D' accord ? Je pense que ça fera l'affaire. Maintenant. Rappelez-vous comment j'ai dit que c'est la principale caractéristique de notre affichage de cette année. Donc, la façon dont nous pouvons faire ressortir cela est que nous pouvons cliquer sur notre étiquette principale et nous pouvons couper sa couleur pour que nous puissions avoir. C' est une couleur gris clair. Si on voulait, on peut même dire une taille. Donc, si nous cliquons sur notre icône avant, nous pouvons donner ceci. On n'a pas à le faire. Je tele taille que nous pouvons le rendre très mince maintenant dans la pensée Laissez-le à cela. Ça a l'air plutôt sympa. On peut le centrer si on le souhaite. Donc, si vous regardez vers le bas dans le coin inférieur de cet affichage est une petite icône qui indique Mettre à jour les cadres. Et si je clique sur cela, il va tout déplacer en place. Si je clique simplement sur le contrôleur de vue, les cadres de mise à jour ne sont pas disponibles. Mais si je viens d'envoyer quelque chose hors du chemin, filmez ma vue. Les trames de mise à jour du contrôleur sont disponibles et nous pouvons cliquer dessus, et il va tout déplacer là où il devrait être. Donc, maintenant est un bon moment pour cliquer sur votre sélecteur d'appareil, Peut-être changer l'orientation. Déplacez quelque chose hors du chemin. Mettez à jour vos cadres et assurez-vous qu'ils s'alignent bien pour que vous puissiez parcourir toute la litanie des appareils. iPads, iPhones, etc. Donc, nous avons notre affichage de l'année. Il va changer ces chiffres aussi. Quoi qu'il en soit, quelle que soit la date actuelle. Donc celui-ci est un peu mal aligné. Maintenant, la raison pour laquelle j'ai changé de date est pour vous le montrer. Et si nous sélectionnons tous ces éléments, l'inspecteur des attributs nous montrera tous les attributs de chaque élément. Et ce que nous voulons vraiment faire est envoyé à cela. Donc, la section d'alignement, nous pouvons cliquer dessus et le changer. Alors quelle lettre Quel numéro est centré à l'intérieur de sa propre étiquette, ce qui semble beaucoup mieux en ce moment. Nous avons besoin d'une étiquette pour aller en dessous de ce qui va simplement montrer le contrôle de la date, cliquez et faites glisser. Et ce que je vais faire, c'est que je vais contrôler ce qu'on veut faire. Eh bien, nous voulons en faire une largeur fixe. Je pense que oui. Amenons-le tel qu'il est. C' est l'esprit actuel. Et positionnons-le sous notre étiquette zéro avec un espacement vertical. Super. Maintenant, augmentons la taille de la police. D' accord ? Je pense que ça fera l'affaire. Maintenant, rappelez-vous comment j'ai dit que c'est la principale caractéristique de notre affichage de cette année. Donc la façon dont nous pouvons faire ressortir cela est que nous pouvons cliquer sur notre étiquette principale et nous pouvons couper sa couleur afin que nous puissions avoir, disons, une couleur gris clair. Si on voulait, on peut même dire une taille. Donc, si nous cliquons sur notre icône avant, nous pouvons donner ceci. On n'a pas à le faire. Je tele taille que nous pouvons le rendre très mince maintenant dans la pensée Laissez-le à cela. Ça a l'air plutôt sympa. On peut le centrer si on le souhaite, et la dernière chose qu'on va faire est en fait un Linus horizontalement dans le conteneur. Donc, il se trouve là où il est. Encore eux. Qu' est-ce qu'on fait ? Nous changeons l'orientation. Assurez-vous que c'est bon d'y aller. Donc, pour cet appareil, vous voudrez peut-être le déplacer vers le bas, toucher ou pas complètement à vous. Nous ne l'avons pas encore fait, mais vous pouvez restreindre l'affichage d'un orteil d'appareil uniquement en mode portrait ou paysage dans votre application ou les deux, ou une combinaison de n'importe quel. On n'a pas besoin de ça pour l'instant. Il est toujours préférable de le laisser tel quel et de s'assurer que cela fonctionne. Donc plus tard, si tu veux changer d'avis sur le portrait et le paysage, tu sais que ça va marcher comme une mise en page, non ? Donc, il va double-cliquer sur cette étiquette et dire, date d' aujourd'hui que j'utilise ne va pas vraiment voir que notre logiciel mettra à jour cette étiquette avant qu'ils ne voient le jour d'aujourd'hui. Ok, je pense que ça a l'air sympa, mais il manque quelque chose, et c'est de la couleur. Donc, nous allons cliquer juste sur la vue. Assurez-vous que nous l'avons sélectionné et donnons ce fond et d'autres couleurs, donc je ne sais pas exactement ce que nous devrions faire ici. Je pense que si nous choisissons quelque chose comme ça, nous ne sommes pas tendus. C' est la mauvaise couleur. Partons. C' est par défaut. Nous voulons vraiment l'arrière-plan, et si vous cliquez sur la couleur d'arrière-plan donc je vais le faire à nouveau, vous remarquerez que la couleur rose apparaît dans la liste des couleurs récemment utilisées, donc nous pouvons cliquer dessus. Ok, maintenant, nous allons sélectionner un éléments llevar. En fait, je ne suis pas sûr que ça va très bien montrer donc la date d'aujourd'hui. Nous pourrions vouloir changer ça pour une couleur blanche et laisser 2018 comme une couleur foncée juste pour donner à cela un peu de vie, est-ce pas ? Donc c'est presque parfait. Nous pouvons toujours revenir et changer ces choses. Ajustez-les plus tard. La dernière tâche que nous devons faire est de connecter ceci à nos storyboards. Alors ouvrez votre éditeur assistant ou plutôt, connecté à notre contrôleur de vue. Je vais faire ma chambre habituelle pour qu'on puisse voir ce qui se passe. Et ici, nous avons notre première vue contrôle Controller. Cliquez et faites glisser sur nos étiquettes, et donnons-leur un nom raisonnable. Donc année, première étiquette moins ou année premier numéro étiquette. Cela devrait être le même avec la deuxième étiquette de numéro de 1 année. Je pense que vous pouvez voir où ça va. Année, troisième numéro, étiquette et enfin, quatrième numéro. Quatrième année. Rappelez-vous Labour Love a utilisé quelques raccourcis de mots. C' est tout à fait bien. Vous pouvez le faire tant que vous savez ce qui se passe dans votre propre application. Et enfin, notre étiquette de date d'aujourd'hui deux jours aujourd'hui étiquette Date fera bien. Ok, tout est connecté. Nous sommes prêts à passer à la programmation dans la prochaine section. 52. M8 5 Vers le code futur de l'année: nous sommes prêts à commencer à coder la première partie de notre retour vers l'avenir où nous allons montrer l'année et la date actuelle à notre utilisateur. Alors passons de cela, qui ne fait actuellement rien à une application pleinement fonctionnelle dans notre projet ex code. Il est maintenant temps d'afficher l'année en cours par code. Alors ouvrons notre premier point de contrôleur de vue Swift. Maintenant, nous avons une option ici, et c'est de faire tout notre codage ici. Mais des choses comme obtenir l'année en cours. Je n'appartiens pas vraiment à un contrôleur de vue, parce que si vous y pensez, vous devrez peut-être utiliser le ailleurs. Donc, ce que je vous suggère est que vous créez un nouveau fichier de script en cliquant avec le bouton droit sur le dossier du projet , frappant un nouveau fichier et simplement créer un fichier simple et rapide qu'il allait appeler Utilities et je crée généralement l'un d'entre eux dans mon projets orteil tenir tous les bits et pièces que je ne sais pas vraiment où je veux les mettre . Pourtant, eso est juste comme une poubelle, si vous le souhaitez, ou une poubelle système de stockage n'est pas le mot correct pour cela. Donc, créons une classe appelée Utilities Opening. Fermez nos accolades. Maintenant, nous voulons obtenir l'année en cours, donc ce sera une fonction froide. Obtient du courant. Ouais, et cela va retourner une chaîne parce qu'elle va être transformée en une étiquette. Vous pouvez retourner un numéro. C' est tout à fait à vous de choisir, non ? Dates égales à Comment obtenons-nous la date dans Swift ? Eh bien, c'est très simple. Vous créez un nouvel objet date, alors ce n'est pas un simple est juste dire me donner la date actuelle comme une chaîne. Bizarrement, vous devez créer un nouvel objet de calendrier, qui vient du point de calendrier actuel, et cela saisit le calendrier actuel des utilisateurs. Donc, c'est localiser cette information si vous le souhaitez. Ensuite, nous sommes en mesure de créer nos dates en force. Et pour ce que cela vaut, c' est juste beaucoup trop compliqué par rapport à quelque chose comme DOT net ou C sharp à son courant n'est pas une fonction qui est un changement dans swift. Avant c'était en fait une fonction. Mais maintenant, ce n'est pas correct, alors maintenant nous sommes prêts à créer cette année de chaîne et comment avez-vous fait ça ? Quoi ? Nous saisissons d'abord notre calendrier, celui que nous venons de créer avec un C minuscule et nous en fabriquons un composant et quel composant nous voulons. Eh bien, nous voulons l'année des points maintenant. Voici un peu d'action rapide pour vous chaque fois que nous tapons quelque chose dans l'une de ces fonctions, donc je vais juste recommencer cette fonction. Je vais taper le quoi. Supprimons ça. Je taperai à nouveau le support. Il indique le composant Calendrier comme premier argument. C' est quelque chose qu'il veut, et puis il a besoin des dates à partir desquelles il est créé ceci. Si on double clique, c'est tout. Dispose ces éléments pour nous est le composant de médecin de calendrier, et si nous appuyez sur Entrée, il rend cette couleur sourdine venir au premier plan. Donc c'est nous dire que vous devez me fournir un composant de calendrier, ne le faites pas et puis un de ces jours année sur notre mois minute, etcetera, etcetera. Donc, évidemment, nous voulons juste l'année maintenant. Si vous avez remarqué avant, nous pourrions simplement sauter cela, nous pourrions avoir dot année, et c'est parce que Swift connaît le type off ou la classe qui essayait de saisir les choses et il suppose automatiquement que cela vient avant le point Donc c'est juste une façon abrégée d' écrire ceci. Alors, bien sûr, nous avons besoin des dates. Et c'est la date que nous avons déjà créée, pas avec le capitaine de la minuscule D. Donc ça correspond à celle-ci. Ok, donc maintenant ça doit être une chaîne. Alors nous allons tout entourer de parenthèses et cela est converti à cette force. Enfin, nous allons revenir à ce que l'on appelle dysfonctionnement. Donc un peu compliqué, juste obtenir une simple date hors d'IOS. Mais hé ho, c'est ce que c'est. Maintenant que nous avons notre année en cours, nous ne pouvons pas simplement l'afficher parce que si vous vous souvenez dans notre storyboard, nous avons en fait quatre étiquettes distinctes, donc nous devons retirer le personnage à l'endroit approprié. Donc, de retour dans nos utilitaires, nous avons besoin d'une sorte de fonction off pour obtenir une lettre à un certain index. Alors obtenez la 1ère 2ème 3ème ou 4ème lettre comme index. Et pour ce faire, nous allons passer dans une force qui va maintenant être l'année où nous avons attrapé et nous allons aussi passer dans un endroit qui est un entier. Et donc juste pour être clair, si nous avons quelque chose comme 2018, nous allons passer ça comme cette chaîne, nous allons passer un endroit. Donc on va dire que si son emplacement zéro me donne ça à ça. Et trois ça parce que rappelle-toi. Zéro indexé. Ok, nous allons retourner une force de cette fonction, alors alors comment pouvons-nous en sortir l'index ? Eh bien, il y a une fonction spéciale que nous pouvons utiliser pour les chaînes afin que nous puissions dire indexer égal à la chaîne que nous avons passée. Str n'indexe pas et il nous donne quelques options pour ne pas indexer donc nous pouvons avoir l' index de chaîne i offset par etcetera, etcetera. Donc je ne vais pas m'inquiéter de l'option que c'est en ce moment. Je vais juste ouvrir un support. On va dire chaîne, ne commence pas, Index. Il va prendre l'indice boursier de notre chaîne I e position numéro zéro au début. Ici. C' est le début. Et puis on va compenser les orteils par un peu, ce qui est compensé par. Et on va le nourrir. Cet endroit où nous sommes passés ici. Tout cela est un peu déroutant. Et si tu veux en savoir plus pendant que je ne vais pas parler ici, je vais te laisser découvrir ça par toi-même. Mais fondamentalement, c'est comme ça que vous obtenez des lettres à un certain index. Encore une fois, Swift rend cela trop compliqué. D' autres langues le rendent beaucoup plus facile pour nous, mais c'est ce que c'est, vrai, droits. Donc, nous allons alors retourner une chaîne, bien sûr. Mais à partir de quoi ? Eh bien, on va récupérer la chaîne originale, et on va en sortir l'index. Donc, toute cette complication ici est de deviner un index que Swift comprend comment utiliser. Donc on ne peut pas juste dire, obtenir le personnage numéro deux, trois ou quatre. Nous devons en fait définir un index d'abord en utilisant cette méthode. Ensuite, nous devons obtenir la sous-chaîne particulière de cet index, donc encore une fois , beaucoup trop compliqué. Et je ne sais pas pourquoi ils font ça, mais, hé, je vais dire qu'il n'y a pas de développement de dotnet dans leur équipe. C' est controversé. D' accord, revenons à notre premier contrôleur de vue, et ça charge quelques étiquettes maintenant. Nous voulons être sûrs que notre étiquette est affichée, donc cela sera garanti après la vue. La charge est froide donc nous pouvons dire l'année égale aux services publics. Canards obtient l'année en cours donc nous avons maintenant L'année est une chaîne. Ensuite, nous devons définir nos textes d'étiquettes. Donc, d'abord, nous voulons le faire, et nous pouvons simplement taper le raccourci d'abord engourdi, et il ramènera ça pour nous. Vous n'avez pas à taper l'année. Tout d'abord, vous pouvez taper la partie unique de ce nom de variable, et Swift ira la trouver pour vous. Donc, la première étiquette est égale à et de nouveaux utilitaires Darks et obtient lettre à l'index. Nous sommes passés au cours de l'année à l'emplacement zéro. Parfait. Donc, copions ceci et puis passons à notre deuxième année étiquette numéro Pay Sticks Index d'un tiers numéro, étiquette rythmée. C' est l'index à la quatrième étiquette de numéro. Vous obtenez l'index des idées sur trois. Bon, donc ça devrait avoir tout ce dont nous avons besoin. Sauf que j'ai un problème ici parce que j'ai un idiot. Ce n'est pas l'étiquette. C' est en fait le texte point doc texte texte texte texte, etc. Donc ça se débarrasse de toutes nos erreurs. Et, bien sûr, nous lançons ça dans le simulateur va afficher l'année, et nous allons le faire en seulement une seconde. Mais le festival est quelque chose qui gêne ici, et c'est regarder combien de fois nous avons créé une nouvelle classe de services publics cinq fois au total . le moment, ce n'est pas beaucoup de travail supplémentaire, mais vous devez garder à l'esprit que ce sont nos appareils mobiles. Aussi bons qu'ils soient, ils sont toujours limités sur le processus de puissance et de boire des choses comme ça. recréer cinq fois va devenir vraiment fastidieux, et cela va consommer des cycles inutiles du processus afin que nous puissions réellement corriger cela dans notre section variable de niveau de classe. On peut juste appeler un utilitaire, alors nous allons avoir des utilitaires. Vous queues est égal aux utilitaires. Je pense que j'ai dépensé ça Très bien, services publics attendaient la déclaration de quoi de Oh, chers gémissements. Je continue de revenir à d'autres langues. Tu devras me pardonner. C' est de type utilitaires. Moi idiot. Ok, disons qu'on a. Vous êtes là maintenant ? On n'a pas besoin de le recréer. Nous pouvons supprimer cela et simplement dire que vous tills. Je peux copier ça, et je peux le laisser tomber partout où nous avons des utilitaires. Donc maintenant, nous n'avons créé qu'une seule fois des utilitaires, et nous sommes simplement à nouveau l'utiliser pour obtenir tous les bits et pièces dont nous avons besoin. Donc c'est parfait, non ? On est prêts à faire ça. Laissons tomber cela dans notre iPhone S e en frappant jouer dans le coin supérieur gauche et là nous avons. Ça montre notre année en cours. Maintenant, si j'ai appuyé sur le bouton d'accueil sur effectivement frappé deux fois et que j'ai balayé cela à et puis nous avons chargé à nouveau juste avant que je clique dessus. Notez que nous ne voyons pas les modèles de lettres que nous avons là parce qu'ils sont presque immédiatement remplacés. Nous voyons 27 immédiatement sur def. Vous enregistrez dans notre storyboard, nous l'avions fixé à 2018. Donc c'est bien. Il montre qu'en utilisant le code dans, vu le chargement que vous ne voyez rien encore, mais la vue est là maintenant, juste avant que nous y allions, nous avons cette vue, a fait charger. Mais c'est quelque chose d'autre qui se passe dans le cycle de vie de ces contrôleurs de vue afin que nous puissions remplacer certaines autres fonctions qui se produisent en arrière-plan, dont l' une est appelée View, n'est pas apparue. Cela signifie donc que le code sera exécuté après l'apparition de la vue. Donc, si vous l'avez fait là-dedans, il y a une chance que vous verrez le 2018 avant qu'il ne revienne à 2017. Évidemment, il y a plus de chances de ça. Plus votre processus est intensif pour cela. Donc, plus cela prend du temps, mais aussi remarquez toutes ces choses différentes qui apparaissent ici, et toutes ces fonctions sont exécutées par défaut. Dans le cadre de notre vous. Je vous ai contrôle une classe dont notre premier contrôleur de vue hérite. Il y a donc beaucoup de petites étapes du cycle de vie que vous pouvez utiliser en tant que développeur, et en fait, vous devez utiliser en tant que développeur afin d'insérer votre propre code. Donc, cet exemple que nous venons de faire ici examiné le chargement est pour être sûr que toutes ces étiquettes existent réellement. Si vous l'avez fait, la vue se chargera. Vous avez probablement un accident. Ok, donc c'est comme ça que nous trions l'année et l'affichons et vous montrons aussi un peu vous. Je vois contrôleur et toutes les classes cachées que nous pouvons puiser dans, ou plutôt les fonctions, droite, Allons et montrons une horloge à tic-tac dans la prochaine conférence, une conférence un peu plus difficile, mais je pense que tu auras l'idée assez vite si tu l'as fait aussi loin. 53. M8 6 Au code a l'avenir Cde l'horloge à l'horloge à coup d'un: Maintenant, nous allons faire quelque chose d'un peu plus excitant. On va faire notre version sur un compteur pour montrer les rencontres actuelles dans les mois où Davy quoi que ce soit, plus le temps de tac chaque seconde. Jusqu' à présent, nous avons ceci en Irak, juste un affichage statique de l'année. Mais nous allons changer cette étiquette pour cette horloge à tic-tac maintenant. Ce n'est pas de l'animation en soi. C' est autre chose. C' est un événement qui se déclenche à des intervalles précis, mais c'est un bon moyen de mener à l'animation que nous allons faire plus tard. Et c'est une façon agréable, pas cher et facile de le faire, en fait. Alors ouvrons notre projet et créons notre horloge à tic-tac. Donc on va mettre notre horloge dans l'étiquette de date d'aujourd'hui. Maintenant, avec l'horloge, on doit sortir un kyste du système sur lequel on tourne. Donc, le meilleur endroit pour le faire n'est pas dans le code du contrôleur de vue, mais c'est en fait dans ce fichier swift d'utilitaires que nous avons créé précédemment. Donc, créons une autre fonction à l'intérieur de ce fichier. Appelons ce funk obtient l'heure actuelle, et cela va retourner une chaîne parce que nous allons sortir ceci à une étiquette et une chaîne est le moyen le plus pratique de le faire. Évidemment, maintenant on va contre la date de ça. Donc, nous devons d'abord créer un nouvel objet date. Et c'est tout comme nous l'avons fait précédemment dans cette section get année en cours. Ça fait de l'espace ici et a besoin d'un peu de choses, donc on va avoir nos rendez-vous maintenant, voici un petit donc on va avoir nos rendez-vous maintenant, voici un petit truc qui m'énerve. J' ai cette ligne de code et celle-ci à deux endroits différents. Maintenant, vous pourriez dire que c'est correct de le faire parce que nous avons des dates, et cela ne changera probablement pas. Mais si c'est le cas, nous devons encore changer les choses à deux endroits. Donc, créons une fonction différente pour fournir cette date. Au lieu de cela, obtenez des dates, qui va retourner une date, des objets, et puis tout ce que nous allons faire est de retourner des dates, une nouvelle version de celui-ci. Donc, cela peut sembler exagéré, mais à l'avenir, si Apple change ce nom de date, nous n'avons qu'à le changer à un seul endroit. Donc maintenant, nous pouvons aller ici et nous pouvons dire où nous pouvons réellement supprimer tout ça et nous pouvons retourner la chaîne Jara, Jara Jara et nous pouvons juste appeler, obtenir une date directement là-dedans. Parfait. D' accord. Et puis ici, on peut appeler Let Date Egals obtient jours. Ok, donc ça n'a rien à voir avec cette conférence. Vraiment ? Mais c'est juste quelque chose que ça m'embêtait. Ça devrait être cette ligne de code. On ne veut pas le répéter, non ? Donc, en revenant à notre heure actuelle maintenant, nous allons montrer C'est une étiquette et Scott a eu de l' importance avant. C' est tellement humain que Kenly l'a lu. Donc nous allons créer une affaire de quatre, et cela vient d'une classe spéciale appelée date pour la matière. Et il vous dit au sommet une matière quatre qui convertit entre les dates et leurs représentations textuelles . Ça ressemble à quelque chose dont nous aurions besoin. Donc, nous allons créer que maintenant nous pouvons spécifier dans notre pour la matière le style de date de conduit. Alors, quel genre de style voulons-nous ? Et si je reprends ça et que nous lisons ce qu'il dit style de date, le style de date du récepteur, c'est bon. On va avoir amarré aucun numéro de point. Parfois, ce n'est pas un style. Je pense que c'est ce qui a changé entre Swift 3 et la version actuelle. Et puis nous allons Teoh quatre points de matière style temps est égal à moyen sombre, non ? Donc ce que j'ai fait, c'est qu'on n'affichera pas la date. J' ai changé d'avis à ce sujet. Peu importe. On va juste montrer l'heure pour laisser ça et on verra ce qui se passe . On peut toujours changer les choses plus tard. Maintenant, nous allons créer une force. Donc, laissez la force du temps égale à la matière pleine, et nous allons obtenir une chaîne à partir de la date actuelle. Maintenant, je pourrais passer dans cet état ou je peux appeler ça directement comme obtient date. Donc ça va sortir de cette fonction. Nous avons donc un peu réduit notre code. C' est très pratique en ajoutant d'autres lignes. Ironiquement, en fin de compte, nous avons moins de lignes de code à taper. C' est génial maintenant, nous avons juste à retourner cette force temporelle et dire que maintenant, dans notre premier contrôleur, cherchons quelque chose ici. Créons une fonction pour montrer l'heure et puis, à l'intérieur de notre charge querellée juste à la fin, nous l'appellerons Showtime. Ok, donc on a notre temps. De quoi d'autre avons-nous besoin ? Eh bien, j'ai dit, nous allons animer ça en le mettant sur une sorte de minuterie, mais je pense que c'est mieux si nous commençons simplement par montrer ce label que nous pouvons dire pour notre temps. La force est égale à. Et rappelez-vous, nous avons ce que vous avez créé ici pour qu'on puisse juste l'utiliser dès la batte . Vous tirez, touchez, obtenez l'heure actuelle. Alors on peut le montrer sur notre étiquette. Donc ça s'appelle en fait l'étiquette de date d'aujourd'hui. Textes de points d'étiquette de date d'aujourd'hui. C' est un peu de ah, mademoiselle en nommant ça. Donc je pourrais changer que plus tard c'est égal à huit temps de force, est-ce pas ? Donc, nous allons juste exécuter cela et nous assurer que nous obtenons la sortie que nous voulons réellement de lui. Nous avons notre époque habituelle, n'a pas besoin d'une sorte de chance. C' est parce que c'est en cours d'exécution. Donc, nous allons simplement l'enlever et puis re de l'argile. Ok, ça marche, et on a notre heure et notre rencard. Maintenant, on pourrait mettre la date ici, alors essayons avec ça. Revenons à nos utilitaires et changeons aussi notre style de date . Amorcé, passons court et puis frappons sur le jeu. Voyons ce que ça arrive. Bien sûr, tous ces médiums courts et tout ce qui est documenté sur la pomme développent le site afin que vous puissiez y aller et voir ce qu'ils font si vous voulez, ou vous pouvez simplement le faire comme ça. Ça me semble plutôt bien. J' aime ça, n' est-ce pas ? Donc on peut arrêter ça. Et nous pouvons retourner à notre premier contrôleur de vue. droite. Donc, nous allons créer une sorte de minuterie off à l'intérieur d'ici et juste pour vous montrer où vous devriez commencer, Si vous êtes un développeur et que vous voulez créer quelque chose et que vous n'êtes pas tout à fait sûr de quoi utiliser, il suffit de rechercher développeur Apple, puis les quelques mots clés que vous pouvez penser. Et si vous faisiez cela, vous arriverez à cette page sur le site d'Apple en utilisant des minuteurs. Et il y a toutes sortes d'informations de création et de planification, et ceci est pour l'objectif C. Donc, cela ne nous est pas applicable pour le moment. Mais Apple vous donne des moyens et des méthodes de faire ces choses et vous dit les gouaches les choses à surveiller pour cela dit, pour la façon de l'arrêter, comment supprimer un temps de charges de mémoire et des charges de choses. Maintenant, en tant que développeur, vous ne regardez presque jamais cela. Je vais être très honnête avec toi. C' est juste sec et ennuyeux. Tu regarderas ça quand tu commenceras à avoir des problèmes que je peux te promettre. Regardez-nous directement jusqu'ici et découvrez ça. Mais Apple ne rend pas ça très sec, ce qui est bon pour moi parce que ça veut dire que j'ai un job pour vous enseigner le sexe. C' est juste un moyen que vous pouvez savoir comment faire les choses et ce que IOS est capable de désactiver ou tout autre système d'exploitation d'ailleurs. Ensuite, une fois que vous avez découvert cela, il suffit de Google comment exécuter une minuterie dans Swift. Donc, évidemment, nous n'avons pas besoin de Google parce que je suis là pour vous montrer. Mais c'est juste orteil pour vous faire savoir que vous pouvez faire en tant que développeur débutant pour raccourcir votre temps de développement, non ? Donc, dans notre classe, nous allons créer un minuteur éloigné égal à un nouveau minuteur, et c'est un moment de cela se déclenche après l'intervalle de temps s'est écoulé, envoyant un message spécifié à un objet cible. Et on verra ce que ça veut dire dans une seconde. Droit ? Donc, à notre avis, a chargé. On va supprimer cette heure de spectacle parce qu'on va seulement montrer l'heure. Quand notre temps sera écoulé, nous allons créer une nouvelle fonction, et nous allons refroidir cette fois. Prends bien. Ou en fait, on va appeler cette minuterie. Je pense que c'est une meilleure option. Oui. Et ils allaient appeler ça, à notre avis, charge a mis en place minuterie. Maintenant, passons à la mise en place. Heure de la fonction elle-même. Eh bien, nous allons dire que la minuterie est égale au temps un sombre, et nous pouvons lui donner une minuterie programmée. Et à l'intérieur de ces heures planifiées il y a plusieurs options pour le créer. Ce que nous allons choisir ici alors qu'il y en a trois avec intervalle de temps sur tous et est-ce que ça se répète ? Et quel est le bloc que nous allons exécuter quand il le fera ? Répétez à droite. Donc, nous allons juste cliquer sur Entrée sur ce 1er 1 avec intervalle de temps. Et si vous appuyez à nouveau sur Entrée sans déplacer la souris ou en cliquant, elle ira directement à cet intervalle de temps. Très. Mais ça commence pour qu'on puisse l'enlever. Et nous voulons que ça prenne le relais chaque seconde. Voulons-nous répéter ça ? Eh bien, c'est vrai et puis ce bloc, nous pouvons double-cliquer dessus et il sent tout pour nous. Si nous double-cliquons sur la minuterie, nous pouvons simplement cliquer sur minuterie et maintenant nous pouvons taper le code que nous voulons réellement tirer. Donc, tout ce que nous voulons faire à ce stade, c'est montrer l'heure. Donc je vais le dire sur Voyons ce qui se passe. Eh bien, tout d' abord, nous obtenons cette époque appelée Method Showtime. Enceinte là-bas bla, bla , bla, bla exige de soi explicite. C' est parce que cette petite fonction froide à l'intérieur d'ici ne sait pas à quoi cela appartient, même si c'est évident pour nous. Mais la programmation que nous avons à dire spécifiquement, auto point Showtime. Je vais dire ça, et nous allons exécuter ça, et je pense que nous allons avoir une ou deux erreurs que nous pourrions ne pas, et je vais expliquer pourquoi nous pourrions ou non après avoir jeté un coup d'oeil à cette course aujourd'hui, States et là, nous avons notre belle minuterie de tic-tac. 68 Je pense que mon ordinateur est trop lent. Donc, si vos ordinateurs ralentissent comme le mien, je dois utiliser un Mac basse résolution pour enregistrer ceci, ce qui signifie que c'est un vieux. Ce que vous pouvez faire, il suffit de changer les intervalles de sorte qu'il se déclenche réellement toutes les demi-secondes. Vous êtes donc en train de doubler votre temps de traitement, mais ce n'est pas beaucoup de traitement qui se passe réellement. Et de cette façon, on peut s'assurer que ça va changer à peu près à chaque seconde, non ? Donc, nous avons notre temps de travail et nous n'avons pas eu d'erreurs. Mais j'ai fait allusion au fait que nous pourrions avoir certaines zones maintenant. Je ne vais pas le couvrir ici parce qu'on pourra couvrir ces choses plus tard. Mais si tu as une ère, ça va probablement être quelque part dans cette petite section avec minuterie. Maintenant, l'erreur que vous obtiendrez sera en fait liée à ce qu'on appelle le threading. Donc, si je viens d'ouvrir Google et que nous allons juste taper threading dans Google comme la mauvaise chose, nous voulons le thread CPU et nous obtenons que nous avons juste mis en place quelques images de Google. Maintenant, c'est une image pour votre PC typique, vous avez quelques menaces sur chaque processus, Er, et c'est la même chose sur votre appareil mobile. Vous avez un processus, euh, mais vous avez différents threads sur lesquels vous pouvez traiter les choses, et généralement vous ne pouvez pas passer d'un thread à une autre menace. Donc, dans IOS, tout ce qui se passe sur cet écran se passe dans le thread principal qui affiche le thread, si vous le souhaitez. Ce n'est pas le vrai nom, mais je veux juste garder les choses simples ici et ici. Votre minuteur, vous êtes programmé minuteur peut réellement démarrer dans un thread différent. Ensuite, lorsque votre temps d'appels dans cette petite section de bloc, il se déclenche cette demi-seconde, il va essayer de l'exécuter sur le thread de minuterie, et c'est OK si le temps est thread est sur l'interface utilisateur principale ou vous connaissez la menace d'affichage si vous le souhaitez, donc c'est bien. Mais si vous essayez d'exécuter ceci et surtout cette ligne dans ce bloc de code sur une menace différente , vous obtiendrez un plantage. Maintenant, je ne suis pas sûr parce que je n'ai pas levé les yeux. Si cela rappelle toujours le principal, utilisez la menace de l'interface, c'est quelque chose que je dois rechercher. Vous pouvez faire des recherches si vous voulez, mais je dis juste que c'est quelque chose qui pourrait vraiment vous attraper. Donc on va jouer ça à nouveau et vérifier que la demi-seconde Interval fonctionne. Ça devrait le faire. Mais mon ordinateur est encore assez lent. Neuf. On y va. À ça. ai sauté un là. Ordinateur vraiment lent. J' ai beaucoup de programmes à ce sujet afin d'enregistrer ce cours. Ok, donc ça marche très bien. On peut arrêter ça. Donc, c'est une façon agréable, simple et bon marché de faire tourner de l'animation. Et vous avez également appris un peu sur les menaces et être très méfiant de l'endroit où votre programme qu'il exécute réellement sur les threads. Droit ? Donc, nous pouvons passer à l'onglet suivant dans la prochaine conférence, et nous pouvons créer un voyage dans le temps et une animation de riel réelle quelques conférences après cela . Alors j'ai hâte de vous voir dans ce 54. M8 7 Retour aux storyboards de voyage de l'avenir dans l'heure de l'avenir: nous allons maintenant passer à la création du deuxième onglet de notre retour à l'application de voyage temporel future , qui s'occupe du temps réel pour nous. Et, bien sûr, la toute première étape est de disposer tout le design à l'intérieur de ce deuxième onglet. Maintenant, ça va être assez similaire au premier onglet, ce qui va nous rendre la vie un peu plus facile. Alors ouvrons notre projet et partons. La toute première étape est d'aller dans notre planche principale et de sélectionner notre deuxième vue pour l' édition. Vous pouvez effectuer un zoom avant à l'aide des commandes situées en bas de votre écran. Supprimons tout ce qui est à l'intérieur de cette vue. Faisons un clic de sélection multiple et faites glisser et assurez-vous que rien d'autre n'est là-dedans. L' autre façon de le faire est de cliquer sur cette vue dans la liste sur le côté gauche , et cela vous dira avec n'importe quoi d'autre est là, à droite. Donc maintenant qu'il est vide, ce que nous voulons vraiment faire est que nous voulons montrer une année que nous sommes en voyage dans le temps Nous ne voulons pas nécessairement montrer une date parce que c'est une application agréable et simple. Donc ce que nous allons faire, ils copient simplement nos quatre étiquettes de date à partir des premiers robinets que nous pouvons appuyer sur commande, voir, voir, sélectionner le contrôleur de deuxième vue et juste appuyer sur les frais de commande. Et vous obtenez tout un tas de rouge parce que rien n'est encore aligné. Donc on peut juste mélanger ça un peu, peut-être le mettre au centre. Maintenant, sélectionnons le deuxième élément et limitons cela. Donc on va mettre ça horizontalement au centre du conteneur. Et puis, comme avant, nous allons changer ça à peu près. Je pense que c'était 32 points ou moins 32 points droits. C' est à peu près au centre. Nous pouvons vérifier cela en allant à notre double clic d'origine sur cette contrainte 34. C' est en fait Waas. Donc je suis un collant pour tout avoir beau et même moins 34. Ok, maintenant c'est Smack Bang au centre. Nous avons encore un tas de rouge, alors sélectionnons la deuxième étiquette et c'est parce que nous devons aligner cela verticalement dans le conteneur. Et maintenant tout devrait être bleu, qui signifie que nous sommes prêts à partir. Et bien sûr, nous pouvons tester l'orientation hors de cela pour qu'elle fonctionne aussi dans le paysage, aussi dans le paysage, ainsi que dans le portrait. Brillant. Maintenant, donnons cette vue de fond, il suffit de sélectionner la vue. Allons aux attributs et nous allons choisir et d'autres et peut-être choisir une couleur qui ressemble à cela irait bien avec cette couleur de type pinky. Tu n'as pas à faire ça. Vous pouvez tout avoir à l'intérieur de la couleur, mais c'est à vous de décider. Je pense que ce vert a l'air assez beau, ce beau vert fluorescent, non ? Pour que nous puissions laisser ça tel quel. Et voici juste une petite leçon de design. Je sais que c'est une sorte de couleurs très basiques que nous regardons ici. Mais lorsque vous utilisez votre et qu'il y a des éléments familiers, il y a ces quatre étiquettes dans le premier contrôleur et les quatre étiquettes dans le second contrôleur. Et quand ils basculent entre eux, c'est la partie principale de ce contrôleur de vue, qui attire leur attention sur ce bit. Donc, c'est familier pour un début, et c'est une bonne conception de l'interface utilisateur. Tout le design devrait se sentir familier maintenant. Je ne suis pas designer, mais je connais quelques morceaux. Et si vous avez l'argent, je conseille que vous obtenez réellement un concepteur d'APP de quelque part comme le travail dot com ou des gens par heure. N' importe lequel de ces sites indépendants et ils seront en mesure de vous montrer ce qu'ils ont fait avant, et je peux vous garantir que ça ressemble beaucoup mieux que ce que j'ai ici qui vient de vous nommer maintenant. Notre premier onglet est simplement la date. Comme nous le savons, le deuxième onglet est Voyage dans le temps qui implique un mouvement qui implique que nous allons quelque part et faisons quelque chose. Donc, je pense que toutes les étiquettes de l'année voyageaient pour devrait être transformé en un front légèrement différent. Voyons donc si nous pouvons aller à l'avant et cliquer sur personnalisé. Ce que je cherche, c'est peut-être quelque chose d'italique chez Sister Metallic. C' était devant moi tout le temps, et avec Kotalik, vous impliquez un sens du mouvement. Donc je vérifie juste quelle taille ça doit être. Il doit avoir une taille de 20 ans, donc, comme je le disais, italique implique un mouvement. On va quelque part, et vous pouvez voir ça à partir de ça. Maintenant, nous avons un léger problème. C' est une sorte de couper dehors de l'étiquette. Donc, sélectionnons à nouveau toutes ces étiquettes et voyons si nous pouvons corriger cela. Si nous faisons défiler vers le bas dans notre section des petites propriétés, voyons ce que nous avons ici. Ce clips aux limites signifie que quelque chose ne s'étendra pas au-delà de ses limites. Et au début, je pensais que cela avait été activé pour nos étiquettes. Mais il est clair que ce n'est pas comme quelque chose va discuter quand nous croisons des images à nouveau. Donc ce n'est pas que la seule chose que nous pouvons faire ici est vraiment d'abaisser la taille sur le devant. Alors laissons tomber ça jusqu'à ce que tout se répare dans sa boîte. Ok, donc 105 ça va bien. Maintenant et à vous, vous pouvez ajuster le 1er 1 à 105 ou non. Je pense que je le ferai, juste pour garder les choses cohérentes. Oui. Ok, donc on a réglé ça. Maintenant, quoi d'autre avons-nous besoin ? Ce que nous avons besoin d'un bout de bouton, en fait commencer notre voyage dans le temps, et quand nous cliquons sur le bouton, l'horloge de voyage prendra le relais et fera ce qu'il doit faire. Donc avant de faire ça, mettons juste des tirets dans cette horloge parce qu'on n'a pas besoin qu'elle fasse quoi que ce soit en ce moment et parce qu'on va avoir un bouton, je vais changer cette deuxième étiquette. Juste une touche. Donc, sélectionnons ce centre pour la verticale. Prenons ça à moins 40. Super. Maintenant, nous pouvons aller à notre inspecteur d'objets et aller à Button Drop. L' un de ceux dans ce bouton va, bien sûr, être centré horizontalement. Nous pouvons double-cliquer dessus et changer son titre de voyage dans le temps, et peut-être nous appellerons ce voyage dans le temps de début. Ok, il y a un changement de couleur parce que ça n'a pas l'air super pour le moment. Couleur du texte. Nous avons quelques options. On pourrait choisir le noir. On pourrait avoir des blancs, je crois. Pourquoi ? Ça a l'air sympa ici. Beau contraste de couleur. Changeons nos téléphones comme d'habitude. À quoi ressemble 100 ? Va bien au-dessus du top 45. Note. Essayons 35. Ok, donc c'est notre bouton. Tout ce que nous avons à faire, c'est maintenant. Positionnez ce bouton avec un clic de contrôle par rapport au deuxième nombre, et vous pouvez l'ajuster au contenu de votre cœur. Alors j'ai bougé ça un peu plus près. Parfait. Donc un bus est beau et grand. On sait ce qu'on va presser. Alors disons ça. Et l'étape suivante consiste à sortir tous ces éléments maintenant parce que ce contrôleur de vue sort au contrôleur de seconde vue aucun désactivé. Ces étiquettes vont avoir un point de vente même si on les a copiées. Mais juste pour vous assurer que sélectionner ces étiquettes et sélectionner ce peu son inspecteur à la fin et chacun devrait avoir aucune connexion. Et, bien sûr, le bouton n'a pas de connexion, accord, donc c'est bon. Je vais faire mon petit peu d'espace ouvrir l'éditeur assistant et faisons le jive habituel du contrôle en cliquant sur nos étiquettes à travers. Donc je vais juste raccourcir ça et l'appeler première étiquette, deuxième étiquette, troisième étiquette et enfin quatrième étiquette. Donc, ces étiquettes sont statiques les laisseront comme elles sont maintenant. Nous devons contrôler l'action de notre bouton. Voyons cela sous visualisez-le charger. Passons de l'action de l'orteil de sortie parce que nous voulons que certains co deux bouton de voyage temps feu cliqué. Parfait comment il peut fermer cet assistant éditeur. Nous avons tous les bits et pièces dont nous avons besoin, et nous pourrions commencer à éditer le contrôle de la deuxième vue est si ouvert que et à l'intérieur de nos clics de bouton de voyage dans le temps , nous avons réellement besoin d'un code pour exécuter. Donc on va couvrir ça. C' est un beau code dans la prochaine conférence. 55. M8 en temps de passer à le futur de l'en: Maintenant, nous allons couvrir le code que nous devons exécuter pour afficher notre année de voyage dans le temps . Obtenir des années aléatoires. Il y a un peu de maths impliqués dans cela, et cela va arriver pour que nous puissions afficher cette étiquette dans le deuxième onglet de notre APP. Numéros. Une ou deux choses que nous allons apprendre ici, en particulier les besoins de nombres aléatoires, sont très utiles. Alors commençons à droite. Ce que nous devons faire est d'une manière ou d'une autre dans notre contrôleur de deuxième vue. Eh bien, pas juste quelque part. En fait, nous voulons le faire à temps. Bouton de voyage cliqué sur la méthode ou la fonction. Nous devons sortir une année aléatoire et afficher cette année dans chacune de nos étiquettes de quatre ans. Cela signifie que nous devons d'abord obtenir une année aléatoire, donc c'est quelque chose qui n'est pas lié à l'affichage. Donc, le mettre dans le contrôleur de deuxième vue est un mauvais endroit pour le mettre. Nous devrions mettre cela probablement dans nos utilitaires dot swift, donc partout où vous aimez quelqu'un utilitaires, créons une nouvelle fonction, obtenons une année de rançon, et cela va simplement être une force qui est retournée. Maintenant, comment pouvons-nous obtenir des nombres aléatoires dans Swift. Eh bien, c'est délicat. Vous devez le faire beaucoup de chercher. Mais je suis là pour vous aider, et ce dont vous avez besoin, c'est de l'arc aléatoire et pas juste au hasard. Vous avez besoin d'arc pour uniforme aléatoire et il nous demande une limite supérieure. Donc, cela va nous donner un entier entre zéro et n'importe quelle liaison que nous lui donnons. Donc, en parlant de voyage dans le temps, on ne peut pas vraiment voyager si loin dans le futur parce qu'on ne sait pas à quoi ça va ressembler . Et c'est un peu irréaliste, même si le voyage dans le temps est irréaliste, bien sûr, mais vous voyez ce que je veux dire ? Il est plus facile d'imaginer l'an 3000 que le S 6000, donc nous pourrions vouloir limiter un peu ce voyage dans le temps . Limitons cela à peut-être 4500. Maintenant, nous devons retourner ceci comme une force, et pour ce faire, nous utilisons le mot clé de retour. Donc, il déclenche cette chaîne pour nous, et c'est aussi simple que possible. Nous avons maintenant notre force, alors revenons à notre contrôleur de deuxième vue et nous pouvons retirer cette année-là de nos services publics. Maintenant, dans cette vue, contrôleur, nous n'avons pas encore d'instance hors utilitaires. Rappelez-vous, nous avons effectivement cela dans le premier contrôleur de vue que nous avons créé ici, mais n'est pas Ce n'est pas automatiquement accessible par le contrôleur de deuxième vue. Donc, dans le 2ème 1, nous pouvons créer une instance de celui-ci. Nous allons vous laisser queues égales aux utilitaires. Donc maintenant, il est disponible pour toutes les fonctions de cette classe à utiliser. Laissons l'année égale à toi. Tails point obtenir année aléatoire, et cela retournera exactement ce dont nous avons besoin. Maintenant, tout ce que nous avons à faire est de bien attribuer les étiquettes de texte, nos étiquettes. Donc le texte de la première étiquette Doc est égal à quoi ? Eh bien, si vous vous souvenez dans notre contrôleur de première vue, nous avons fait ça. Nous avons utilisé nos services publics et nous avons reçu la lettre à l'index. Donc, retourner à nos services publics devient alphabétisé. Index était cette fonction qui était un peu compliquée, mais il obtient la lettre à un certain index dans notre force. Revenons à notre contrôleur de deuxième vue et faisons ça. Vous ne recevez pas de lettre à l'index. Donnons-lui l'année et si vous tapez vos arguments dans ces fonctions. Et puis vous appuyez sur la touche Tab. Il vous amène à l'élément suivant. Donc, nous allons vous emmener de str à l'emplacement automatiquement et vous pouvez simplement commencer à taper et il sera en position pendant des années. C' est un joli petit raccourci de codage pratique. Alors faisons le deuxième texte étiqueté. Pratiquons ce petit raccourci pratique que vous queues ont encore une lettre à l'index. Donc, appuyez sur Entrée, puis appuyez sur la touche Tab et la chaîne devrait être probablement mise en surbrillance. Donnons-lui l'année que les fouets ont fait ça mal, n'est-ce pas ? Ok, tu sais quoi ? Je vais frapper, commander et obtenir ça bien. Récupère la lettre à l'index. Donc si vous appuyez sur Entrée, je n'ai rien touché d'autre. Ensuite, tapez simplement cette chaîne cet onglet pressé à moitié à nouveau. Le premier semestre met en évidence cette année et sélectionnez assis et puis lui donner l'interview. ce moment. C' est l'heure d'une course de vitesse. Voyons si j'ai ce bon troisième label et que tu peux me rejoindre dans la salle de vitesse. Vous tillez des points, obtient une lettre à l'index à l'année et interject emplacement à. Et tu vois à quel point c'est rapide ? Une fois que vous allez vraiment avec ce truc, vous pouvez parler et vous pouvez serrer, comme un démon de vitesse en même temps, dit-il, arrêtant. Ce n'est pas si facile, en fait. Bon, donc nous avons nos clics sur le bouton de voyage dans le temps. Nous avons notre année. Maintenant, lançons ça sur notre simulateur iPhone et j'espère que nous devrions avoir tout ce que nous recherchons. Tu sais ce que je vais faire ? Je vais juste supprimer ça pendant que je suis là pour m'assurer qu'on ne retrouvera pas une ère quand il essaie de le charger Tick up, Tick a pris. Allez, on y va. On a la date d'aujourd'hui. Allons à notre voyage dans le temps. Alors cliquez sur l'onglet en bas, attendez qu'il se décollez orteil sur l'écran C'est mes besoins à faire et cliquez sur Démarrer Voyage dans le temps et nous avons déménagé à un an Maintenant, je viens juste de cliquer sur cela à nouveau et nous avons eu une ère donc vous pourriez savoir Obtenir ça ? Mais j'ai compris que Qu'est-ce qui s'est réellement passé ici maintenant ? J' attendais que cela se produise parce que si nous cliquons sur cette erreur est une petite boîte à côté qui n' a aucun sens à personne sauf si vous êtes un ordinateur, est-ce pas ? Donc, si vous avez une ère, faisons monter cette boîte du bas ici et nous obtenons des informations et Exco pour nous dire ce que ces erreurs sont à propos de nous dire. C' est quelque chose à voir avec la ficelle. Str et la chaîne est qui contient pour 17 nous dire quelque chose dans l'emplacement. Et si je double clique que rien ne se passe et que rien ne se passe, donc c'est inutile. On s'est lui-même. On a un index. Alors, qu'est-ce que tout ça veut dire ? Allons à cette boîte de droite et regardons l'erreur fatale. Impossible de former un caractère à partir d'une chaîne vide se qui me donne un très gros indice. Il essaie de retourner une chaîne à un certain index, mais si vous regardez ce petit explorateur en bas, j'étais une chaîne, vous savez, Allons, euh, descendre ça. Notre chaîne contient trois lettres, et nous avons la dernière pour un emplacement trois, ce qui correspond en fait à quatre parce que nous avons zéro indexation, Donc X Code ou Swift ou IOS a plutôt un problème avec cela parce qu'il n'y a pas d'index à la place . Aucun avant la chaîne ne fait que trois caractères, donc nous venons d'avoir notre tout premier crash. Alors réparons ça. Appuyez sur arrêter et il cesse de fonctionner dans la SIM. Qu' est-ce qui s'est mal passé ? Revenons à notre vue de dossier. Et si votre vue de dossier a disparu, cliquez sur l'icône la plus haute gauche et il reviendra. Allons à nos services publics, où nous avons déjà et dans obtenir année aléatoire. Ce que nous aimerions faire en fait, c'est nous limiter à quatre chiffres d'années et la façon dont nous pouvons nous en assurer, c'est en ajoutant 1000. Alors pensez-y. Si nous obtenons zéro va effectivement obtenir 1000. Si nous obtenons 200 va obtenir 1000 200 ou 1200 si vous voulez, donc nous aurons toujours un quatre chiffres sur à l'extrémité supérieure sera 5500. Donc, vous pouvez réellement augmenter ceci à 899 et vous obtenez 9999 Plus, si vous augmentez cela à 9000, vous pourriez avoir un comportement très étrange. Cela fonctionnerait toujours parce que votre chaîne aurait cinq chiffres si vous aviez 10 000, donc notre index de lettre get fonctionnerait toujours, mais vous n'auriez pas la cinquième lettre. Donc quelque chose de très bizarre là-bas donc fonctionnerait réellement. Pour l' instant, n'avons pas 3500. Maintenant, disons que la commande s et relancez-la sans cette époque, j'espère. Ok, on a notre horloge. Passons au voyage dans le temps, cliquez sur démarrer pour 3 à 6 et continuez à voyager dans le temps pour voir qu'il continue à l'ouest. Droit ? Donc, ça marche. Tout est maintenant il est et lisse et glissé. Droit. Donc, vous avez également connu votre tout premier accident dans un F, et ils se produisent de façon inattendue. Et comme vous pouvez le voir, ils se produisent pour des raisons qui sont assez difficiles Toe déterminer. Sauf si vous connaissez votre programme à l'envers. Donc juste dans l'avertissement. En tant que développeur, vous passerez beaucoup de temps à déboguer votre APS. Probablement 50% du temps, au moins débunking finissent par le préparer pour la publication, juste avec couvert le code. Maintenant, dans la prochaine conférence bit excitant. On va regarder les animations appropriées sur IOS. Tu ne veux pas rater celui-là 56. M8 9 Vers les animations de temps futures de voyages dans l'avenir: sont le sang de la vie de vos amplis IOS, mais elles ne sont pas la fonctionnalité de vos points d'accès. Laissez-moi le répéter. Les animations ne sont pas la fonctionnalité principale de votre APS. Vous devriez répéter cela quelques fois, parce que lorsque vous exagérez des animations, cela détourne complètement ce que devrait être votre application, qui est à propos de ce sujet que vous avez créé une application en premier lieu. Les animations surfaites sont le moyen le plus rapide d'en arriver à une. Encouragez vos utilisateurs et de détourner l'attention de votre application. Et tout cela signifie moins d'utilisations plus pauvres critiques, etcetera, etcetera. Il ne semble pas que cela ait du sens si vous exagérez des animations, mais c'est en fait ce qui se passe lorsque vous animez à droite. Donc, une animation, si vous regardez les directives d'Apple, devrait servir un but. Et ce but est d'utilisateur directeur ou d'afficher parfois un événement spécial pour enfermer votre événement dans une sorte de cas particulier, si vous le souhaitez. C' est très mauvaise technologie, donc je suis désolé, mais c'est trop pour vraiment donner un sentiment particulier à un sets en cas dans votre acte. Par exemple, lorsque nous cliquons sur Début Voyage dans le temps et que ces chiffres apparaissent, ce sont ces nombres que nous pouvons commencer à utiliser des animations. Teoh construire ce qui se passe à l'écran pour donner à votre utilisateur un sentiment d'anticipation. Et quand vous faites cela, vos utilisateurs sont attirés en Europe et ils deviennent accro. Pour le dire franchement, ils ont vraiment aimé voir ça, vraiment aimé voir ça, mais seulement quelques pour cent de réduction sur le temps, et seulement pour des occasions spéciales. Et je vais juste vous donner un exemple. Avant de continuer et de créer ces animations. Vous avez probablement joué à ces jeux vidéo beaucoup plus anciens là où il était. Les graphismes n'étaient pas géniaux. Tu as fait ce que tu as fait. Tout était bon. Mais quand vous atteignez la fin d'un niveau ou que vous avez eu un succès dans le jeu à la fin de ce niveau, il y avait une animation, et c'est pour ça que vous vivez en tant que joueur pour moi. J' ai grandi en jouant le dernier fantasme Siris sur What I Live était les séquences vidéo en mouvement qui se sont produites à la fin de certaines parties de jouer à travers le jeu. Mais j'ai vraiment hâte de les voir maintenant. Si vous avez joué toutes ces vidéos pleines de Final Fantasy huit ou sept, par exemple, qui est votre mienne préférée était huit. Je sais que ça va être controversé pour certains d'entre vous, mais quand vous jouez toutes ces scènes de FNV dans la séquence, ce n'est pas génial. Vous vous ennuyez, et il n'a qu'une valeur nostalgique pour le mois de mai. Mais quand vous jouez à travers le jeu, vous avez créé un appétit pour voir quelque chose de différent. Donc, c'est ce que j'essaie de faire à travers ici, c'est que nous avons utilisé dur à nouveau des animations. On a une horloge à tic-tac, mais c'est tout. Une animation pour la fonctionnalité. Dans ce cas, nous allons récompenser l'utilisateur pour avoir cliqué sur ce bouton, ce qui lui fera cliquer plus souvent. C' est donc juste les animations et ce que vous devriez viser en tant que développeur quand il s'agit de ce sujet. Alors regardons comment effectuer les animations les plus simples dans notre projet. Dans votre deuxième point de vue contrôleur, qui s'occupe de la partie Voyage dans le temps de l'Irak. Passons à notre fonction cliquée sur le bouton de voyage dans le temps. Maintenant, c'est ici que nous changeons ces étiquettes, et c'est ce que nous voulons vraiment animer. Commençons donc par une animation très simple juste en dessous de l'endroit où nous avons défini l'année. Accédez à une classe d'animation, et ces animations sont en fait contenues dans la vue U I. Donc, toute cette vue, si nous allons au storyboard ici, est en fait faite d'une classe appelée que je vois. Et vous savez qu'en cliquant sur cet inspecteur de classe et vous pouvez voir en haut à droite ici, c'est une vue U Y, donc nous savons si vous voulez faire des choses avec elle. Un bon premier endroit à regarder est dans la classe U I. Quelques, et il vous dit un objet qui représente une zone rectangulaire sur l'écran et gère le contenu dans cette zone. Je pense qu'Apple regrettera cette description quand ils sortiront un iPhone circulaire ou quelque chose d'étrange comme ça. Donc tu ne peux pas être juste rectangulaire. Vous pouvez obtenir beaucoup de formes différentes. Vous les gars, vous ne le faites pas et tapez simplement ce que vous pensez que ça pourrait être. Et voici, nous avons une animation. Maintenant, nous voulons donner une durée à cette animation. Alors, combien de temps ça prend ? C' est la toute première option avec un intervalle de temps de durée. Ensuite, il nous demande un peu d'animation de code que nous allons terminer, donc nous allons écrire que vous pouvez alternativement avoir une animation, et ensuite vous pouvez définir un peu de code qui s'exécute à la fin avec cette version. Et si vous faites défiler le centre commercial, vous avez beaucoup d'options différentes. Vous pouvez avoir un retard pour ça. Vous pouvez mettre quelques options avec l'animation. Il y a des tonnes que vous pouvez faire pour l'instant, qui va choisir la première option avec une génération. Alors, combien de temps dure cette animation ? Prenons une demi-seconde. Allons frapper Tab Et quelles animations ? Eh bien, tout ce qu'on a à faire ici, c'est ouvrir et fermer. Nos accolades enlèvent cette tombe est au milieu en appuyant sur l'espace arrière et appuyez sur Entrée. Donc, ces animations vont en fait être ce que nous allons faire sans étiquettes. Donc ce qu'on va faire, c'est qu'on va glisser ces objets pour crier, non ? Ça a l'air assez simple. Alors essayons ça. Nous allons avoir la première étiquette maintenant pour faire glisser quelque chose. Nous devons savoir où il se trouve dans l'espace afin que notre fonction d'animation puisse suivre et savoir ce qui se passe et faire toute l'extrapolation et toutes les mathématiques compliquées pour nous. Donc on va le passer au centre, ce qui est un point CD. Cela lui donne le centre du niveau réel. Nous ne buvons que horizontalement, donc nous voulons définir le point X et cela correspond à horizontal. Pourquoi est-ce vertical ? Et ce qu'on va faire, c'est qu'on va y ajouter quelque chose, plus des égaux, qu'est-ce qu'on va ajouter ? Eh bien, nous allons ajouter la Vue. Ne bornes pas fait de l'intelligence. Cela ajoute donc toute la largeur de la vue à notre première étiquette. Maintenant, il y a quelques erreurs sur la référence à la propriété. C' est parce qu'il veut de soi. Il suffit de cliquer sur Correction. Et il dira, je dois me mettre pour savoir où c'est. Et c'est une erreur courante que les gens font et ce sera la même chose dans la vue auto point. Ok, donc on est tous triés là-bas. Je vais sauver ça, et on va juste faire ça et voir ce qui se passe vraiment là-bas. Il y a beaucoup de choses à parler et à prendre part à cette conférence, et j'y arriverai en temps voulu parce que vous avez probablement quelques questions sur ce que vous avez vu là-bas. Par exemple, pourquoi devons-nous texter après l'animation. Eh bien, je vais te dire quelque chose de secret dans un peu. Allons donc à notre voyage dans le temps. Il est cliquez sur Démarrer et il y a notre trois une fois voir un. Ok, donc ça marche très bien maintenant. Que se passe-t-il ici ? Parce que cette étiquette est définie et celle-ci et celle-ci etcetera, et dans ce bloc de code, elle fonctionne, donc elle exécute ceci, puis elle exécute ceci, mais elle n'attend pas pour exécuter ceci. Il se déplace tout droit et exécute Vits. Donc, ce bloc ici est en cours d'exécution ce que nous appelons un synchrone. Ce n'est pas courir ligne par ligne et attendre que chaque ligne se termine. C' est important à savoir. Très, très important à savoir, parce que les techniques de programmation asynchrone sont partout ces jours-ci et ils nous aident à créer vraiment responsive. Peut-être que c'est la première introduction à une programmation de puits. Et si vous êtes un précédent .net développé, vous saurez exactement de quoi il s'agit, non ? Faisons la même chose pour nos quatre autres étiquettes. Il suffit donc de copier et de coller. C' est une demi-seconde étiquette, 1/3 1 bien sûr, et la dernière. Ok, donc maintenant nous pouvons exécuter ça, et chaque fois que vous cliquez, jouer sur le simulateur sauve automatiquement votre projet. Maintenant ça va animer tout ça en même temps. Allons parler voyage dans le temps. C' est là. Donc, le tout glisse à l'écran apparemment en même temps. Brillance. C' est assez bien. Mais je voudrais en fait rendre cela un peu mieux. Alors arrêtons la presse et comment allons-nous améliorer ça ? Eh bien, cette fonction d'abord devenait un peu compliquée. Donc, sortons ce truc d'animation et créons une fonction distincte appelée Animates Aisam . Ouvrons les parenthèses. Nous devons passer dans certains articles festival une durée dans le temps, ce qui est un double. Et ce que j'aimerais faire est d'apporter une étiquette, puis la suivante, puis la suivante, puis la suivante, puis la suivante. Et pour ce faire, nous avons besoin d'un délai entre nos animations. Donc on va passer un délai pour ce qui sera un double. Et puis nous devons réellement passer dans l'élément que nous voulons animer. Donc nous pouvons dire que c'est juste l'objet et c'est un type que je vois, et vous pourriez dire, mais le motif n'est pas vous. Je vois que c'est une étiquette, euh, mais les étiquettes héritent tout le chemin du retour de toi. Je vois tout à l'écran provient d'une vue U I, donc tout à l'écran peut utiliser les propriétés que je vois. Si vous êtes toujours confus au sujet de l'héritage, retournez à la section rapide que j'ai faite et qui vous dira ce qu'est l'héritage . ce moment-là, nous devons également passer dans un endroit de, et c'est un type spécial. Ça s'appelle CD Float. Ensuite, nous devons passer l'emplacement appelé CD Float ou type de flotteur CG. Et cela nous indique le type de base pour l'échelle à virgule flottante des valeurs et des graphiques de base et des frameworks connexes. Ne vous inquiétez pas pour ça pour l'instant. Sachez juste. manière générale, vous passez dans un lecteur de CD pour un emplacement. Ce n'est que deux points X et Y. où est le truc ? Droit ? C' est donc notre fonction créée. Maintenant, créons notre animation réelle. Donc, comme on l'a fait avant toi, tu n'animes pas. Maintenant, nous en voulons des plus spécifiques. Nous voulons celui-ci, je pense, avec délai de durée, options et gestionnaire d'achèvement. Donc c'est exactement ce que nous voulons Maintenant avec la durée, nous allons transmettre, évidemment, la durée de notre fonction. Les fouets de retard, le retard. Nous allons passer quelques options maintenant. Nous pouvons réellement créer ces options, ou nous pouvons utiliser une partie de l'intégré. Alors, vous avez juste. Je vois les options d'animation là appuyez sur point et avons courbé. Il est à l'intérieur et à l'extérieur ou en fait , se débrouiller. Donc, il va ralentir au fur et à mesure qu'il arrive à son point final, et ensuite nos animations nous pouvons frapper, entrer, et nous pouvons réellement animer nos objets sur Qu'est-ce que nous allons animer ? Eh bien, nous allons animer les objets au centre du point Dr X Plus est égal comme nous l'avons fait avant. Quais d'accès à point libre. Bounds fait avec qui est assez simple et à l'achèvement, affaiblir faire autre chose si nous le souhaitons. Et si vous double-cliquez sur ceci et mettez dans un booléen si vrai qu'il a terminé, alors vous pouvez avoir quelques codes facultatifs à compléter à la fin de l'animation. Donc c'est totalement à vous de choisir. Vous pouvez en fait, à ce grand Ah, et je ne pense pas qu'on ait vraiment besoin de et vers ce est juste encombrant notre point de vue. Je pense que c'est un tutoriel précédent que j'ai fait, où j'ai ajouté quelques options supplémentaires. Nous ne nous inquiétons pas pour l'instant parce que nous avons notre de et vers avec l'objet que nous passons et la vue que nous sommes réellement assis dans la droite. Donc maintenant, nous pouvons faire défiler vers le haut et nous pouvons supprimer cette section entière ici et nous pouvons la remplacer par animates ison. On peut lui donner la durée d'une demi-seconde. Il a tassé. Nous pouvons commencer la première lettre immédiatement, et passons la première lettre, la première étiquette qui fera ce qu'elle doit faire. Ensuite, nous pouvons simplement copier ceci et coller trois fois en dessous afin que nous puissions passer à la deuxième étiquette pour celui-ci. Le troisième label et le quatrième label. ce moment, nous voulons qu'ils durent. Vous voulez que la durée de l'animation soit la même 0,5 pour chacun est correct. Nous voulons retarder chacun d'eux juste un peu, alors retardons celui-ci de 10.2 secondes. Celui-ci par 10.4, celui-là par 10.6. Tu vois ce qui se passe ici ? On déclenche cette animation. Ça arrive ici. C' est dire que je vais animer cet objet. Cet objet première étiquette et je vais également appliquer DeLay. Je vais attendre un peu, mais la beauté de ça c'est que c'est asynchrone. Donc, cela s'exécute immédiatement. Ça n'attend pas que cet orteil arrive. Même avec le 2e 3e et bien sûr, le quatrième. Et à cause de cela, peu importe que ceux-ci soient assignés à la fin à nos yeux humains. On ne remarque pas la vitesse, la différence entre eux. Et en fait, tout cela se produit probablement dans le tic-off un processus de cycle, ce qui n'est pas techniquement vrai. Ne me crucifie pas dans les questions à ce sujet, mais tu vois ce que je veux dire. C' est arrivé si vite qu' on ne le sait pas . Laissons ça. Et j'espère que ça va nous donner un peu de retard. Juste un juste perceptible sur chaque article. Donc, ayez la date d'aujourd'hui. Allons voyager dans le temps et commencer. Et là, il est tellement se déploie de cette puce de vaisseau côté puce. Et je pense que ça a l'air plutôt soigné. J' aime vraiment cette animation, non ? C' est ainsi que vous créez des animations très simples. Et c'est aussi une introduction à une méthode synchrone s'exécutant à l'intérieur de votre code. Bien joué pour l'avoir sorti dans cette conférence. En fait, c'était assez difficile et c'est beaucoup de choses à emporter et à apprendre de cela. Donc si vous voulez faire une pause avant de passer à la prochaine et je vous ai dit, vous êtes un peu plus facile, je vous promets de faire vos devoirs, alors n'hésitez pas à le faire. C' est beaucoup mieux que ces choses s'enfoncent très lentement pour que vous puissiez les comprendre. Comme on dit, la programmation asynchrone varie ou Dieu. A partir de maintenant, quand il s'agit de programmation, vous allez l'utiliser tant de fois. Et si vous le comprenez maintenant, votre développement en Corée va juste décoller. Ce sera si bon, non ? Va faire une pause et je te verrai dans la prochaine. 57. M8 10 Retour à la maison future: On y va. Un peu de devoirs pour toi et tu dis probablement, Oh, quoi maintenant ? Qu' est-ce que je dois faire ? Eh bien, désolé, mais je suis difficile. Quand je fais des casquettes, elles doivent être justes. Ils doivent être exempts d'erreurs et de petites distractions parce que les distractions gâchent vraiment la saveur de votre application. Donc, dans notre numéro de voyage dans le temps, notre petite horloge montre la date d'aujourd'hui comme une étiquette avant qu'elle ne prenne le relais une fois. Donc ce que je veux que vous fassiez, c'est réparer ça dès que notre acte se chargera. Je veux qu'il montre l'heure immédiatement pour qu'on n'ait pas cette petite distraction. La deuxième tâche et la tâche finale pour vos devoirs est quelque chose que je ne ferais pas nécessairement dans cette application. Mais je veux que tu le fasses. Pour mettre en pratique vos capacités d'animation. Je veux que vous fassiez l'écran d'arrière-plan de l'onglet 1. Donc, cette fois maintenant changer de couleur à chaque fois que l'horloge coche. Et il pourrait s'agir de toutes les couleurs que vous aimez absolument à vous maintenant, afin d'animer cela, vous allez changer la couverture de la vue d'arrière-plan. Mais je voudrais aussi que la couleur s'estompe et s' estompe, s' estompe, s' estompe. Donc c'est lisse et pas saccadé. Pour ce faire, vous devrez utiliser quelque chose appelé la propriété Alfa hors de votre vue d'arrière-plan. Donc c'est votre chance. Et j'espère que vous écrivez ça. C' est beaucoup de juste dire là. C' est votre chance d'aller vraiment explorer les choses que vous pouvez animer en utilisant des choses comme vous. Je vous ai animé dit un couple d'un ou deux bits et des morceaux qui sont assez nouveaux. Mais vous devriez comprendre maintenant où aller chercher ces choses ou d'utiliser le code automatique complet dans le code X pour voir ce qui se passe. droite. Donc je vous laisse à ça et je vous verrai dans une demi-heure une fois que vous l'aurez essayé, quand je vous donnerai ma solution, bonne chance 58. M8 11 Retour à la solution future: dernière fois que je vous ai confié quelques tâches, j'aimerais que vous teniez dans notre dos à l'avenir. Oui, et on ne fait que récapituler. Je parie que tu gémissais quand j'ai dit mes devoirs. Et tu sais quoi ? Maintenant ? Eh bien, je suis difficile, donc j'aimerais que vous supprimiez ce retard au démarrage. Je ne veux pas voir ce texte d'étiquette. C' est à vous de décider comment vous l'avez fait, bien sûr. Et puis aussi, je voulais que vous fassiez l'écran d'arrière-plan de Tab un changement de couleur, mais aussi fondre et sortir avec une belle animation en utilisant la propriété Alfa. Alors regardons comment je vais résoudre ce problème et comparer et contraster vôtre. Nous allons d'abord aborder la partie la plus facile de ce devoir que la date d'aujourd'hui. Ce que vous pourriez faire est juste de double-cliquer dessus et vous pourriez frapper l'espace ou quelque chose. Donc ça n'existe pas. C' est tout à fait à vous de décider. Je ne vais pas le faire comme ça. C' est la façon de l'homme paresseux. Ce qu'on va faire, c'est ouvrir notre premier contrôleur de vue et on va voir ce qu' on a là ? Nous avons notre mise en place minuterie auto point Showtime. Ici, nous avons Showtime et cela change notre étiquette pour montrer l'heure. Bien sûr. Donc tout ce que nous avons à faire est d'aller à la vue a chargé. Donc nous savons que notre point de vue est là, et quelque part ici, peu importe où nous pouvons simplement appeler le show time. Cela résout complètement le problème. Donc maintenant, si nous frappons le jeu, vous pouvez deviner quel sera le résultat. Devrait-il charger ? C' est comme faire fonctionner le dernier IOS sur un très vieux pied. Et là, nous avons notre affichage de l'heure, sans retard. En dehors de sauter deux secondes dans mon cas. Ok, donc ça résout celui-là. Vraiment simple maintenant les droits de problème d'animation. Qu' est-ce qu'on va faire ? Eh bien, tout d' abord, mettons en place une sorte de fonction off. C' est toujours une bonne étape de départ. Nous allons avoir des animations fond. Je pense que ça fera bien. Maintenant, nous revenons à notre familier que vous vivez, vous n'avez pas d'ennemis et bien sûr, nous donnons à cela un intervalle de temps. On pourrait donner une deuxième semaine à ça. En fait, ça donne un peu moins. Disons 0,3 secondes et retarder zéro. On peut lui donner quelques options. Donc, cela peut être si vous avez juste appuyé sur Entrée. Ça devrait ressentir ça pour toi. Faisons des points parce que nous pourrions avoir de la facilité d'entrée et de sortie si nous le voulons. Tout ce que tu veux. Expérimentez avec tout. Rien ne va mal ici. Appuyez sur l'onglet sur ces deux crochets pour éviter, frapper, entrer et maintenant vous pouvez entrer votre code dans les enfants. Alors quel code on va entrer ? Eh bien, nous allons avoir des fléchettes à point libre. Et rappelez-vous, j'ai dit, nous pouvons mettre Alfa Weaken. Définissez ceci de l'arrière-plan ou nous pourrions le faire hors de la vue. Donc, si je vous montre juste que les points de couleur de fond avec Alfa Component, mais c'est un peu plus compliqué. Ça vous a juste pointé Alfa. Qu' est-ce qu'on va faire ? On va régler ça à 0,5. Alfa va de zéro où vous ne pouvez pas le voir orteil un où il est opaque. Donc 10,5, c'est à mi-chemin. Et en fait, faisons cette durée une seconde pour qu'elle passe au-dessus du trou, cochez une seconde à la fin. Il suffit de double-cliquer sur ce DoubleClick Brule et vous pouvez mettre vrai. Il est donc terminé avec succès à l'achèvement. Nous devons réinitialiser notre Alfa parce que cela ne change pas lui-même. Donc, la vue auto ancrée obtenu Alfa est égale à l'original, qui est 1.0, à droite, donc c'est assez simple. Maintenant, où courons-nous ? Anime l'arrière-plan. Quoi ? Nous voulons exécuter ça quand notre horloge se met à cocher. Allons donc jusqu'à ce qu'on puisse faire ça en show time. Mais. C' est un peu mauvais endroit pour le mettre parce que nous appelons Showtime Now en vue, avons chargé, et nous ne voulons pas l'exécuter là-bas. Nous voulons réellement exécuter cela chaque fois que notre horloge coche, il est donc probablement préférable de l'exécuter dans la minuterie de mise en place. Et maintenant, nous avons un conflit. Cela fonctionne toutes les demi-secondes, ce qui signifie que vous femme, vous animation va courir. Essentiellement, il va courir deux fois sur lui-même pour deux coches sur la minuterie. Donc, nous ferions mieux de changer cette minuterie à 1.0, je pense, pour nous assurer que ces deux animations et la minuterie réellement sur le tour, envoyer un parfaitement sont en synchronisation les unes avec les autres Maintenant. Autodidacte showtime, nous tournons juste en dessous qui se frappe point anime fond fond, sorte que va commencer à changer l'Alfa. Alors quand j'ai frappé Play. Il va configurer la minuterie et anime l'arrière-plan à chaque fois. Et je m'excuse pour ma mauvaise performance sur ce simulateur. Je pense que ce n'est pas mon ordinateur. Je pense que c'est juste cette version de batteur. Ah, IOS 11 ça en cours d'exécution. Alors on y va. On court de haut en bas. Vous pouvez rendre cela plus subtil. Si vous aimez changer les vieux Alphas, vous pouvez déposer l'Alfa à ce que vous voulez vraiment, alors laissons-le tomber. 2.8. Rends-le subtil, non ? Donc, dans la dernière section je sexuelle de la tâche, qui était aussi de changer la couleur Si vous le vouliez maintenant, une couleur est plus utile. Ça n'a rien à voir avec vous, sauf si vous appliquez la couleur. Donc, je pense que nous devrions mettre cela dans les utilitaires et avons une fonction appelée obtient la couleur aléatoire . Et qu'est-ce que ça va revenir ? Eh bien, c'est une bonne question. Comment pouvons-nous savoir ce qu'il faut retourner si nous sommes un nouveau développeur ? Eh bien, allons à notre premier contrôleur de vue et passons, par exemple, n' importe où. Essayons le point de vue auto-doctored, couleur de fond et le look, il dit que la couleur des yeux. C' est comme ça que nous savons ce que nous voulons revenir. Donc, vous pouvez aller à nouveau aux services publics et nous pouvons retourner au i co. Et vous pouvez dire : Pourquoi ça ne se montre pas ? Parce que les utilitaires, il dit que l'utilisation du type non déclaré ne sait pas ce que c'est. Stupide, Swift C' est parce que nous avons besoin d'importer la classe des kits d'interface utilisateur. Et une fois qu'on aura fait ça, il saura ce que je couvre. On y arrive maintenant, on doit avoir une couleur aléatoire. Alors essayons. Colorions Coors Light. Je pourrais faire avec une bière en ce moment. C' est plutôt chaud. Où je suis est égal à toi. Je ne colore pas maintenant. Et si on allait bien, on a des couleurs fixes. C' est bon. Préparez-vous. Prends quelque chose. On peut en obtenir certains dans son dossier. Il est appelé quand nous appelons la couleur pour la première fois. On a plein de choses, non ? Donc ce qu'on va faire, au lieu d'avoir les couleurs par défaut, on va supprimer ce point, et on va créer nos propres couleurs. Si vous ouvrez les crochets, il vous donne les options que nous venons de voir a toutes les minutes. Nous avons donc beaucoup d'options. Teinte, luminosité de saturation Alfa. Et si tu es mec du graphisme, tu sauras ce que ça veut dire. Il juste des façons de définir les couleurs et les alphas et ce qui n'est pas pour que nous puissions essayer une partie de cela. Nous définissons Rouge, Vert, Bleu et Alfa. Je pense que ça semble assez raisonnable maintenant. J' oublie toujours combien il veut. Est-ce que ce rouge se situe entre zéro et un ? Ou se situe-t-il entre zéro et deux ? 55 ? Je dis 255 parce que c'est l'une des façons habituelles de définir la quantité de rouge, vert ou de bleu. Eh bien, découvrons. Essayons. Essayons 0,5 0,5, Retirer les graisses et nous allons avoir notre bleu à un moment sérieux. Ce sera plus bleu et, bien sûr, Alfa. Nous voulons que ce soit complètement Alfa, et maintenant nous pouvons retourner cette couleur donc nous ne l'avons pas encore fait au hasard, mais nous faisons juste une expérience ici. Allons à notre premier contrôleur de vue. Allons animer les arrière-plans et sentons la couleur de fond. La couleur de fond des points de vue auto est égale à nos tills vous ne obtenez pas de couleur aléatoire. Je sais que ce n'est pas au hasard. Donc, il devrait afficher soufflé la première fois qu'il coche. Je vais diriger ça. Et si c'est le cas, on sait qu'on a un gagnant. Et tout ce qu'on a à faire, c'est d'obtenir des nombres aléatoires. Prenez des billions. Donc, il est entre zéro et un, et vous pouvez voir cette animation très subtile là-bas, à part le peeling en haut, qui n'en fait pas partie. Alors arrêtons ça. Retournez à nos services publics. On sait que ça devrait se situer entre zéro et un, non ? Donc maintenant, avant cela, nous devons contourner un nombre entre zéro et un pour nous donner une couleur aléatoire, dit sa création d'une fonction obtient marque entre zéro un. C' est une chose assez longue que, mais hey ho, c'est ce qu'il est maintenant quoi ? Que voulons-nous revenir ? Eh bien, si nous regardons ça, vous couleur blanche et encore, si nous commençons à taper la couleur blanche, ouvrez un crochet. Il nous dira qu'il a besoin d'un flotteur C G, qui est essentiellement un flotteur, mais quelque chose est venu avec ça. Va-t'en. Donc, nous allons revenir d'ici un flotteur de CD, donc c'est comme un flotteur, mais il a quelques implications graphiques fondamentales qui sont liées à toutes les animations et tout ce qui se passe sur notre écran. Maintenant, obtenons notre Arche quatre au hasard. C' est un nom si aléatoire. Je ne comprends pas de toute façon. Donnons à ceci une limite supérieure. Maintenant, nous allons diviser ce nombre par le nombre pertinent, pour que nous puissions obtenir un flotteur entre zéro et un. Et le problème avec le hasard artistique est qu'il renvoie un entier, un nombre entier, et nous ne pouvons évidemment pas l'utiliser. Donc, nous allons penser était soigneusement. Retournons un nombre compris entre zéro et 100. Ensuite, divisons la réponse par 100 afin que vous obteniez zéro orteil gagné à la fin. Ok, maintenant qu'en soi nous donnera probablement un double. Donc, si je me débarrasse de ces crochets, si j'essaie de retourner cela, voyons ce que Swift dit une fois qu'il est traité, ce que j'ai fait ici ne peut pas convertir l'expression de type vous en 32 pour retourner le type CD float. Remplacez le gant sanglant artistique, aléatoire avec un flotteur CD sur ce parfait. Donc, ce que Swift fait est de convertir cette réponse en un flotteur de CD. Espérons que ça aura l'effet dont nous avons besoin. Maintenant, tout ce que nous avons à faire est de venir pour obtenir une couleur aléatoire et utiliser cette fonction. Se faire courir entre zéro et un, et tout ce que nous avons à faire est de copier cela dans les sections ensemble. Alors remplacons ces points, quoi que ce soit et jouons, puis sauvegardons ça et c'est son et j'espère que maintenant nous allons obtenir des nombres aléatoires. Maintenant, ce truc aléatoire est Il est non est aléatoire, Comme son nom l'indique. Coeur mauvaise blague. C' est quelque chose que vous allez utiliser assez souvent dans votre carrière de programmation. Des nombres aléatoires. Ha. Nous avons donc une ère. Nous avons juste un écran noir, et ce n'est pas bon pour nous. Donc, nous avons un peu de débogage à faire ici. Pourquoi on a un écran noir ? Eh bien, faisons le tour entre zéro et un. Créons un nombre let rand égal à cela. Imprimantons cela sur notre console pour que nous puissions voir en tant que développeurs ce qui se passe, et ensuite c'est le retour comme nous l'avions avant. Alors maintenant, quand on frappe le jeu, on peut voir quel nombre est généré. Nous comprenons donc quelle gamme est produite, et nous pouvons voir où nous nous sommes trompés. Ou plutôt, je me suis trompé. Soyons honnêtes à ce sujet. C' est mon problème. On a juste tout un tas de zéros. Ce n'est pas bon. Arrêtons ça bien. Donc nous avons cet art au hasard et ce que je pense que nous devons faire, c'est que nous pourrions avoir à lancer ce résultat à un double, donc ouvrir et fermer les crochets, nous pouvons toujours essayer. n'y a pas de mal à essayer parfois, mais il n'y a pas de programmation mais tête et avons 100.0 pour nous assurer que c'est un double. Maintenant, frappons le jeu. On y va. Donc, vous voyez, c'était un problème en fait. Ça ne me dérange pas l'épluchage de mon écran là c'était en fait un problème hors. Et si nous arrêtons que nous pouvons voir que c'était un problème de convertir cela en un double parce qu' avant nous divisions un entier par un jet inter et cela nous donnait des résultats étranges. Rappelez-vous, nous avons fait cela il y a un certain temps dans ce cours de ces cours, cependant, vous voyez cela et nous avons découvert que la division des images peut en fait nous donner des résultats très inattendus. Donc c'est l'endroit numéro un où vous devez regarder si vos mathématiques vont mal. Droits qui est notre retour à l'acte futur complet. Ce n'est pas le meilleur à regarder dans le monde, mais c'est fonctionnel, si bien fait pour terminer cela. Et il n'y a qu'une autre conférence, et c'est le résumé de tout ce que vous avez appris. 59. Résumé de Back to the Future App: Oui, les gars. Module d'eau Bien fait pour le compléter. C' était plutôt difficile. Et c'est assez long, donc tu mérites une belle pause au soleil. Maintenant, si vous avez un peu de soleil où vous êtes, vous avez tellement appris cette fois-ci. Donc, nous allons juste avoir un très petit résumé que vous avez appris sur les barres d' onglets, Tab nos contrôleurs comment mettre des icônes dans ces buzz d'onglet et généralement comment ce système fonctionne dans les storyboards. Vous avez également appris à construire des mises en page avec un positionnement relatif par rapport à d'autres éléments à l' écran. Et vous avez aussi appris quelques bonnes pratiques. J' hésite à dire mieux parce que peut-être mes manières ne sont pas les meilleures, mais elles ont certainement bien fonctionné pour moi et m'ont bien servi au fil des ans. Donc, vous avez appris quelques pratiques, quelques pratiques de subvention pour que vous puissiez réellement y parvenir. Quoi d'autre ? Nous avons appris que vous avez appris à créer une classe d'utilitaires, obtenir des chaînes aléatoires, obtenir des lettres des chaînes. Vous avez appris vos premières erreurs en obtenant ces lettres. En termes de l'obtenir à partir d'un certain endroit, vous apprenez à mettre en place des minuteurs qui exécutent effectivement un synchrone, donc ils s'exécutent après un certain code après le I. Désolé. Je ligote mes mots ici. Tais-toi, terre. Trier. D' accord. minuteurs sont asynchrones, donc ils s'exécuteront en arrière-plan et ils ne bloqueront pas votre principal. Je t'habille. On y va. C' est ce que je voulais dire. J' enseigne depuis trop longtemps. Reste. Je pense vraiment que j'ai besoin d'une pause. Qu' avez-vous appris d'autre ? Enfin, Enfin, vous avez appris à animer des éléments à l'écran. Vous avez appris les bases mêmes de vous. Je t'ai fait animer. Cela va venir très, très pratique lorsque vous créez APS tant que vous n'en faites pas trop. Bien sûr. Droit. reste plus qu'à te donner ta récompense contre les feux d'artifice. 60. Introduction aux Gods grecques: bienvenue dans un nouveau module. Nous allons en apprendre un peu plus sur l'écosystème IOS de base en créant une application appelée dieux grecs . Et ce que nous allons apprendre, c'est d'abord, les vues de table, les listes de défilement infinies que vous voyez si souvent sur les appareils mobiles. Maintenant, tout ce que je vous enseigne dans cette section est en fait applicable à Android Windows Phone et beaucoup de systèmes d'exploitation de bureau ces jours-ci, donc il vous tiendra en bonne place pour l'avenir. Ensuite, je vais vous apprendre tout sur les cellules, lesquelles de la rose dans ces listes et comment les listes les recyclent réellement pour économiser de la mémoire et puissance de traitement. Nous allons voir comment insérer des données dans ces cellules. C' est la date que vous souhaitez afficher à votre utilisateur. Nous allons voir comment naviguer d'une cellule à un nouvel écran, autrement connu sous le nom de contrôleur de vue et comment transmettre des données entre les deux. C' est un sujet très important. Enfin, va regarder une image vues et charger dynamiquement des données. Et voici une petite démo de l'application très simple que vous êtes sur le point de faire 61. M9 2 Qu'est-ce une liste de défilement ? Expliqué avec Lego !: avant d'aller n'importe où. Je dois juste dire que ce sujet est très important pour tout type de développement d'application où il y a Android, IOS, Windows Phone, Windows Phone, peu importe ce qu'il est maintenant dans l'Iowa, ce sujet est appelé une vue de table, et une vue de table est simplement une liste de défilement des éléments que vous pouvez couper en différentes sections changer les tailles de corde et quoi que ce soit. Mais à sa partie fondamentale, c'est fondamentalement juste une liste de choses que vous pouvez faire défiler ce qui semble être jusqu'à l'infini. Si vous avez juste eu des dates massives que vous continuez à défiler pour toujours. Et si vous avez un appareil IOS oeil sur l'appareil Android, alors vous saurez que vous avez vu ces partout. Si vous ouvrez vos paramètres vers le haut, vous faites défiler vers le haut et vers le bas pour obtenir chaque fois que vous avez besoin de paramètres, c'est-à-dire une vue de tableau ou une vue de liste. Cette vue est ce que les vues de table des utilisateurs Android étaient des utilisateurs IOS, mais ils sont fondamentalement la même chose, malgré les cadres complètement différents, est-ce pas ? Donc il y a un moment en fait moqué d'une photo de Lego, je ne sais pas à quoi je pensais, mais depuis que j'ai bousillé cette photo de Lego avait beaucoup de hits sur YouTube, disant que c'est une façon fantastique de l'expliquer. Donc je vais recycler cette photo ici et vous montrer ce qui se passe dans une vue de table. Et je fais cela avant que nous commencions à programmer afin que vous ne soyez pas confus si à un moment donné vous êtes confus avec ce que j'écris, puis revenez à cette conférence et regardé à nouveau et tout commencera à se geler en place. Right Cue scène une et la seule vue. En fait, il s' agit d'une vue de liste ou d'une vue de table sur le côté gauche. C' est votre appareil mobile moqué dans Lego. Je pense que c'est mieux que n'importe quel iPhone qui a jamais été fait sur l'écran de notre appareil. Nous avons une liste d'articles. Ce sont ces briques bleues où les briques rondes sont au-dessus d'eux. Maintenant, lorsque nous faisons défiler notre liste, nous avons besoin d'un moyen d'insérer de nouveaux éléments dans cette liste, et ces nouveaux éléments sont appelés cellules. La chose qui s'occupe de cela s'appelle un adaptateur. Un adaptateur orchestre tout pour qu'il saisisse de nouvelles cellules ou utilise des cellules ou quoi que ce soit pour nous, en les insérant dans notre liste pour que nous puissions faire défiler presque sans fin maintenant, où s'adapte-t-il aux données ? Eh bien, vous avez une liste de données que vous lui donnez, et cela peut être n'importe quoi. Comme avec la plupart des choses dans la programmation, il pourrait être n'importe quel type de chose hors de chose. Qu' est-ce que l'adaptation à faire avec cette liste de données quand il a deux Options Festival ? Il peut créer une nouvelle cellule et insérer les données dans cette cellule afin qu'il puisse vous donner des images, du texte et quelque chose qui se produit lorsque vous cliquez sur cette cellule. Maintenant, si nos données devaient créer une nouvelle cellule à chaque fois que nous faisons défiler vers le haut ou vers le bas et ensuite insérer cette cellule dans la vue de liste, cela utiliserait beaucoup de puissance de traitement parce que ce n'est pas bon marché à faire. Et bien sûr, les appareils mobiles sont assez limités et la puissance de traitement, donc ce n'est pas une bonne stratégie. Donc, ce que fait l'adapté, c'est plutôt que vous faites défiler la liste, il prend les cellules qui ont disparu de l'écran, et il les recycle, donc il a déjà une cellule. Tout ce qu'il a à faire est de mettre dans les données que cette cellule a maintenant besoin, ou qu'elle a changé, aussi. C' est donc les principes fondamentaux d'une vue moins importante ou d'une vue de table, comme on l'appelle dans IOS. Maintenant, juste un point, quelque chose que vous allez trouver sur l'estran parce que chaque développement passe par ce droit. Le concept de cellules recyclées peut causer beaucoup de problèmes avec votre logique de programmation. Mais ça n'arrive pas si tu sais ce qui se passe. Si vous savez qu'il y a une cellule recyclée qui est insérée dans notre liste, alors c'est comme ça que ça marche. Si vous savez qu'il y a une cellule recyclée qui est insérée dans notre liste, On y va depuis le début. Nous avons notre appareil mobile. Nous avons notre vue sur la table. Nous avons un adaptateur qui alimente les cellules dans cette vue de tableau. Il remplit ces cellules avant de les alimenter avec des données provenant d'une liste que nous fournissons. Il crée de nouvelles cellules s'il n'y a pas de cellules disponibles ou ses cellules de recyclage qui ont défilé hors de l'écran. Donc, l'adaptateur et tout cela est à peu près le conducteur. C' est l'orchestrateur de tout ce qui se passe bien. Nous sommes maintenant prêts à aller de l'avant avec la création de certaines de nos propres vues de table 62. M9 3 Créer des storyboards de diges grecques et des vues de table de table: nous sommes prêts à commencer à créer la partie graphique de notre. Si vous vous souvenez, c'est ce que j'aime faire. Habituellement, le premier dans la plupart de mon application dit créer l'interface utilisateur graphique. Alors ouvrons le code X et partons maintenant. Vous devriez être familier avec ça maintenant. allons déposer un nouveau projet, et naturellement, nous allons créer une application de vue unique. Cette fois, nous avons fait des onglets APS la dernière fois ou il y a quelques fois. Nous allons frapper ensuite et appelons ça Grec God Ok, donc juste parler de cet écran pendant une seconde, parce que j'ai un peu regardé dessus auparavant. Vous pouvez nommer votre produit comme vous le souhaitez avec tous les espaces et bouchons que vous préférez ici dans votre paquet, identifier l'air. Vous ne pouvez pas avoir d'espaces, donc le code X insère un tiret en votre nom. C' est tout à fait bien. Ok, vous pouvez mettre le nom de votre organisation, donc je vais juste mettre ça comme quelque chose de faux que vous pouvez micro et ensuite vous mettez votre identité et je suis Dance of fire est normalement votre nom de site web, mais à l'envers et ce com dot GK microdot dieux grecs est ce que le magasin APP va utiliser comme votre APS unique identifier. C' est donc un format commun que vous voudrez utiliser à travers vos raps. OK, cliquez sur suivant. A moins, bien sûr, de garder ça partout où nous le voulons. Ok, c'est tout. Ils sont en train de le faire. Je regarde juste ce premier écran parce que j'aime vous donner un peu d' informations ici et là. Voyons ce que je peux te donner, juste un petit peu. Cette section où il est dit application, icônes et images de lancement. Vous pouvez spécifier une icône APP ici, et c'est à Icône est stocké dans vos actifs. Démarrez les actifs XY sous, bien sûr, l'icône de l'application. n'y a rien là pour le moment est juste un vide, mais c'est juste un petit petit petit tidbit supplémentaire pour vous de savoir que vos icônes APP sont stockées là et s'asseoir là. Ok, alors revenons au point principal. Regardons nos storyboards et nos vues de table, alors passons à notre storyboard principal. Et avant de commencer à glisser et à déposer des choses, il y a en fait deux façons d'insérer nos vues de table à l'intérieur de la couche X. En général, c'est-à-dire, et si vous venez à votre inspecteur d'objets en bas à droite, et vous tapez simplement table. Vous remarquerez que nous avons un contrôleur de vue de table et une vue de table. Ne vous inquiétez pas des cellules de la vue tableau ou de ce qui se trouve à l'intérieur des vues de table elles-mêmes. Donc, ce sont juste ces deux-là qui étaient intéressés. Maintenant, le contrôleur de vue de table prend une liste de défilement ou une vue de table, incorpore dans un contrôleur, puis fait un peu cet enfant d'amour entre un contrôleur de vue et une vue de table, puis présente cela comme une seule classe pour vous d'utiliser quand tu fais le tour. Maintenant, l'avancée de cela est qu'il est plus facile de faire un et deux. Ça vous oblige à vous concentrer. Vous utiliserez l'attention sur la seule liste des éléments, certaines cartes que vous verrez. Ils vont insérer quelque chose ici, peut-être quelques boutons ici, et ensuite ils vont tomber dans une vue de table en bas. Maintenant, ce n'est pas très bon design. Il y a des moments où vous pouvez le faire, mais vous partagez votre attention. C' est pourquoi Apple nous a donné un contrôleur de vue de table. Je pense que c'est en partie pour s'assurer que nous concentrons notre attention sur ce seul élément. Il y a deux façons de le faire dans les deux sens. Utilisé les mêmes fonctions, les mêmes idées, la même méthodologie pour implémenter la vue de table elle-même. Donc nous n'avons pas à nous soucier des différences entre eux. En termes de cela, Wigan utilise un contrôleur de vue de table simple. Donc, nous allons cliquer et faire glisser ça. On va le déposer quelque part dans notre écran, les montants qu'on peut voir. Nous pouvons cliquer et les faire glisser. Nous pouvons maintenant voir qu'il y a deux contrôleurs d'entre vous. Nous avons notre contrôle de vue ici et ce contrôleur de vue de table. Ceux-ci ne sont pas liés. Ils ne se connaissent pas l'un de l'autre sauf si nous le spécifions dans le code. Maintenant, notre APP va s'ouvrir directement à ce contrôleur de vue de table. Retirons donc ce contrôleur sur la gauche parce que nous n'en avons pas besoin. Il suffit de le sélectionner, appuyez à nouveau sur le backspace. Vous devrez peut-être effectuer un zoom avant pour le supprimer. C' est très ennuyeux. J' aimerais pouvoir enlever des trucs comme ça. Vous devrez peut-être aller jusqu'à 100% pour l'enlever. On y va. Donc maintenant, nous avons juste le contrôleur unique ici. Pourquoi est-ce un problème ? Eh bien, parce que notre APP ne sait pas par où commencer à montrer des choses. Donc, nous devons sélectionner ce contrôleur de vue en utilisant le jaune orange, l'emblématique qui est haut et puis plus dans la section des propriétés, nous allons, Teoh, en fait, cliquer sur la section des attributs et nous allons cliquer. Cette petite icône appelée ici est Initial View Controller et vous remarquerez qu'une petite flèche apparaît sur le côté ici. Et ça nous dit que c'est le 1er 1 qui sera chargé. Donc nous avons remplacé le précédent, et nous avons dit que c'était le nouveau. Maintenant, si vous gardez ceci sélectionné et que vous allez à cette classe, inspecteur au-dessus du haut, droit pour l' inspecteur d'identité plutôt, nous avons cette petite boîte de classe qui dit que nous avons besoin de quelque chose de type vous I vue de table pour assigner à cette vue que nous venons de laisser tomber. Maintenant, nous n'avons rien de tout ça. Ce que nous avons est ce contrôleur de vue point swift, qui est maintenant absolument inutile pour nous parce que nous avons supprimé le contrôle de celui-ci, va avec lui afin que nous puissions faire un clic droit et nous pouvons le supprimer. Et vous pouvez supprimer la référence afin qu'elle reste dans votre projet ou vous pouvez déplacer le fichier vers la corbeille qui s'en débarrasse complètement. Supprime toutes les références, non ? Donc maintenant ce que nous devons faire est de créer le fichier qui correspond à ses tables ici. Donc c'est juste. Cliquez sur. Notre petit dossier Project va un nouveau fichier. Maintenant, c'est nouveau. Avant, quand nous avons créé un nouveau fichier, nous cliquons sur le fichier de script, mais maintenant nous voulons une classe de cacao touch, et c'est juste pommes wave nommant les choses avec lesquelles nous allons interagir sur notre écran. Et si vous double-cliquez dessus, cela vous permet de créer un fichier une classe, et puis il sera-t-il aussi sous-classe est-il ? Donc, il hérite de quelque chose que nous spécifions ici et parce que nous savons que notre table est un contrôleur de vue de table vous I . Et nous le savons parce que quand nous avons plané dessus, il nous a dit que c'était ce qu'il attendait de sa classe. Lorsque nous créons ce contrôleur de vue, nous devons sous-classer ce type. Ok, donc c'est peut-être encore un peu déroutant pour toi, et c'était déroutant pour moi quand j'ai commencé à programmer l'âne il y a des années, alors ne t'inquiète pas trop pour l'instant. Mais sachez que vous devez faire correspondre les types à ceux que vous créez dans storyboards, est-ce pas ? Alors comment on va appeler ça ? Eh bien, nous pourrions juste nous laisser comme contrôleur de vue de table. Voyons voir. Mais ce n'est pas une bonne idée, car si nous introduisons un autre contrôleur de vue de table commencera à se confondre. Donc, mettons simplement cela comme le contrôleur de vue de table de Dieu frapper ensuite et simplement créé dans votre projet. Maintenant, revenant à ce que je disais, cette classe hérite de vous I contrôleur de vue de table et vous remarquerez qu'elle l'a vu charger comme n'importe quel autre contrôle de vue sur ses avertissements de mémoire. Mais il a aussi tout un tas d'autres choses qui sont à faire sans table. Donc nous allons revenir à cela en temps voulu, mais pour l'instant, bon pour le port principal de l'histoire et assurez-vous que nous sélectionnons notre seul contrôleur de vue de table sur les droits. Définissez-le comme contrôleur de vue de table de Dieu, donc le code X nous limite à ce que nous pouvons définir. Il ne nous permet pas d'utiliser d'autres choses comme AP Delegate tous les baux. Donc maintenant ce storyboard est lié à ce fichier que nous venons de créer. Maintenant, il ne nous reste plus qu'une chose à faire. C' est le test dans notre iPhone SC ou iPad Simulator. Allons frapper jouer. Et le premier test que nous exécutons ici est de nous assurer que cela se construit. n'y avait pas d'erreurs, pas d'erreurs de référence et de choses comme ça. Le deuxième test que nous exécutons est de nous assurer qu'il ne se bloque pas quand il commence à fonctionner sur notre droite simulée. On y va. Il est en train de se charger et nous saurons qu'il est vraiment chargé quand nous pouvons voir quelques lignes sur notre écran. Là, nous l'avons et vous pouvez cliquer et faire glisser ceux et toutes ces lignes sont de notations sur les cellules individuelles de notre liste. Maintenant, le moment il n'y a pas de cellules. On ne les remplit pas de quoi que ce soit. On l'a dit. n'y a pas de données à montrer, mais nous nous assurons juste que notre vue de liste fonctionne réellement, ce qui est très bien pour que nous puissions arrêter cette exécution. Et juste avant que je parte, il va réaffirmer ce qu'on a fait ici. Nous avons créé un contrôleur de vue de table dans notre storyboard. Nous avons supprimé les trucs précédents qui étaient là. Nous définissons ceci comme le point d'entrée, ce que nous pouvons dire en ayant ces petites flèches et cela a été fait. Et l'inspecteur, j'oublie toujours où c'est le contrôleur de vue initial. Et puis, bien sûr, nous avons créé une classe pour ce contrôleur de vue de table et nous l'avons affecté dans cette fermeture personnalisée. Donc tout est lié et nous sommes prêts à partir. 63. Réceptions de cellules grecs, les données de masse et les données de données de la de M9: nous avons configuré notre vue de table très basique dans notre application. Maintenant, ce que nous devons examiner maintenant, c'est ce concept de ce qu'on appelle une nouvelle utilisation identifier, et c'est simplement une façon d'identifier l'une des cellules qui a défilé hors de notre écran. Donc, si nous revenons à notre image Lego, un identificateur de réutilisation permet à notre application de découvrir quelles cellules ne sont plus à l'écran par un identifiant unique, puis de les alimenter à l'adaptateur, qui les ré-cycles avec de nouvelles données. Nous allons également examiner la mise en évidence de ces cellules, donc vous savez, lorsque vous cliquez sur l'un des éléments d'une liste dans l'Iowa's, il met en évidence et ensuite non hygiénique elle-même. On va voir comment faire ça parce que ce n'est pas fait par défaut. Je ne sais pas pourquoi, mais je pense que ça devrait l'être. Et enfin, nous allons regarder comment plonger dans une liste de données, ou plutôt pas une liste de données pour le moment, qui va prune dans quelques données très simples dans notre adaptateur, qui va ensuite les alimenter dans notre vue liste fera une liste un peu plus tard. Pour l'instant, je veux juste que vous obteniez l'idée très basique de ce qui se passe avec tous ces trucs de vue de liste parce que c'est très, très important à saisir tôt. Alors ouvrons le projet et commençons. Nous allons commencer sur notre storyboard sans tables année maintenant, vous remarquerez que nous avons cette couleur grise légèrement grisée qui dit vue de table, et cela en soi ne fait rien. Mais si vous cliquez dessus en haut à droite, il vous indique qu'il s'agit d'une classe de vue de table. On ne va pas y toucher. Et il est assez rare que vous touchiez réellement les propriétés de la vue de table elle-même. Vous allez généralement travailler avec les cellules, et si vous regardez en haut ici, ce petit espace blanc, si vous cliquez dessus, il vous montre à la fois à gauche et en haut, écrit que c'est une table à l'intérieur de cette cellule. Vous avez aussi un contenu de vous, et évidemment c'est là que va votre contenu, est-ce pas ? Donc, nous allons cliquer sur notre cellule de vue de tableau, assurez-vous qu'elle est sélectionnée, donc nous avons la bonne classe sélectionnée ici, puis passons à ces petits attributs, inspecteur, inspecteur, et la deuxième option en bas de la vôtre peut-être dans un endroit différent est étiqueté Identifier une nouvelle utilisation Identifier. Maintenant, ce n'est qu'une chaîne. Donc, notre système sait ce qui vend peut être récupéré et recyclé dans notre système. Parce que si vous y pensez, vous devrez peut-être mettre en table des vues, et les ventes peuvent être appelées peuvent avoir des propriétés différentes. Donc, vous voulez être sûr que vous tirez vers le haut la cellule correcte pour la réutiliser. Alors donnons à cela une vue de table. Vendre. Donc, c'est une belle, simple identification. Maintenant, quand vous venez à APS plus complexe, vous pouvez appeler cette cellule de vue de table des dieux grecs. Et en fait, je pense que c'est mieux à faire. Je ne vous apprends pas les mauvaises habitudes. Les dieux grecs vue de la table afin qu'ils obtiendraient. En ce moment, nous avons notre identité triée. Maintenant, notre vue de table est presque prêt à aller, ou nous devons le faire. Allons voir notre contrôleur de vue de table des dieux, et nous devons commencer une NCAA à faire des trucs. Donc, faisons défiler vers le bas et vous remarquerez que le code X met dans cette marque pour nous la source de données de vue de table Donc c'est là que notre source de données ou la chose qui est organisateur orchestrera. Tout commence. C' est un festival. Nous avons maintenant un certain nombre de sections. Je ne sais pas si vous l'avez vu avant, mais dans beaucoup de liste de défilement, vous pouvez avoir une section de trucs pour que vous puissiez avoir une section du sida. BC ou dans vos paramètres. Vous avez une section de, vous savez, votre femme. J' ai farci tes trucs de radio. Vous avez une section pour le général, etcetera, etcetera. Nous allons juste prendre un cas très simple où nous allons retourner une section simple pour l' instant. Nous allons modifier cela plus tard, mais pour l'instant, juste une section, alors la suivante que nous rencontrons est le nombre de lignes dans la section. Donc, cela nous dit combien de cellules ou de rose il y a. Et on peut juste mettre n'importe quel numéro qu'on aime. Pour l'instant. Mettons 10. On va en avoir 10. En fait, c'est mis en 100. Pourquoi, non. Et puis si nous faisons défiler vers le bas, nous avons cette cellule de fonction pour la ligne à, et ceci est actuellement commenté par cette barre oblique Ford ou supprimé qui suppriment celui en dessous. Sinon, vous aurez une ère et nous allons configurer la cellule. C' est donc la fonction qui se nourrit dans la cellule soit une nouvelle, soit un recyclé réutilisable . Donc festival nous essayons de créer une cellule, et nous le faisons en demandant à notre vue de table deux de que une cellule réutilisable I e. Une des cellules qui est parti hors de l'écran et nous devons lui donner une identification. Maintenant, si vous vous souvenez, c'est super Gardes, vue sur la table. Maintenant, vous devez obtenir ça juste et exactement la même chose que ce que nous avons spécifié dans notre storyboard. Sinon, vous êtes à va planter mais vous découvrirez bientôt que quand nous allons bien, maintenant nous avons nous-mêmes maintenant dans IOS il y a des cellules par défaut que nous pouvons réellement utiliser, et le très basique hors eux a juste un peu de texte attaché à elle. Donc, il a une étiquette de texte par défaut. Vous n'avez pas besoin d'aller créer votre propre cellule personnalisée lorsque vous commencez. Vous pouvez simplement appeler cette cellule avec juste Deke. Vous l'avez fait, et nous pouvons définir l'étiquette de texte de celui-ci maintenant avis. L' étiquette de texte comporte un point d'interrogation. Ça veut dire que c'est facultatif. Cela signifie qu'il pourrait ne pas exister parce que, bien sûr, vous pourriez avoir une cellule personnalisée. Mais nous savons qu'il existe parce que c'est comme ça que nous l'avons dit. Ou c'est ce que l'expert nous donne par défaut afin que nous puissions mettre une exclamation pour le déballer. Ensuite, nous pouvons simplement définir le texte égal à quoi ? Si tu aimes Grant, disons ça. Et puis faisons ça sur notre simulateur. Ce devrait être tout ce dont nous avons besoin pour l'instant. Et nous l'avons là. Nous avons notre liste de motifs, mais si vous cliquez dessus, vous remarquerez que tout reste grave et vous voulez régler ça. Alors réglons ça maintenant. Mais pour l'instant, félicitations. Tu as ta première liste. Revenons à l'ex code. Arrêtez de courir maintenant. Comment on peut annuler ça ? Eh bien, continuons à faire défiler ce petit truc de sélection. Comment on s'en débarrasse ? On a des trucs sur le montage. On ne va pas faire ça dans cette section. On a des trucs sur le déménagement, réorganisation. Nous avons des trucs sur la navigation donc nous n'avons pas la fonction dont nous avons besoin. Pour obtenir cette fonction, nous pouvons taper override, évidemment une fonction, et nous pouvons commencer à taper le nom de la fonction. Maintenant, la fonction qui devient froide chaque fois que nous sélectionnons quelque chose est comme vous vous attendiez à ce qu'il soit nommé. Essayons donc de sélectionner Rose et de regarder toutes les options que nous avons. Nous avons choisi la route. Nous en avons deux, en fait, et je ne sais pas pourquoi ils ressemblent à moi ici. Je pense que c'est juste avoir un moment. Peu importe. Nous avons choisi la corde que nous avons Ah, qu'est-ce qu'on a ? Tout se déplace ici. Une chose étrange que Will de Select a écrit. Donc nous avons quelques choses que nous pouvons choisir Nous allons choisir la ligne très simple a sélectionné à droite Donc ça va être appelé une fois que vous aurez cliqué avec Rove et tout ce que nous allons faire ici, c'est que nous allons sélectionner les routes afin que gris le bar s'en va. Donc, ce que nous faisons est que nous disons point de vue de table et vous l'avez deviné. Nous allons sélectionner la corde à la trajectoire de l'index. Maintenant, un chemin d'index est simplement l'emplacement de la cellule, et il inclut des informations comme la section dans laquelle il se trouve et la route dans laquelle il est hors de cette section afin que nous puissions passer dans le processus d'index qui est donné à cette fonction afin qu'il sache où regarder, et nous pouvons l'animer hors cours. Donc maintenant, si nous lançons que chaque fois que nous cliquons, les cellules qui tombent sont apparaîtront et disparaîtront rapidement avec une belle animation et celle que vous devriez être très familier avec sur IOS aujourd'hui, nous l'avons. C' est ainsi que nous sélectionnons la Rose. C' est très bien. Maintenant, nous n'avons que des données factices. Ce que nous allons faire est en fait créer la classe de données de base à insérer dans nos actes. Évidemment, je n'aurai pas la même chose à chaque fois. Nous avons donc besoin d'une liste de dieux grecs. Créons un nouveau fichier pour ce faire. C' est un clic droit sur notre nouveau fichier de projet et passons ensuite pour un fichier de script. Et appelons ce dieu grec. Donc, c'est la classe de base qui va définir toutes les propriétés qu'un dieu grec a des choses comme leur nom, leur hauteur à leur superpuissance, et peut-être une idée interne d'une sorte. C' est assez simple pour créer une classe appelée Greek God et on va donner nom à ce type ou à cette fille qui va être une corde. On va leur donner une hauteur, ce qui va être un double. Donc, un nombre avec un point décimal, nous allons leur donner une superpuissance, qui est juste une chaîne. Et enfin, on n'utilisera pas ça, mais c'est quelque chose que je veux que tu t'y habitues. Un concept appelé Internal I D. Donc, ce I d interne pourrait effectivement correspondre à un numéro I. D. D.que vous avez dans votre base de données, que ce soit sur Internet ou en Europe elle-même. Et c'est quelque chose que l'utilisateur ne verra jamais, mais cela le permet. Il vous donne un identifiant unique afin que vous puissiez obtenir des données pour vos gardes, et vous pouvez faire correspondre différents bits de vos données de Dieu grec. Donc on ne va pas l'utiliser. Mais je le mets ici pour t'installer de bonnes habitudes, non ? Nous avons une plainte. Dieu grec n'a pas initialiser est et il nous donne tout un tas de correctifs. On n'en fait aucun. C' est dire que vous avez créé ces trucs que vous ne les avez pas rendus optionnels, ce qui signifie qu'ils devraient exister. Alors comment tu vas résoudre ça, mec ? Eh bien, la façon dont nous le résolvons c'est nous dedans ? Cette classe, rappelez-vous, elle est appelée quand nous créons un objet à partir d'une classe, et dans ce, nous allons passer un nom et c'est un trait de soulignement avant là. Donc je peux faire la distinction entre les deux éléments que nous allons passer en hauteur, ce qui, bien sûr, est le double que nous allons passer dans le super pouvoir, qui est une corde et enfin un I D interne, qui est une interject. Ok, Brillant. Maintenant, nous pouvons juste définir ces valeurs égales aux éléments que nous avons transmis et vous remarquerez que Swift nous donne quelques erreurs ici. Cela nous dit, retourné de l'Isar initial sans initialiser toutes les propriétés stockées. Cela signifie que vous ne pouvez pas les avoir à moins que vous les rendiez facultatifs ou que vous avez réellement septum quelque part, soit dans l'Isar initial ou par défaut dans la classe. Donc, nous allons avoir le nom est égal à soulignement noms nets ont des hauteurs est égale à la hauteur de soulignement , et vous pouvez voir où je vais avec cette superpuissance est égale à souligner superpuissance un interne je d être prudent parce qu'il y a un mot clé interne dans Swift, vous ne voulez pas l'utiliser pour des combats internes, est-ce pas ? Cette époque devrait maintenant disparaître, et notre classe est en fait bonne à partir. Donc nous avons notre Dieu grec, mais nous n'avons pas de données réelles pour créer un dieu grec avec, donc nous allons créer une autre classe pour faire ça. C' est juste. Cliquez à nouveau sur notre projet. Vous déposez un fichier rapide des données des dieux grecs. Maintenant, vous pourriez dire : Pourquoi avez-vous divisé les deux choses ? Eh bien, c'est juste une bonne pratique de programmation pour garder les choses séparées. Il est préférable d'avoir plus de fichiers que moins de fichiers tant que c'est une chose ou je ne sais pas quel est le mot exact un peu un jour. Il fait vraiment chaud ici. Chaque fichier doit réellement contenir la fonctionnalité spécifique que son nom suggère. Oui, je pense que c'est une bonne description. Donc, si vous avez une grande classe de Dieu à l'intérieur de grandes données de Dieu, ils ne correspondent pas vraiment. Ils ont une relation, mais ils ne correspondent pas vraiment au nom du fichier. C' est pourquoi nous séparons les choses afin que plus tard, cela vous facilitera la vie. Créons notre classe à partir des données de Dieu grec, et tout ce que cette classe va faire est de retourner une liste des dieux grecs. Maintenant, comment va-t-il faire ça ? Eh bien, nous avons besoin d'une fonction comme un moyen de fonctionner. Oui. Oh, les dieux vont rendre quelque chose. Qu' est-ce que ça va revenir ? Va retourner un tableau. Donc ces deux crochets, mais un tableau de quoi ? Quand il va retourner un tableau des dieux grecs. C' est la classe qu'on vient de créer. Ok, ouvrez et fermez nos accolades. Maintenant, créons le tableau que nous allons ajouter. Dieu aussi Sauvez nos dieux, qui est de type dieux grecs est égal à et la gamme de dieux grecs. Et nous ouvrons et fermons les parenthèses pour initialiser. C' est maintenant que nous avons un tableau de Dieu qui n'a rien à l'intérieur en dessous pour que nous puissions retourner ces chèvres et ces dieux sont retournés comme un tableau. Tous les dieux grecs, c' est ça. Mais pour le moment, nous , bien sûr, n' avons, bien sûr,aucun dieu inséré là-dedans. Alors faisons un peu, disons, laissez Zeus égal à. Et c'est ainsi que nous créons un nouvel objet. Des dieux grecs. Et dès que vous ouvrez le support, il se sent dans l'Isar initial pour vous, c'est assez pratique. Si vous appuyez simplement sur Entrée, il écrit tout pour vous. C' est maintenant que tu peux donner cette aide au jardin. Tu peux l'appeler Zeus. Si vous le souhaitez. Tu peux lui donner nos combats. C' est probablement assez grand, disons deux mètres. Et si vous appuyez sur, Tab ira à Superpuissance. C' était quoi cette super puissance Lightning, je crois et lui donnera un I D éternel qui est ce que nous n'allons pas utiliser. Mais à un moment donné, c' est quelque chose que vous utiliserez. Maintenant, nous pouvons ajouter Zeus à notre rayon de dieux. Le point de Dieu Ajoute Zeus. Ok, c'était assez simple, n'est-ce pas ? Alors créons quelques dieux de plus, et ce que je vais faire, c'est copier. C' est des nouvelles, et je vais coller trois fois. On a quatre gardes au total. Alors, prenons Poséidon. Le Dieu de la mer. Il est en train de remplir ses statistiques dans le hapstall que j'ai été. C' est un était énorme et Poséidon avait l'habitude de porter une fourchette. J' oublie son nom, mais je vais appeler ce pays comme ça. Mais on peut avoir des éclairs enfoncés dans mon Tu sais quoi ? Pour dire que à ce sujet de toute façon, Donc Dieu, Poséidon, maintenant contre elle ajouter décidé Si je peux épeler. Droit ? Qui est le prochain ? Nous allons avoir De Mita et des points bonus si vous pouvez me le dire sans regarder. Quoi ? Le compteur n'était pas descendu. Je crois que c'était quelque chose comme l'agriculture. Certains mettent des pommes et des poires et puis ajoutons De Mita. Et enfin, prenons Nike. Mais vous ne saviez pas que c'était un dieu grec qu'ils étaient Oh plutôt, il était ou elle Waas pense que le compteur était féminin de toute façon, 1,6 mètre où je sais ce qui était stupide sport de puissance ? Évidemment. Oh, et nous devons changer ces idées internes deux et trois parce qu'elles sont uniques. Et enfin, nous allons remonter Nike à notre droite, non ? Tout est dedans qui a l'air bien. Nous sommes prêts à le rendre maintenant, juste avant de continuer. Cette classe est généralement un endroit où vous allez récupérer des données à partir d'Internet ou du coordinateur dans IOS, ce qui est quelque chose que nous allons couvrir plus tard, ou vos propres implémentations de base de données sqlight ou même un fichier texte. Mais la chose importante à savoir est que ce nom vous indique tout ce que vous devez savoir sur ce que fait ce fichier. Pour l'instant, nous retournons simplement ces choses parce que je vous enseigne sur les listes et les vues de table plutôt que sur les choses Internet qui viendront dans d'autres modules. Récupérons maintenant ces données à l'intérieur de notre contrôleur de vue de table. Et l'endroit évident pour le faire est, tout d' abord, créer notre propre tableau de dieux. Alors laissez Dieu grec égal C et nous voulons. Au lieu de cela, elle a mangé notre classe de données grecque que nous venons de créer. Et puis nous allons appeler le petit retour de Guettel Dieu exactement ce dont nous avons besoin. Et cela va se déclencher avant que l'une des vues de table n'ait été chargée et soit prête à afficher des données. C' est donc important de connaître l'ordre des choses qui se passent. Vous pouvez également le faire dans visualisé il charge si vous le souhaitez. Maintenant, faisons défiler vers le bas. Le nombre de sections est le même. Nous avons une liste de base. Le nombre de roses n'est pas 100 parce que nous n'avons que quatre dieux. Mais nous ne pouvons pas juste juste pour parce que vous pourriez avoir cinq dieux ou 20 ou ne pas savoir combien nous avons . Donc ce qu'on va faire, c'est avoir notre grand tableau de Dieu. Comment j'ai appelé ça ? Oh, appelez ça des cartes G. Tu sais, je vais juste quitter cette cause. C' est drôle, non ? Et nous voulons obtenir le nombre de dieux geek que nous avons, et c'est facile à faire avec le compte. Donc maintenant, il va créer ou préparé pour créer le nombre de lignes dont nous avons besoin pour comment geek dieux, n'est-ce pas ? De quoi d'autre avons-nous besoin ? Eh bien, nous voulons mettre des données dans notre cellule. Donc, tout d'abord, nous devons sortir le Dieu particulier que nous regardons. Alors que Dieu est égal à sortir, obtenir des tripes. Et puis parce que c'est un tableau, nous ouvrons les vêtements sont des crochets, et nous devons retirer l'index particulier que nous voulons avec un que nous avons sélectionné pour notre route. Et cela est contenu dans le chemin d'index. Ducked Row nous dit quels droits de vol auront Dieu après ça. Alors quoi ? Eh bien, ils viennent juste d'enlever ça. Nous pouvons définir notre libellé de texte égal à et ont été supprimés Mon nom là. nom de point de Dieu Parfait. Et bien sûr, nous pouvons le dire. Maintenant, nous allons lancer cela sur notre iPhone s e. Espérons que nous devrions effectivement avoir quatre dieux geek à l'intérieur de notre application. Là, nous l'avons. Zeus à côté de De Mita et Nike. D' accord, c'est arrêter de courir. Parfait. Maintenant, nous pouvons également utiliser quelque chose appelé une étiquette de texte de détail en nous-mêmes. Vendez, doc. Étiquette de texte détaillée. Nous pouvons déballer le texte, et nous pouvons définir ce voyage. Un peu de texte. Nous pourrions mettre la hauteur des dieux dans ou quelque chose comme ça, mais mettons-le intacte pour plus d'encourager notre utilisateur à taper dessus. Maintenant, frappons le jeu. Et je vous parie le prix de ce cours que nous allons préparer un accident. Ici, il vient. Finalement là, nous avons un accident et ça nous amène à la ligne. Ongle trouvé de façon inattendue va déballer une valeur facultative. Eh bien, pourquoi c'est ça ? Alors que notre étiquette de texte détaillée n'existe pas réellement et que j'ai fait, c'est que je le force à le déballer avec cette exclamation et pouvez-vous voir les problèmes avec Force déballage maintenant ? Donc, ce que j'aurais dû faire est vraiment vérifié qu'il existait et ensuite essayé de l'assigner une fois que j'étais sûr qu'il était réellement là. Peu importe, on va arranger ça, pas en vérifiant. On va lui donner l'étiquette détaillée. Allons à notre storyboard. Cliquez sur notre cellule, Assurez-vous donc qu'il ne s'agit pas de la vue du contenu, mais plutôt de la cellule qui est sélectionnée en haut. Droit ? Sous nos attributs, Inspecteur, nous pouvons sélectionner notre style. Donc, la coutume est celle que vous créez vous-même. Nous pouvons également avoir un détail de base à droite gauche et un sous-titre Essayons le jeu de succès de sous-titres Donc maintenant nous devrions avoir cette étiquette de texte détaillée à notre disposition. Espérons qu'il y a là. Nous avons mobilisé pour plus d'attaques pour plus difficile, plus taxant plus droit, donc assez simple. Et vous avez également vu le danger de déballer des options. Ok, donc quand vous sélectionnez également le sous-titre, vous avez remarqué que dans le storyboard il change ses perspectives pour vous. Donc, cela signifie, bien sûr, vous pouvez choisir n'importe quoi. Vous pouvez voir à quoi ressemble un bon détail. Détail de gauche etc. J' aime les sous-titres assez sympa. Droits fondamentaux. C' était une très longue conférence. Et je viens de passer en revue quelques choses que vous avez apprises dans cette section. Nous avons créé des dieux grecs, juste une classe. Nous avons créé une autre classe pour transmettre des données de dieu grec sous la forme d'un tableau. Nous avons pris ces données dans notre contrôleur de vue de table juste après le sommet, vous pouvez également le faire en vue. Est-ce que la charge est sûre ? Vous l'obtenez sur Internet ou quelque chose comme ça. Et puis nous avons défini notre nombre de sections. Nous avons retourné un certain nombre de rangées égales aux dieux geek, Roelandts ou comte. Et puis nous avons défini les données réelles de la cellule. Oh, et nous avons aussi choisi la ligne. Sinon, il avait l'air visiblement des droits qui était un long. Et c'est un sujet compliqué. Donc si vous ne vous souvenez pas de tout ce qu'on a fait, c'est bon. C' est très bien. Tu vas faire ça beaucoup, et finalement ça devient absolument seconde nature pour toi. 64. M9 5 Visites de table et de navigation de contrôleur de vue: C' est la conférence que vous attendiez tous. Celui sur la navigation, après tout, à peu près toutes les applications que vous avez utilisées lorsque vous cliquez sur une chose ou une autre navigue vers un nouvel écran qui peut vous montrer plus de données ou une partie différente de l'application. Donc nous allons regarder les fondamentaux de base de la navigation dans cette section, et la façon dont nous allons le faire est que nous allons regarder l'une des façons les plus courantes d' implémenter la navigation l'un des endroits communs où nous l'implémentons, et qui est dans une vue de tableau. Lorsque nous cliquons sur une cellule, nous voulons normalement que quelque chose se produise. Et généralement, cette chose montre un nouvel affichage avec de nouvelles données liées à la cellule. On a juste clit. Donc c'est comme ça qu'on va le faire. Et nous allons déclencher un nouveau contrôleur de vue et faire ce qu'on appelle pousser un contrôleur de vue sur le dessus de la pile. Ne vous inquiétez pas de ce que cela signifie pour le moment, lorsque nous cliquons sur une cellule, alors prenez votre projet et partons. Ici, nous avons notre application dans notre planche principale dans l'écran des millions d'alsa. Donc, la question est, comment pouvons-nous passer d'une cellule et en cliquant dessus pour ouvrir un nouveau contrôleur de vue. Eh bien, ce dont nous avons vraiment besoin, c'est quelque chose en arrière-plan qui contrôle la navigation. Donc si tu y penses, tu peux avoir une tonne de toi. Le contrôle est le partage sur votre écran, mais vous devez avoir quelque chose en arrière-plan qui contrôle où ils sont quand ils sont affichés quand ils sont détruits, etc. Maintenant Ex Code et le cadre de l'Iowa nous donnent quelque chose pour le faire. Donc, évidemment, nous n'avons pas à écrire ça nous-mêmes parce que ce serait une bonne douleur de courir. moment, ce qu'on va chercher est appelé un contrôleur de navigation, et le nom est exactement à quoi ça ressemble. Il contrôle la navigation et plus dans notre explorateur d'objets en bas à droite. Nous avons le contrôle de navigation près du haut, et il nous dit qu'il gère une pile de vos contrôleurs. Maintenant, tout ce que cette pile fait référence est tout simplement le contrôle est mis l'un sur l'autre. C' est pourquoi, comme une pile de cartes si vous posez des cartes l'une sur l'autre. Maintenant, le contrôleur de navigation ne contient pas nécessairement d'informations de vue. Il orchestre tout ça, pas vrai ? Donc ce que vous pourriez faire est d'en prendre un et vous pourriez le faire glisser et vous remarquerez si je suis en planer ici. Il nous donne le contrôleur de knave, puis aussi il nous donne une vue de table. Bizarrement, maintenant nous ne voulons pas le faire pour le moment parce que normalement, lorsque vous créez une application, vous aurez un écran. Tu diras, Oh, Oh, j'ai besoin d'un contrôleur de navigation pour ça et tu n'as pas besoin de recréer et de joindre des trucs. Donc, ce que vous pouvez faire est que vous pouvez cliquer sur votre contrôleur de vue, assurez-vous qu'il est sélectionné. Vous pouvez le faire avec cette icône jaune ou sur le côté gauche, puis vers le haut en haut. Dans notre menu Ex code. Nous pouvons aller à l'éditeur et nous pouvons cliquer intégrer dans le contrôleur de navigation, et il a également dans le lit dans l'onglet notre contrôleur. Si vous vous souvenez quand nous avons fait des onglets à l'avance, cela fait la même chose. Mais nous allons cliquer sur le contrôleur de navigation et regarder ce qui se passe quoi ? Cela fait un peu de désordre d'abord, mais si je déplace cela sur le côté, cela nous montre que nous avons maintenant un contrôleur de navigation et une vue de table notre vue de table d'origine , mais vous remarquerez aussi que le contrôleur de navigation est maintenant le point d'entrée de l' application. C' est important à savoir, parce que le contrôleur de navigation doit rester derrière la pile de trucs sur ce qui se passe en termes de navigation, non ? Donc, je pense que c'est un bon point à ce stade d'exécuter ceci dans notre simulateur et de voir ce qui a réellement changé dans notre application, si rien et rien n'a changé, à part quelques indices visuels sur le contrôleur de navigation, nous avons maintenant embarqué. Donc nous avons le même Lester avant que tout le clic ne fonctionne toujours. Mais en haut, nous avons cette zone grise, alors qu'avant nous ne l'avions pas. C' est ainsi que la barre de navigation et contient le bouton de navigation en arrière. Et généralement, il contient un titre en haut juste sous l'affichage de l'horloge. Donc c'est tout ce qui a changé. Vous n'avez donc rien à faire de spécial avec vos autres contrôleurs de vue lorsque vous y intégrez un contrôleur de navigation. Maintenant, ce qu'on peut faire, c'est changer les couleurs des choses. Donc, dans notre contrôleur de vue, vous remarquerez. En plus de la vue de table, nous avons également un élément de navigation, donc nous pouvons donner un titre si nous le souhaitons. Si nous allons regarder sur la droite et nous obtenons nos attributs, inspecteur, nous pouvons tomber dans un titre de dieux grecs et cela montre en haut. Nous pouvons également mettre un titre pour le bouton Retour lorsque cela apparaît. On ne fait pas ça maintenant. Si nous cliquons sur divers autres éléments, voyons ce que nous pouvons obtenir d'autre. Eh bien, ce que j'aimerais vraiment avoir, c'est une couleur. Donc, si nous cliquons autour de cet onglet sont, il ne semble pas que nous pouvons obtenir une couleur hors de lui. Donc, nous allons cliquer sur le contrôleur de navigation lui-même, et vous remarquerez que cela fait apparaître la barre de navigation sélectionnée sur ce. Vous pouvez modifier les couleurs afin que le contrôleur de navigation ne soit pas responsable des vues en dehors de sa propre barre de navigation, car généralement vous voulez que votre balayage soit cohérent dans votre application. Donc, lorsque vous le changez ici et que vous y ajoutez d'autres éléments, la barre Knave sera toujours de la même couleur ou devrait être correcte. Donc on a eu Alba. Changeons quelques couleurs dans nos attributs, Inspecteur. Regardons notre tente de bar. Prenons un joli vert. On y va. Ou peut-être qu'on peut en avoir un autre, peut-être un vert plus léger pour qu'on puisse avoir ce vert. Et ils ont juste laissé tomber un peu la capacité. Nettoie ça. Et je pense que ça m'a donné un int Grady plutôt qu'une couleur. Ouais, pour que tu puisses choisir un Grady ? Je ne le savais pas avant. Bref, nous ne sommes pas des ingrédients en ce moment. Nous sommes en mode navigation. Donc, nous avons notre lien maintenant. Vous remarquerez qu'il change sur les deux. Mais rappelez-vous, ce côté contrôle cette couleur et cette décoration. droite ? Donc si on a fait ça, on a juste un vert. Mais je ne vais pas le faire parce qu'on peut continuer. Maintenant, nous voulons ouvrir un nouveau contrôleur de vue lorsque nous cliquons sur une cellule. Donc nous avons besoin de vous contrôler le festival. Cliquez et faites-en glisser un dans nos objets. Inspecteur, par ici. C' est complètement vide pour l'instant. Maintenant, comment connectez-vous les cellules à ces ? Eh bien, vous pouvez le faire par programme, mais vous pouvez aussi le faire ici dans les storyboards. Et vous allez utiliser des mouvements familiers qui maintiennent le bouton de contrôle enfoncé et cliquent de votre cellule vers votre contrôleur de vue, et lorsque vous relâchez, cela vous donne quelques options. Afficher, afficher les détails, mode présent, bloc sanglant précoce Lorsque vous montrez, qui le pose sur le dessus et il vous donne un bouton de retour pour naviguer en arrière. Si vous avez sélectionné quelque chose comme le mode tôt, cela placerait le contrôleur de vue sur le dessus mais ne vous donnerait pas votre barre d'attelage. C' est important à savoir. Si vous l'avez fait en mode tôt, vous devriez avoir un moyen de vous en sortir vous-même. Donc on va juste avoir le spectacle. Et quand vous ferez ça, vous remarquerez qu'il obtient ce petit bouton de retour qui dit « Retournez pour saluer les lits de bébé ». Parfait. Alors c'est ça. C' est comme ça que vous naviguez. Si nous frappons, jouons et exécutons ceci sur notre SIM, alors nous devrions naviguer à partir de chaque cellule. Évidemment, on va juste montrer un écran blanc quand on le fera. Mais bientôt, nous allons remplir cet écran blanc avec quelques données. Mais pour l'instant, vous venez de terminer votre toute première navigation à l'intérieur de votre table, Voir dit bien fait. Maintenant, juste pour contraster, je vais revenir ici. Je vais arrêter ça en cours, et cette petite connexion ici qui relie les deux éléments va le sélectionner. Et si vous regardez dans nos attributs, inspecteur, inspecteur, nous pouvons le donner et l'identifier. Ou si nous le voulons, nous pourrions l'utiliser plus tard. Dans ce cours, nous pouvons donner cela une sorte. Alors rappelez-vous, c'est le menu qui est apparu pour nous montrer le mode présent tôt, etcetera, présent comme un pop over. Alors essayons de sortir. Voyons ce que ça fait. Allons frapper jouer. Donc, en tant que nouveau développeur, je vous encourage à essayer les choses et à voir ce qu'elles font. Cela nous a donné une erreur. Impossible de compiler la connexion. Donc, évidemment, un pop over demande un peu plus, alors on va juste ignorer ça. Pour l'instant, on va changer ce genre en mode présent tôt. Ne vous inquiétez pas pour les pop overs. Tu n'en auras pas besoin si tôt dans ta carrière. Mais essayons cette motile. La première chose que vous remarquerez est qu'il n'apparaît pas avec la barre de navigation ici. C' est un gros indice. Quand je touche un dieu, j'obtiens une version plein écran de mon contrôleur de vue, et peu importe ce que je fais, je ne peux pas m'en sortir maintenant. Évidemment, si vous soumettez ce genre de chose pomme orteil pour examen, ils le rejetteront et diront, Mec, navigation, accord. Donc, changons-le pour montrer et pousser, et ensuite gardons ça. Donc c'est Push and motile show maintenant, Juste avant que je parte, je dirai que montrer quelque chose mode tôt sur le dessus est un excellent moyen pour vous de limiter votre utilisateur. Alors ce qu'ils peuvent faire de votre acte. Par exemple, si vous voulez lui donner un essai gratuit et qu'ils font quelque chose dans l'essai gratuit, vous pouvez présenter un pop motile au-dessus qui les oblige à sélectionner quelque chose avant qu'ils ne continuent . Maintenant, c'est un peu nourrisson avec les règles d'Apple. C' est si vous créez une sieste, disons, disons, et les gens exécutent un essai de l'Europe et ensuite vous montrez un pop motile sur parce que leur limite de temps d'essai a expiré. Apple pourrait agir prendre un rap loin de l'APP Store parce qu'il le fait. Ils ne permettent pas ce genre de chose très facilement, mais où motels sont très utiles est si vous avez donné quelqu'un un pop up et dit, Voulez-vous vous inscrire à notre newsletter acheter le reste de cette application ou continuer. C' est donc C'est très utile pour contrôler le flux de votre application. Si vous aimez Rose avec push, quelqu'un a toujours la possibilité de reculer. 65. Les données de passage des vues de table et des contrôles de vues de vues: la question la plus courante dans certaines de mes vidéos YouTube les plus populaires concerne la transmission données dans divers langages de programmation parce que c'est quelque chose que vous devez faire très souvent maintenant . n'y a pas de règle dure et rapide pour transmettre des données. Parfois, vous ferez les choses d'une manière ou d'une autre, parce que c'est ce qui correspond à votre application. Je vais vous montrer les bases mêmes du passage de données, surtout en ce qui concerne les contrôleurs de vue, les vues de table et les nouveaux contrôleurs de vue montraient. Donc, au moment où nous avons ceci, nous avons notre vue de table et nous chargeons le contrôleur de vue à partir de cela lorsque nous cliquons sur l'une des cellules. Mais comment pouvons-nous obtenir les données de Dieu de cette cellule dans cette vue ? Contrôle ? Nous pourrions imaginer que nous pourrions avoir une liste de Dieu quelque part et nous pourrions retirer notre liste de Dieu hors de Vous savez, notre liste de fichiers rapides de données, selon laquelle nous venons de cliquer. C' est vraiment un chemin à parcourir. Et en tant que débutant , c'est et je fais référence à toi ici. Si vous êtes un débutant, c'est un peu délicat, parce que les débutants ont une sorte de tendance à ne pas passer correctement les données, ils essaient de créer ces structures dans leur esprit. Donc, ce que je vais vous montrer est une sorte de moyen par défaut de transmettre des données. C' est comme ça que tu devrais toujours essayer de le faire. Et si tu ne peux pas le faire de cette façon, tu peux le faire autrement, non ? Donc avec ça dit, ouvrons le projet et bougeons, n'est-ce pas ? Donc, nous voici avec notre partie graphique de notre application. Maintenant, nous voulons transmettre des données à travers cette petite connexion. Pas vraiment à travers la connexion, mais vous savez ce que je veux dire d'un côté à l'autre. Tout d'abord, nous devons assigner une classe de contrôleur de vue à ce petit contrôleur de vue de détail. Pour le moment, si vous cliquez sur le petit inspecteur, ce n'est qu'un contrôle de vue standard. Il n'a pas vraiment sa classe. Évidemment, nous avons besoin d'un moyen de stocker l'objet de Dieu qui passait. Nous avons donc besoin d'un contrôleur de vue personnalisé. Créons un droit. Prenez nos projets. Nouveau fichier, classe de cacao tactile. Grâce à vous, Controller fait partie de la classe coca touch, et nous avons notre contrôleur de vue de table d'avant, mais nous ne voulons pas cela. Nous voulons un contrôleur de vue simple. Maintenant, appelons ça quelque chose d'évident, comme Dieu. Détail, vue, contrôleur frappé ensuite et créé à l'intérieur de votre projet. Brillant. Donc ça devrait vous sembler familier. En dehors d'un peu de navigation ici, on va laisser ça tranquille pour l'instant. Ne vous inquiétez pas pour ça. Mais ces premiers bits devraient vous être familiers maintenant. Comme je l'ai dit, nous avons besoin d'un objet de dieu. Alors créons une variable de niveau de classe de notre Dieu, qui est un type de dieux grecs. Ce sera facultatif, parce que quand notre classe charge le grec, Dieu n'existe pas encore. Donc, disons que revenons à notre plateau principal, sélectionnez notre contrôleur de vue détaillée, et puis définissons Dieu contrôleur de vue détaillée comme sa classe. Et une fois que cela a été réglé correctement, vous devriez remarquer que le changement sur le côté gauche juste pour vous en assurer. Super, pour qu'on puisse sauver ça. Et maintenant c'est une bonne idée à ce stade de tester cela sur le simulateur, tester souvent est une très bonne idée. Avec n'importe quel développement logiciel. Ne supposez jamais que vous avez obtenu quelque chose de bien, car il reviendra vraiment vous mordre plus tard. droite. Alors cliquons sur quelque chose et on va bien. Tout se charge comme nous l'attendons. Ok, arrêtons ça de courir. Maintenant. Comment passer les données à notre contrôleur de vue détaillée de Dieu et remplir cette variable  ? Mais en fait, c'est assez simple. Allons à notre contrôleur de vue de table parce que c'est de là que nous envoyons notre navigation et d'une certaine façon ici, nous allons réellement attraper les dieux que si vous vous souvenez, nous n'avons pas de tableau d'eux ici. Geek, geek dieux. Je me suis trompé, en fait. Va changer ça maintenant, il n'y a pas d'erreurs stupides ici. Des dieux grecs. On s'est amusés et là-haut. De grands dieux. Tu n'as pas à changer. Vous pouvez le laisser tel quel parce que je suis sûr que vous ne faites pas l'erreur que j'ai faite. Droit ? Donc, nous voulons sortir les dieux de ce tableau. Maintenant, si nous faisons défiler vers le bas, nous devrions regarder ce nombre de lignes. Cela ne ressemble pas à une rangée chez Nous cherchons la fonction qui se déclenche lorsque nous sélectionnons . Quelque chose a sélectionné la ligne à qui pourrait être cela. Mais avant d'y aller, c'est une chose de plus qui pourrait être ici si nous continuons à descendre. C' est notre navigation de marque. Et si je ne suis pas commun, vous verrez ce remplacement. Préparez-vous pour Segway. Qu' est-ce qu'un Segway ? Ce n' est pas un appareil à deux roues. Un Segway est le nom donné à cet objet dans votre storboard. Si tu regardes ici, c'est écrit storyboard Segway en haut, non ? Donc c'est un Segway. Et ça nous prépare pour un Segway. Donc, quand on se fait virer, cette fonction va devenir froide. Ok, donc je vais me débarrasser de ces commentaires ici. Vous pouvez les lire si vous le souhaitez. Maintenant, ce que nous voulons faire, c'est que nous voulons retirer le bon Dieu pour la cellule correcte que nous avons choisie. Nous devons donc vérifier que nous pouvons obtenir le chemin d'index correct pour notre vue de table. La façon dont nous le faisons est de taper. Si laisser et nous créons un index variable, chemin est égal à la vue de table sombre chemin d'index pour la route. Donc, nous sortons l'actrice ce chemin d'index pour la route sélectionnée, donc cela devrait être échoué il devrait être rempli avec le numéro de la route et la section que nous sélectionnons. Donc, si nous sélectionnons cela, nous devrions obtenir le bon. Donc si nous pouvons obtenir ça, alors nous pouvons faire quelque chose avec cet index. Droit ? Alors, qu'est-ce qu'on va en faire ? Eh bien, nous allons mettre le Dieu à l'intérieur de notre contrôleur de vue détaillé. Donc, tout d'abord, nous devons mettre un frein à ces quelques contrôleurs pour qu'on puisse dire si Let's V. C est égal à Segway. Cela saisit le Segway que nous utilisons, et ce qu'il fait, c'est que nous pouvons lui demander la destination. Et si vous remarquez si je prends cela à nouveau, il nous donne un vous je vois le type de contrôleur hors destination. Et ce qu'on va faire, c'est essayer de faire ce qu'on appelle le casting. Donc nous allons transformer que vous je vois contrôleur en utilisant ce mot comme nous allons le transformer en contrôleur de détail d'un dieu accolades ouvertes et fermées. Donc tout ce que j'ai fait ici, c'est que j'obtiens le contrôleur de vue de destination. Je vois si je peux le changer en un contrôleur de vue de détail de Dieu. Si je peux. Ensuite, je sais que j'ai ce contrôleur de vue et je peux définir mon Dieu, si je n'ai pas vérifié cela. Et je viens de dire simplement pour un peu de rap car plus tard, vous pourriez changer votre application pour ouvrir un autre type de contrôleur de vue, et à ce stade, vous auriez un crash. Donc, nous allons avoir un point d'interrogation, et si nous pouvons l'obtenir, alors nous pouvons dire V c point Dieu est égal à Et nous pouvons attraper notre tableau de dieux grecs et nous pouvons choisir le Dieu à l'index chemin point route. Donc maintenant, nous avons mis le Dieu dans notre nouveau contrôleur de vue. Maintenant, vous remarquerez que nous n'avons pas à tirer sur le contrôle de la vue détaillée de Dieu. Le système le fait pour nous. Cela prépare la fonction Segway, nous permet de définir des choses avant qu'il ne montre le contrôleur de vue. Donc, il le charge. Dit ce que vous voulez faire, vous faites quelque chose, puis il continue à charger le reste. Donc c'est assez pratique. Maintenant, il a un avertissement pour vous les gars. Ne faites pas longtemps en cours d'exécution Internet pour extraire les données ici. Ou ne faites pas longtemps en cours d'exécution même l'étirement de la base de données ici parce qu'il va ralentir votre application et cela pourrait causer des bogues très bizarres. Et en effet, s'écrase. Obtenez vos données Internet à un endroit différent lorsque vous avez une vue stable à l'écran, non lorsque vous effectuez une transition. C' est une chose très dangereuse à faire. Ok, donc on l'a. Allons à notre contrôleur de vue détaillée de Dieu et à notre avis, a chargé. Faisons en sorte que notre Dieu soit réglé. Alors nous allons imprimer notre nom de Dieu amarré et sauver que vous remarquez. J' ai dit seulement essayer d'imprimer ceci si nous pouvons obtenir un Dieu de l'option Okay, euh, quelle est cette valeur par défaut de l'ère pour le soleil enveloppé, La valeur implicitement fusionnée de chaîne à n'importe quel puits, voyons ce qui se passe. Allons jouer et voir si ça gâche notre ficelle. Donc maintenant, quand nous cliquons sur une des cellules, nous devrions obtenir si elle nous montre la sortie de débogage ici, nous y allons. De Mita et Zeus brillants. Vous remarquerez, bien sûr, bien sûr,qu'il est dit optionnel, parce que je suis également imprimer l'option et qui a quelque chose à voir avec l'ère. Mais on n'y va pas parce qu'il y a déjà assez pour apprendre dans cette section, comme c'est vrai. Notre transfert de Dieu fonctionne donc. Et juste pour résumer cela pour vous, parce que c'est très important chose est d'abord maintenant storyboard. Nous avons défini notre contrôleur de vue de détail en or grec. Nous créons le Dieu pour cela. Ensuite, dans notre contrôleur de vue de table, nous avons utilisé ce remplacement. Préparer pour Segway a pris d'abord obtenir le chemin d'index, puis obtenir le contrôleur de vue de destination. Ensuite, définissez le Dieu en fonction de ce contrôleur de vue de destination. Et c'est ainsi que nous passons des données entre un contrôleur de vue de table et un nouveau contrôleur de vue. 66. M9 7 Créer les vues d'images de l'écran de l'écran de l'écran de dieu: Nous avons maintenant notre vue de table et notre navigation configurée, mais nous avons actuellement un contrôleur de vue vide et détaillé. Alors mettons ça en place. Et ce que nous allons apprendre dans cette section en plus de la mise en place va évidemment résumer les étiquettes de base et les choses. Mais nous allons également regarder les vues d'image et comment charger les images à l'intérieur de nos enveloppements afin qu'elles remplissent l'écran au bon rapport d'aspect. En fait, ce n'est pas si difficile à faire, alors continuons à l'apprendre. La toute première chose à faire est de télécharger les images qui sont attachées à cette conférence. Donc nous avons nos dieux grecs mangeurs, quelqu'un, quelqu'un, quelqu' un et quelqu'un. Et j'ai obtenu tout ça avec une licence libre de redevances pour que vous puissiez vous sentir libre de les utiliser où vous voulez. Il suffit de rechercher sur Google pour réutiliser les images sur Google. Si vous voulez trouver vos propres versions de ces fesses pour votre commodité, elles sont attachées à cette conférence, est-ce pas ? Donc la première chose que nous allons faire, bien sûr, c'est jouer dans notre storyboard, et nous voulons laisser tomber dans ce qu'on appelle une vue d'image. Passons à l'inspecteur d'objets ou au filtre d'objets. Cliquez sur la vue Image, qui affiche une seule image ou animation décrite par un tableau hors images. Ne nous inquiétons pas des animations pour l'instant. allons juste avoir notre seule image pour que nous puissions déposer cela et qu'il se comporte comme n'importe quel autre objet. Tu dois le contraindre. Alors faisons-le maintenant. Nous pourrions cliquer et faire glisser avec le contrôle Appuyez sur le relâchement, et nous pourrions définir un espacement. Ou ce que nous pouvons faire, c'est que nous pouvons sélectionner la vue de l'image et vers le bas dans nos petites contraintes en bas. Nous pouvons sélectionner le 3ème 1 dans ou le 2ème 1 dans, selon la façon dont vous le regardez. Et nous pouvons définir ces valeurs comme zéro parce que nous voulons que cette image soit en plein écran. Alors ajoutons quatre contraintes. Super, donc il est contraint en haut et en bas. Mais que se passe-t-il sur les côtés ? Il semble qu'il y ait une sorte de marge. Donc, si vous sélectionnez la vue de l'image et que vous sélectionnez la contrainte, qui est cette barre verticale, elle n'est pas horizontale. Ce n'est pas horizontal, je dois dire. Si la constante est zéro. Si la distance est nulle parce que évidemment il ne peut pas montrer cela. Donc, quand il zéro, la barre est verticale. Maintenant, juste au-dessus de ça. Et nous regardons l'inspecteur des attributs, vous remarquerez qu'il y a ceci par rapport à la marge. Et si vous sélectionnez que nous avons maintenant cette petite barre horizontale et si vous double-cliquez dessus , vous pouvez revenir à zéro. Et maintenant, il se sent écrans que juste un petit avertissement. IOS aime vous donner des marges de chaque côté par défaut, et nous allons faire de même avec le côté gauche. Donc c'est zéro. Et dans ce cas, le rapport à la marge n'est pas la première option. C' est en fait le 2ème 1 par rapport à la marge et nous pouvons double-cliquer dessus zéro et nous sommes dans. Cela garantit qu'à l'avenir, lorsque IOS change, votre acte sera toujours le même. Donc, j'étais augmente ou diminue ses marges. Tu ne seras pas affectée. Certaines personnes, je veux dire moi-même. Ce que j'ai fait quand j'ai commencé, c'est que j'ai vu ça. J' ai été vraiment ennuyé par ça et ce que j'ai fait. Waas, je vais juste défaire un peu de ça. Je choisirais cet article et j'irais moins 20 parce que 20 est la taille de la marge. Mais vous pouvez imaginer si Apple change qui serait royalement vissé quand une nouvelle version d' Iris est sortie avec une marge de, disons, 10 ou 30. Donc c'est une mauvaise façon de le faire. Débarrassons-nous de ça. Arrête ça. Il suffit de cliquer sur la marge et de changer la contrainte à zéro afin qu'elle définisse sur les périphériques futurs. En tant que programmeur, vous devez penser au futur et aux futurs appareils car ils roulent plus vite que prévu. Et si vous faites les choses correctement la première fois, cela vous évitera beaucoup de douleur plus loin. Bon, donc on a notre image. Sois gentil d'avoir un nom de Dieu en haut. Alors laissons tomber une étiquette quelque part près du sommet. Je vais aligner ça sur la droite, et je vais vraiment monter cette taille pour qu'on puisse continuer. Je vais aligner cette étiquette sur la droite. C' est donc cette petite icône sous l'alignement. Je vais juste me décaler pour qu'il se trouve dans le coin. Nous allons zoomer, je vais contrôler, cliquer et faire glisser vers la vue, mettre un espacement horizontal et,bien sûr, bien sûr, un espacement vertical, sorte que le positionnerait si nous cliquons sur notre petite icône de rafraîchissement à le fond. Petite mise à jour. Tout pour nous. Et, bien sûr, il a foiré. Doit être un mauvais programmeur, donc je pense que c'est cette contrainte de fond. Supprimons ce contrôle. Cliquez et faites glisser l'espacement horizontal, non ? Donc c'est pendant l'espacement horizontal sur le côté gauche, ce qu'il ne devrait pas vraiment faire. Nous pouvons donc supprimer cette contrainte à nouveau. Et supprimons cette contrainte supérieure à, et ce que nous allons faire à la place est de venir ici et voir ce que nous pouvons faire avec ça. Nous allons avoir 10 et 10 de chaque côté maintenant qui est contraint correctement. Je pense que cela se passait parce que nous avons aligné notre vue d'image sur l'élément le plus proche, et parfois lorsque vous contrôlez clic et glisser, vous pouvez sélectionner la mauvaise chose sans le savoir très facilement, comme quelque chose que je pense Exco a besoin de ranger en haut à droite. Donc tu veux que ce label soit très grand, donc c'est pour le gay big. Donnons-lui un esprit pour qu'il reste aussi grand, et ce sera si nous double-cliquons sur ce sont avec le nom de Dieu. Personne ne verra ça parce que ça aurait changé avant. Cela se charge bien après le chargement. Mais avant qu'il n'apparaisse, alors il laisse tomber une autre étiquette en dessous. Ça va être les statistiques de notre Dieu. Rappelez-vous, nous avons une hauteur et une superpuissance, alors alignons ceci à droite. Alignons le au nom de Dieu de l'espacement vertical et alignons le bord de fuite. Et, bien sûr, donnons-le un avec et nous allons juste appeler ces détails. C' est pour nous. Personne ne verra ça. Ça va avoir l'air assez lisse, je pense que quand ça se chargera maintenant, bien sûr, on doit tout sortir. Donc, Assistant Editeur, c'est juste faire de l'espace et ça ouvrira notre contrôleur de vue détaillée de Dieu, ce qu'il n'a pas. Ça a ouvert celui-ci, et c'est probablement parce que nous n'avons pas sélectionné celui-là. Lorsque nous cliquons sur ce bouton, il devrait changer l'éditeur d'assistant pour le contrôleur de vue correct. Maintenant contrôlons, cliquez et faites glisser notre étiquette de nom de Dieu juste une sortie de zone. Parfois, tu auras ça qui surgit, et je pense que c'est, euh c'est une inadéquation parce qu'Exco essaie juste de le mettre dans un endroit bizarre. Donc si cela arrive, essayez de le mettre ailleurs. Un peu plus bas. Peut-être que vous pouvez toujours les déplacer plus tard si vous le voulez, alors ne vous inquiétez pas à ce sujet. C' est juste une chose bizarre que fait le Xcoat. Nous allons obtenir notre étiquette de détails et enfin, notre image vue de l'image de Dieu vue comme un point de vente en ce moment. Juste un mot de note ici. Avis X Code met une exclamation. C' est quatre sonnets qui nous disent qu'il y a définitivement toi. Je les étiquettes sont facultatives parce que lorsque nous le lions, il est évident que la vue de l'image existe dans notre storyboard. Si ce n'était pas le cas, nous aurions effectivement une erreur la première fois que nous le chargeons, et c'est assez facile à déboguer. Donc il y a juste Exco qui fait son propre truc avec cette force sur les emballages. Ok, donc on a fait ça. Mettons mon côté était de nouveau sur. Allons à notre contrôleur de vue détaillée de Dieu et à l'intérieur de notre classe. Créons une fonction pour charger des données maintenant. Vous pouvez appeler ces données initiales de charge si vous le souhaitez. Parfois, je fais ça. Donc je sais quelle est la première chose que je dois charger et je vais appeler ça en vue. Ne charger charger les données initiales Donc il est ici va définir le nom et les détails et la vue de l'image . C' est un festival. Notre étiquette ne contient pas de texte est égal au dieu. S' il existe un nom de point. Ensuite, nous allons définir le texte de l'étiquette de nos détails comme égal à maintenant. On a besoin d'une ficelle et on va montrer la hauteur. Maintenant, je dis que nous avons besoin d'une chaîne parce que la hauteur est en fait définie comme un double. Donc, si nous avons fait des hauteurs de points de dieu et puis nous avons ajouté sur des mètres à elle. Nous avons une ère que vous ne pouvez pas appliquer l'achat de votre opérateur pour doubler et ficeler. Donc, nous devons changer cela en une chaîne. La façon dont nous faisons cela est avec une chaîne comme ça maintenant il y aura une erreur qui apparaît dans. Il a été renommé innit ? Décrire et vous pourriez dire que c'est le débutant Quoi ? Qu' est-ce que ça veut dire ? J' essaie de Stream. Qu' est-ce qu'il y a à voir avec ça ? Eh bien, il tire à l'intérieur de la chaîne que vous essayez de créer. C' est ce que cela signifie et ce dont il a besoin lorsque je clique. Fix est une étiquette. Quatre. L' argument que vous essayez de passer. C' est tout ce dont il se plaint. Ça dit que tu ne m'as pas donné de label, donc je ne sais pas quoi faire avec ça. C' est amusant. Ok, alors prenons des mètres et adoptons un espace parce qu'on va ajouter un peu plus à ça plus notre chemin. Dieu point superpuissance. Donc, vous pouvez voir comment superpuissance Maintenant, cela va nous donner une erreur à. Et si vous cliquez sur le rouge, il vous indique les options de chaîne Non unwrapped. Vous pouvez le remplacer par une exclamation pour le déballer. Et nous savons que c'est un assez sûr comme nous sommes en ce moment donc nous n'avons pas à y aller si laissez Dieu superpuissance etcetera, etcetera. On sait qu'on va bien. En l'état actuel, les droits chargeaient nos données initiales. Cliquez sur jouer et voyons à quoi cela ressemble dans le simulateur. Droit ? Cliquez sur un élément. On a Poséidon. Oh, et nous avons cette option bizarre pour pointer quelque chose de très bizarre. Allons à Zeus. Optionnel deux mètres de foudre. Eh bien, allons nous débarrasser de ce mot optionnel parce que ce que nous faisons ici, ils disaient, Donnez-moi une chaîne qui décrit ceci Donc c'est exactement ce qu'il fait dire, Eh bien, c'est un optionnel là, vous obtenez. Alors, comment on répare ça ? Eh bien, c'est étonnamment simple à faire. Nous pouvons effectivement supprimer cette description, et nous pouvons forcer le Dieu déballé. Et ça devrait faire l'affaire. Cela devrait supprimer le nous descriptif de celui-ci. L' optionnel. Maintenant, ce n'est pas évident si vous venez de commencer à programmer que c'est une solution. Mais, hé, c'est ce que nous avons. Zeus. Nous avons Poséidon 2.4. Nous n'avons pas 2.399999 comme avant. Et c'est juste une ère de précision, quelque chose que vous devez surveiller. Quand tu programmes des choses. Nous avons Nike. Ok, parfait. Donc, nous avons chargé notre bater initial. Maintenant, comment obtenons-nous nos images ? Allons à notre planche principale. Il s'agit de sélectionner notre image, vous et vous remarquerez qu'il y a une liste déroulante en haut à droite qui nous permet de choisir des images le moment. Nous n'avons pas d'images dans notre projet, mais vous l'avez fait avant qu'elle ne le connaisse. Allons à nos actifs. Démarrez les actifs XY et il est touché, ainsi que la création d'un nouveau jeu d'images. Appelons ça Zeus. Créons tout un tas d'entre eux, peut-être quatre, parce que c'est le nombre que nous avons. Poséidon, le compteur et, bien sûr, Reebok. Note. 90. Ok, maintenant prends ces images que tu as déjà dézippées et dépose-les dans les deux X Allons-y pour mangeur faible à côté, dans et Zeus. Ok, maintenant, si vous revenez à votre storyboard principal, vous pouvez sélectionner votre vue d'image et dans votre image, liste déroulante. Nous avons maintenant toutes les images disponibles, alors sélectionnons simplement un compteur et vous remarquerez ce que vous sélectionnez. C' est un peu le mauvais rapport d'aspect. C' est un peu écrasé. Donc j'aime cette image est une image assez douce, non ? Comment on répare ça ? Eh bien, avec votre image, vous sélectivité juste en dessous où vous définissez l'image est un mode de contenu. Beaucoup d'options différentes, nous pouvons aspect ajustement. Cela signifie que nous conservons le rapport d'aspect, mais nous le rendons adapté aux deux côtés les plus proches de l'image. Après avoir très bien expliqué cela, c'est des ordures, mais il s'adapte tout en gardant son rapport d'aspect à votre image. Vous Si vous voulez remplir votre image, vous pouvez sélectionner aspect, Phil. Et maintenant, votre image est complètement remplie dans la vue de l'image. Bien sûr, nos étiquettes ont disparu. Donc si vous voulez, vous pouvez les créer comme une étiquette blanche, ce que je vais faire ici, là . Nous supposons que cela semble assez doux maintenant, quelle que soit l'image que vous choisissez sera aspect, Phil, aspect très esprit ajustement vous donne cet aspect de l'image. Phil vous donne celle-là. J' aime vraiment les trucs plein écran parce que c'est une façon très moderne de concevoir des choses. Nous avons Nike et deux mètres d'accord, donc nous avons tout ce qu'il nous faut pour nos images de Dieu grec. Maintenant, revenons à notre contrôleur de vue détaillé et dans les données initiales de chargement. Nous allons définir notre vue d'image par programme donc, Dieu, Dieu, vue d'image. Dr Image. Il est égal à toi. J' imagine et nous donne quelques options. Nous voulons retirer notre image nommée afin que nous puissions extraire une image nommée comme une force, qui est juste le nom de l'image dans notre dossier Assets. Alors, quel est le nom de notre image ? Eh bien, c'est assez simple. C' est en fait que Dieu ne donne pas de nom et ensuite on va déballer ça. Alors sauvegardons ça. C' est frapper jeu, et les plus astucieux d'entre vous auront remarqué. Il y a une erreur en regardant ici. Mais je vais faire ça de toute façon pour que vous puissiez voir l'ère en action. Ce n'est qu'un petit, mais c'est important. Allons à Zeus. Je n'ai pas l'image. Poséidon. Rien. C' est parce que notre nom de Dieu commence par un Zeus majuscule. À notre image, tout commence par une minuscule. Et en ce qui concerne Swift, ce ne sont pas les mêmes. Donc, nous pouvons changer nos images pour réduire le mangeur à une capitale et etc, vous obtenez où cela va droit. Maintenant, nous pouvons frapper, arrêter et puis jouer à nouveau. Et nous ne devrions pas avoir les mêmes problèmes que nous devrions avoir. Notre image est chargée, alors sélectionnons Zeus. Là, nous l'avons. Couverts Poséidon. Beau pain super puissance, pommes de mita et poires. Nike. Maintenant, juste un mot sur le design à ce sujet. Je me déplacerais en fait à travers ce Zeus un peu plus près du côté droit parce que la chose très moderne à faire pour vraiment remplir votre espace et laisser de l'espace vide dans d'autres endroits. Mais je ne suis pas designer, et si tu fais un bonbon, alors ça en vaut la peine. Toe embauche un concepteur pour plus d'AP ok, donc c'est ainsi que nous configurons les vues d'image pour notre application et comment nous assignons des images à l'aide de chaînes . 67. M9 8 Gods en des choses grecques en un !: à droite. Les devoirs et la solution sont tout en un dans ce module parce que c'est si facile. Ce que je veux que vous fassiez, c'est simplement ajouter un autre Dieu. Donc, il s'affiche dans notre vue de tableau. Et donc il montre toutes les statistiques de dieux et les images à l'intérieur du contrôleur de vue de détail de Dieu. C' est vraiment facile. Donc je veux que vous arrêtiez la vidéo ici pendant que vous ouvrez le code X. Et une fois que vous l'avez arrêtée, une fois que vous l'avez essayé, revenez et je vous montrerai ma solution. Les premières étapes, la solution consiste à ajouter un autre ensemble d'images dans nos actifs star XY. Et appelons ça le dieu de votre choix. Alors je vais avoir Hermès, le dieu des transports ou voler, et je vais ouvrir mon détecteur. J' ai inclus cette image avec ta meute. Je vais aller à mes données de Dieu grec, et je vais simplement l'ajouter comme l'un des dieux que je passe. Donc je vais copier cette route de fond, il centre. Et changeons ça pour Hermes 1.9 superpower post ou, si vous êtes américain, le courrier change notre i D interne, que je sais que nous n'avons pas utilisé. Mais c'est juste une bonne pratique de le faire. Change son nom en Hermès, Indépendant de toi, Sami a raison. Et étonnamment, c'est tout. C' est tout ce que vous avez à faire, car lorsque vous jouez à ceci, vous avez maintenant ajouté un bit de données à votre application. Mais parce que la vue de table est dynamique, il sait orteil ajouter le compte sur les dieux grecs que vous avez. Et il sait également dans le contrôleur de vue détaillée quelle image sélectionner. Maintenant, nous avons Hermès. Quand nous le sélectionnons là-bas, nous obtenons 1,9 mètres et le courrier. C' est donc la beauté de la programmation. Lorsque vous le faites correctement, tout ce que vous avez à faire est d'ajouter un peu de données et une image, et tout cela fonctionne simplement tant que vous êtes systématique sur ce que vous faites. Donc, si vous avez cette solution aussi rapide est que alors bien fait, 68. Résumé des Gods grecques: félicitations. Vous avez terminé l'application des dieux grecs, et vous avez probablement appris la chose la plus importante dans IOS, qui est les vues de table. Vous allez les utiliser tout le temps et partout. Les solutions ont un petit résumé. Vous avez appris sur les vues de table, qui sont essentiellement des listes de défilement, ou certaines personnes les appellent Liste de défilement infinie parce que vous pouvez simplement continuer. Vous avez appris qu'ils utilisent des cellules recyclées. Et ive bold l'a fait parce que c'est très important pour corriger les erreurs plus tard. Lorsque vous réalisez que vos cellules n'affichent pas ce qu'elles devraient, c'est parce qu'elles sont recyclées, et qu'elles peuvent en fait montrer les données avant qu'elles ne soient recyclées. Ainsi, chaque fois que vous avez une cellule, assurez-vous toujours de définir toutes vos données chaque fois que vous affichez cette cellule. Ensuite, nous avons examiné l'insertion de données dans les ventes, ce qui était assez simple. Nous avons examiné les ventes très basiques, pas de cellules personnalisées. Pourtant, nous avons regardé comment naviguer d'une cellule lorsque vous cliquez dessus à un contrôleur de vue et aussi comment se débarrasser de cette animation grise sur les cellules. Ensuite, nous avons regardé le passage de données entre les deux de la manière recommandée et finalement Nous avons regardé les vues d'image et comment charger dynamiquement les données d'image en eux, utilisant les images de notre dossier Assets. Donc c'est à peu près tout. Mais tous ces points sont vraiment, vraiment importants. Je veux dire, si vous avez le temps, refaites cette leçon dans quelques jours parce que ça vous tiendra en bonne place dans les moyens sur Faisons quelques feux d'artifice à fêter. 69. M10 1 Where M10 de moi ? Introduction: commençons à créer une abside un peu plus complexe où nous commençons vraiment à plonger dans le remorquage ce que nos appareils mobiles peuvent faire pour nous. Donc, dans ce module, nous allons créer une application de carte, qui à sa surface, il semble vraiment simple. Il s'agit simplement d'une application qui vous montre votre position actuelle sur les cartes Apple et vous montre où vous utilisiez auparavant une petite annotation de broche. Maintenant, ça peut sembler simple. Quand je le décrit comme ça, montrez simplement une carte et mettez une annotation dessus. Mais il y a quelques étapes que nous devons franchir et être conscients en tant que nouveau développeur. Donc, nous comprenons exactement ce qui se passe dans quelque chose comme ça. Donc les choses que vous allez apprendre dans ce module assez importantes. abord, vous allez regarder des choses comme les autorisations parce que peut-être vous avez ouvert une application sur IOS avant , et il est demandé la permission de dire, accéder à votre microphone, la caméra, quoi que ce soit. Afin de suivre votre localisation, vous devez donner l'autorisation à l'application en tant qu'utilisateur, nous allons donc voir comment le faire. Et ce processus est à peu près le même pour toutes les commissions dont vous avez besoin. Ensuite, bien sûr, nous allons chercher à obtenir notre emplacement actuel de l'obtenir à partir du système IOS lui-même. L' emplacement n'est pas quelque chose que nous traitons en tant que développeur. Nous obtenons simplement le résultat du système. Ensuite, nous allons chercher les coordonnées, latitude et longitude, Excuse May latitude et longitude. Donc, nous savons où mettre la broche pour notre utilisateur. Nous allons voir comment nous stockons les choses. C' est donc une chose très importante, comment nous stockons les données à l'intérieur de vos valeurs par défaut de l'utilisateur. Maintenant, les nombreuses façons de stocker des données. Vous pouvez stocker des données en texte brut. Vous pouvez résumer dans les bases de données, mais l'une des méthodes les plus courantes est les valeurs par défaut de l' utilisateur, car lorsque vous avez une très petite quantité de données, il n'a pas besoin d'être catégorisé de quelque manière que ce soit. valeurs par défaut de l'utilisateur sont géniales, et comme son nom l'indique, ces paramètres par défaut que vous pourriez inclure avec votre acte. Et enfin, nous allons voir comment ajouter une épingle à nos cartes. Donc, cela s'appelle une annotation, donc tout cela combiné ensemble va nous donner une application. En fin de compte, ça ressemble à ça. Notre emplacement actuel est affiché ainsi qu'une annotation de broches à l'endroit où nous étions auparavant . Et bien sûr, nous serons en mesure de zoomer avant et arrière sur la carte. Donc, si vous êtes excité à ce sujet et que vous devriez l'être parce que la cartographie est évidemment une catégorie assez populaire, ouvrons le batteur de code X et obtenez des craquements. 70. M102 qui montre une carte avec des cartes et des cadres d'Apple et: clair que la première tâche que nous avons est de créer notre application et de montrer une maths très basique dedans. Maintenant, cette carte est quelque chose que nous allons retirer de cartes Apple chanter comme il est installé sur tous les appareils IOS, et nous sommes à peu près garantis qu'il va exister sur cet appareil. Maintenant, pour montrer une carte, nous allons devoir utiliser quelque chose appelé un framework. Nous allons devoir importer le framework Apple Maps dans notre projet et l'utiliser pour extraire la carte et l'afficher à l'écran. Alors plutôt que d'en parler, ouvrons le manteau X et essayez-le de cette façon. Commençons par créer un tout nouveau projet. Et pour nos besoins, ce sera une vue unique, pas une vue dégagée ou tout autre type d'à une seule vue. Et comment allons-nous appeler ça ? Appelons ceci où Waas I et nous avons nos identités habituelles qui ont produit ce nom unique frappé ensuite et, bien sûr, sauvegardez vos projets quelque part. Ok, donc notre projet est prêt. Passons à notre planche principale et nous devrions voir quelques sites familiers là-bas principalement. Si cela fonctionne, nous y allons principalement. Nous devrions voir notre contrôleur de vue principal. Maintenant, nous avons besoin d'une carte. Alors allons à notre Explorateur d'objets. Laissons sur la carte. Et ici, nous avons une vue du kit de carte. Donc, si on clique dessus, lisons ce qu'il dit. Un objet M K Matthew fournit une interface de carte à base de plantes intégrée similaire à celle fournie par l'application de cartes. Donc, vous pouvez utiliser cette classe en l'état pour afficher les informations de carte et pour manipuler le contenu de la carte afin que fondamentalement puisse faire beaucoup de choses avec cela. Cliquez et faites-le glisser dans notre vue. Et puis, bien sûr, positionnons-le sans contraintes. Je vais lui donner zéro contrainte de tous les côtés. Et maintenant, si vous vous souvenez précédemment quand nous avons fait des contraintes, nous devons enlever cette option relative à la marge pour le faire remplir tout l'écran. Vous pouvez le faire à ce stade en supprimant cette option de contrainte aux marges. Donc maintenant, quand vous avez les contraintes, il va le mettre sur tout l'écran. Maintenant, je ne sais pas pourquoi cela est soudainement devenu rouge sur les côtés ici. Donc, si vous cliquez sur la carte et que nous cliquons sur cette petite icône rouge, il nous dit que nous avons besoin de contraintes pour la position Y, ce qui est très étrange pour moi parce qu'il devrait remplir tout l'écran un cas. Revenons à cette liste. Donc, juste pour vos besoins, cliquez sur cette petite icône rouge et elle vous indique exactement ce qui ne va pas avec votre vue cartographique pour la position Y ou la cabane. Quelque chose s'est passé un peu drôle. Ici, nous avons notre positionnement horizontal, mais pas le haut et le bas. C' est un des Juifs. Supprimez les contraintes du haut et du bas, et je vais contrôler Cliquez sur la vue et je vais donner cet espacement vertical et je vais faire ce zéro et faire la même chose en bas. Et je soupçonne que ça va résoudre notre problème. Donc l'espacement vertical vers le bas et nous y allons. Nous n'avons plus de rouge. Donc maintenant, uh, quand je mets zéro là-dedans, ça me donne une erreur qui est très, très étrange. Besoin de contraintes pour pourquoi la position maintenant, c'est une erreur que je n'ai pas rencontrée auparavant. C' est très bizarre. Mettons-en un dedans. pour des centaines, et nous avons beaucoup d'erreurs. Essayons encore une fois. Contrôle, cliquez, Espacement vertical et il est bleu. Maintenant, je ne sais pas pourquoi c'est à cette époque, et j'espère vraiment que le tien ne boira pas ça parce que c'est assez frustrant. Alors mettons-nous à zéro et nous sortons rouges. Tu sais quoi ? Je vais disparaître une seconde. Je vais arranger ça et revenir te dire ce qui se passe. Ok, je suis de retour. Donc, ce que j'ai découvert, c'est que si je contrôle, cliquez et faites glisser vers le bas et mettez l'espacement vertical en bas, puis positionnez ce 20, puis faites le haut. Donc, la façon opposée nous l'avons fait avant l'espacement vertical vers le haut. Tout semble aller bien. Nous n'avons pas d'erreurs. Et ce sont exactement les mêmes contraintes. Je n'ai pas regardé ça en profondeur parce que je ne veux pas perdre de temps à vos gars pour espérer mon temps, est probablement une petite chose qui me manque. Ou j'ai trouvé un des bogues insaisissables dans le code X, qui ne sont pas si insaisissables. Il y en a quelques-uns. Ok, peut-être que je vais signaler ça à Apple de toute façon, nous avons maintenant notre carte. Que se passe-t-il si on monte ça sur notre simulateur ? y Il n'ya qu'une seule façon de le savoir. Alors on y va. En utilisant la magie de la compression du temps. Nous exécutons maintenant notre application, et rien ne se passe dans notre je veux dire, notre malédiction des changements. Et si vous maintenez l'ancienne touche enfoncée, vous pouvez faire un zoom avant et arrière. Qu' il y a des mathématiques est en train de charger maintenant. Ok, donc nous avons chargé notre carte maintenant, précédemment dans les versions précédentes de code X, cela se bloquerait si vous faisiez cela sans ajouter le framework. Alors rappelez-vous, dans l'instruction que j'ai parlé du framework Eh bien, revenons à notre ex-coach et nous allons cliquer sur ce dossier de niveau de solution le plus élevé, non ? Et puis à l'intérieur de cette section, nous avons les onglets. Les principales capacités générales, informations sur les ressources, les paramètres de construction, les phases de construction en ce moment, sous les phases de construction. Nous allons examiner ces différents dossiers dont nous disposons. Donc, si nous regardons le binaire de lien avec les bibliothèques, cette section la 3ème 1 vers le bas, donc je vais juste les fermer pour qu'il soit clair que c'est l'endroit où nous lions les différents frameworks que nous n'avons pas inclus par défaut dans notre projet parce que vous peut imaginer si nous avons tout inclus. Notre APS serait énorme. Donc, le code X vous permet d'inclure des choses quand vous en avez besoin. Maintenant, dans les versions précédentes de X coat, vous aviez besoin d'orteil. Ajoutez le framework pour le kit de carte ici, et il ne semble pas se bloquer en ce moment. Mais juste pour être sûr, nous allons cliquer sur l'icône plus, puis nous allons chercher des kits de maths de carte Framework. Ajoutons cela et il devrait apparaître finalement et il n'y a pas quelque chose qui regarde dans les autres choses. Ok, donc ça ne semble pas avoir à l'esprit. C' est encore une première version de X Code, et il devrait apparaître ici si je redémarre réellement expert, ce que je vais faire maintenant. Droits. On est là, donc tu n'as peut-être pas ce problème et j'espère que tu ne le feras pas. Mais maintenant nous avons le cadre pour le kit de carte, et ce que je viens de réaliser, c'est que nous allons probablement en avoir besoin plus tard. Ron, quand on vient au codage et qu'on fait référence au kit de carte, je pense que ce qui se passe dans cette nouvelle version d'I West, c'est que le storyboard insère automatiquement la carte pour nous, donc on n'a pas vraiment de crash. D' accord, mais on va devoir utiliser ce kit de carte. Enfin, nous allons juste l'exécuter la seule fois dans notre iPhone s e juste pour être sûr que tout fonctionne. Donc, lorsque vous ajoutez des frameworks, des kits et des choses, c'est toujours une bonne idée de l'exécuter, pour vous assurer que cela fonctionne, car il est beaucoup plus facile de trouver un dollar lorsque vous changez une chose, alors si vous avez changé à cinq ou dix choses, parce qu'alors vous devez revenir en arrière et essayer tout un par un, qui est vraiment, vraiment douloureux. Très bien, donc nous avons notre carte qui fonctionne et vous pouvez dire quel pays je suis actuellement en Bulgarie. Ok, alors arrêtons de courir. Et ils passeront à la prochaine conférence où nous chercherons à obtenir des autorisations pour obtenir réellement notre emplacement 71. M10 3 Info: Maintenant, notre application est une carte que les humains Gavit nous devons exécuter cela sur les appareils qui peuvent afficher un emplacement. Donc on va mettre quelques éléments dans un fichier appelé Info P List, et je vais vous montrer où c'est dans une minute. Et ce fichier est inclus dans chaque application que vous créez. Et fondamentalement, c'est juste un fichier XML qui vous permet de définir divers éléments comme les paramètres utilisateur, si vous le souhaitez, si vous le souhaitez, ou d'utiliser la valeur par défaut que je ne devrais pas utiliser. Utilisez les valeurs par défaut. C' est une chose différente, mais juste des réglages. Et à l'intérieur de ce fichier, nous allons mettre en place quelque chose appelé les capacités nécessaires pour nous assurer que l'appareil sur lequel nous allons installer possède un GPS. S' il n'a pas de GPS, alors votre numéro ne sera pas téléchargeable sur l'APP Store. Ainsi, le magasin APP peut lire cette liste Info p et décider s'il doit afficher ce résultat à un utilisateur ou non. Alors on va rester dans la liste Info P. Nous allons voir comment nous avons demandé l'autorisation d'obtenir l'emplacement d'un utilisateur pour les suivre, car Apple est très chaud en matière de confidentialité. Contrairement à Android, je trouve Android un peu. Ils marchent la ligne entre la zone grise et ok, c'est que je ne suis pas content de la façon dont Android traite les autorisations. IOS. Je suis très heureux de la façon dont le fait parce que vous devez demander à votre utilisateur spécifiquement, je dois le faire pour cela. Ok, alors regardons modifier notre fichier de liste Info p à l'intérieur de nos projets à l'intérieur de notre dossier Projet . Tous ces fichiers que nous avons vu auparavant à Delegate View Control of Maine storyboard assets yada sur le dernier, ou quelque part dans ce mix est info dot liste p, et quand vous cliquez dessus, il vous montre une liste des éléments, vous avez donc une liste de propriétés d'information. C' est ce que P list signifie la liste des propriétés d'information et cette construction ou chaînes. Donc, il stocke des variables comme vous pourriez les connaître. Les tableaux de Julian, etcetera, et à l'intérieur de chacun de ces paramètres, nous pouvons spécifier certaines choses qui sont l'appareil doit avoir s'il utilise aller installer notre application. Donc, si nous passons aux capacités requises de l'appareil, cela semble contenir le réglage GPS, et nous avons un article non appelé frais de bras. Sept. Qu' est-ce que ça veut dire ? Eh bien, cela fait simplement référence au processus de type qui sont des utilisateurs de l'appareil. Donc, évidemment, nous voulons garder ça là-dedans, et vous ne devriez jamais supprimer aucun de ceux-ci sans savoir exactement ce que vous faites. Ok, dit que nous voulons ajouter une autre propriété à cela. Donc, ce que nous allons faire est si vous passez la souris sur ces éléments là des petits avantages et inconvénients qui viennent pour que nous puissions cliquer sur le plus sur le tableau. Et maintenant, nous avons l'article pas maintenant de la mémoire. Je ne pense pas que cela importe l'ordre de ces choses parce que le magasin APP les traite toutes toute façon. Donc l'article non. Ce dont nous avons besoin, c'est le GPS et appuyez sur Entrée. Et cela crée un autre élément. De quoi d'autre avons-nous besoin ? Eh bien, nous avons besoin de localisation, services de tiret et de frapper Entrée. Maintenant, nous avons nos articles pour les services GPS et de tableau de bord de localisation, et vous pouvez trouver ces éléments dans la documentation du développeur Apple. Si vous n'êtes pas sûr de quoi écrire parce que c'est juste une chaîne, il n'y a pas de complétion automatique ici. Ils supposent juste que vous allez regarder sur Internet et découvrir quelles sont ces positions . Alors, qu'est-ce que ça veut dire ? Ce que cela signifie avec ces deux éléments, nous ne pouvons pas installer sur des appareils qui n'autorisent pas un emplacement . Maintenant, si je me souviens de la mémoire, chaque appareil IOS fait la localisation via WiFi, mais certains d'entre eux n'ont pas réellement GPS, donc celui-ci va les empêcher de l'installer. Nous pourrions effectivement supprimer GPS, et ensuite vous pourriez l'installer sur des appareils WiFi uniquement. Probablement. Vous vous sentirez libre de le tester si vous le souhaitez. Mais en l'état actuel, on boit juste des droits GPS. On a ça en cours d'exécution. Et comme d'habitude, on frappe le jeu. Nous nous assurons qu'il fonctionne et qu'il fonctionne sur notre sim. Et la raison pour laquelle je cours sur le même maintenant aussi est de vous montrer que vous pouvez réellement avoir un emplacement dans votre simulateur. Donc je veux dire, actuellement, il sait dans quel pays je suis. Donc, évidemment, il y avait une sorte de large niveau ah, emplacement qui se passe ici, mais le simulateur vous permet également de définir votre emplacement. Maintenant, où était-ce ? Je crois que c'était du matériel peut-être ? Pas de débogage, pas de fenêtre ? Non. Il y a quelque part où vous pouvez réellement définir votre emplacement. On va devoir le retrouver. Je pense que j'ai juste des programmeurs aveugles ça n'importe où. Donc, fondamentalement, votre appareil, votre simulateur a un emplacement dessus. C' est bien, mais ce n'est pas encore prêt à utiliser l'emplacement. Vous devez toujours demander la permission. Alors arrêtons ça de courir. Et bien sûr, nous avons aussi la permission dans l'info il liste, comme je l'ai dit précédemment. Maintenant, heureusement, fermons ce tableau. Heureusement, dans la liste des propriétés d'information, nous pouvons frapper plus, et nous obtenons une belle liste déroulante de tous les éléments disponibles pour nous, ce qui est très pratique. Donc la première chose dont nous avons besoin, c'est la vie privée. Si vous faites défiler vers le bas, il y a beaucoup de confidentialité et nous voulons l'emplacement lors de l'utilisation. Il y a quelques éléments de localisation là-bas, mais nous voulons juste utiliser l'emplacement lorsque l'utilisateur utilise l'APP. Vous pouvez également demander un emplacement lorsque l'utilisateur n'utilise pas l'application ou un emplacement de niveau large . Lorsque deux utilisateurs lorsque l'APP est en arrière-plan tout un tas de propriétés différentes. Mais c'est là que tu le mets maintenant. Qu' est-ce que ça demande ? Je veux dire, code X qu'on obtient. Il nous demande une description et ceci si nous double-cliquez sur la section de valeur va orteil . Dites à l'utilisateur pourquoi nous avons besoin de l'emplacement, et c'est une bonne chose à faire. Donc je vais dire que votre localisation aide. L' APP indique où vous avez Dean. Nous n'envoyons pas les données ailleurs ou quelque chose comme ça. Il est toujours bon de rassurer vos utilisateurs. Ou peut-être que nous ne recueillons pas. Les données sont bonnes pour rassurer vos utilisateurs que vous n'utilisez pas leur emplacement pour des moyens méchants parce que personne n'aime être pris au piège. Attirer. Ok, donc maintenant on a ça, c'est bon. Et dans la section suivante va examiner comment nous demandons réellement la permission. Donc en soi, cela ne fait rien. n'y a pas de code derrière ça. Nous devons demander manuellement la permission. 72. M10 4 Asche pour la permission et à l'exposition d'un lieu: Maintenant, nous pouvons passer à autre chose et demander la permission de nos utilisateurs. Donc, une petite fenêtre apparaîtra pour dire, je voudrais votre emplacement pour la raison suivante une fois que nous aurons cette autorisation, nous pouvons alors montrer l'utilisation d'un emplacement actuel sur la carte. Donc, si vous vous souvenez, nous avons défini notre emplacement de confidentialité de la liste Info P lors de l'utilisation de la description. Et nous en avons besoin pour terminer les prochaines étapes de nous assurer que vous avez que sinon ouvrir le code X et voyons comment c'est fait. La première chose que nous devons faire est d'ouvrir notre storyboard et de relier nos cartes. Vous virez l'assistant éditeur. C' est le haut, droite, rappelez-vous, à droite, rappelez-vous, et nous devons lier cette vue de carte à notre contrôleur de vue avec contrôle, cliquez et faites glisser et déposez-le dans le haut quelque part. Et appelons. Il y a quelque chose d'évident comme une vue de carte juste comme un point de vente. Ok, on peut fermer l'éditeur et retourner à notre fichier de contrôleur de vue. Donc, nous avons une vue cartographique. Ok, donc c'est tout maintenant, la première chose que nous avons une erreur ici la semaine peut seulement s'appliquer à Ouais, ouais, Yada. Oh, tout d' abord cette utilisation de type non déclaré M k. Matt View. Qu' est-ce que ça veut dire ? Eh bien, il ne sait pas de quoi vous parlez quand vous dites « NK map view ». Et si vous vous souvenez, nous avons apporté ce cadre de kit de cartes et nous l'avons introduit pour cette raison, afin qu'en haut nous puissions l'importer pour l'utiliser. Et il devrait automatiquement compléter au kit de carte. Donne-lui juste une seconde. Et maintenant tout fonctionne. Maintenant, je veux juste courir quelque chose là-bas. Si je commente cela ou plutôt avec ce commentaire sur ceci. Parfois, dans la programmation, vous obtiendrez des erreurs cryptiques comme je veux dire, cette utilisation du type non déclaré. Eh bien, nous savons comment réparer ça. Mais faible ne peut être appliqué qu'à blah bla, et vous devez faire attention à laquelle d'entre eux vous adressez en premier, parce que s'adresser à un fait généralement disparaître le reste d'entre eux. Donc, vous devriez toujours traiter le plus simple et le plus évident, et dans ce cas, c'est nous devons importer le kit de carte, et quand vous faites cela, les autres erreurs ont tendance à disparaître. Donc, avec des erreurs n'est pas seulement le feu et oublier son penser à l'époque et d'aborder la chose la plus évidente. Ok, dit, qu'est-ce qu'on a à faire ici ? Eh bien, nous voulons montrer un emplacement, donc nous devons obtenir certaines de ces données à partir des classes de localisation et en particulier, nous allons hériter d'un gestionnaire de localisation Delicate. Expliquez ce que cela signifie dans une minute, mais tout d'abord, nous allons en hériter. Deux sont vus contrôleur afin que nous puissions mettre des virgules et nous pouvons hériter de l'emplacement C l et nous voulons délégués de gestionnaire. Donc maintenant, si vous n'êtes pas familier avec cela, vous pouvez en fait hériter deux classes à l'intérieur de votre classe ou deux ou plus autant que vous souhaitez, vraiment ? Tant que le nom, les espaces et les choses ne s'affrontent pas. Droit ? Donc nous avons que nous sommes prêts à montrer l'emplacement. Maintenant, nous avons besoin du gestionnaire de localisation lui-même. Donc, laissez le Gestionnaire de localisation égal à CL gestionnaire de localisation, et cela va juste passer au système IOS et dire que je dois créer un manager parce que je vais faire des trucs de mappage juste alors dans le code, à notre avis, n' a pas chargé. Nous allons faire un peu plus de poids lourd ici. Tout d'abord, le gestionnaire d'emplacement est une sorte de framework de niveau IOS qui se passe en arrière-plan, et ce qu'il fait est quand il se met à jour lui-même. Il dit qu'il envoie un message à votre rap et dit, je veux vous donner une mise à jour pour tout ce qui se passe. Maintenant, votre application a besoin d'un endroit où elle traite cette mise à jour et que quelque part se trouve actuellement dans ce contrôleur de vue. Alors, comment nous définissons cela est que nous disons que les délicats sont égaux à soi. Donc, nous allons déléguer ce travail cette réception du message à ce contrôleur de vue actuel ou à cette classe actuelle. Ok, donc tu ne comprends pas que c'est bon. Mais il suffit de rechercher sur Google navigateur Google pour les délégués et de lire un peu. Ça prend du temps à comprendre, mais tu y arriveras tout de suite. Nous avons notre directeur de localisation. Nous devons vraiment demander l'utilisation. Donc, faisons en sorte que le gestionnaire d'emplacement ne demande pas d'autorisations lors de l'utilisation, vous remarquerez que vous pouvez demander toujours autorisé pour le seul emplacement, etc. Donc nous avons défini cette autorisation. Rappelez-vous, nous n'avons pas dit les autres autorisations. Si vous voulez utiliser les autres versions de la demande d'autorisation. Vous devez définir leurs descriptions pertinentes dans la liste P sinon rien ne se passera. Et ils ne seront pas d'indices et d'ex coat. C' est assez ennuyeux. Bug. Droit. Une fois que nous aurons cela, nous allons dire à notre responsable de localisation de commencer à mettre à jour l'emplacement. Ok, donc pour le moment on a juste l'endroit. Vous remarquerez que nous n'avons pas réellement utilisé cette vue cartographique, qui est plutôt inutile parce que nous devons faire quelque chose là-bas. Donc ce que nous allons faire, c'est que nous allons déclencher ces demandes d'autorisation de l'utilisateur , et quand ils l'accordent, alors nous allons déclencher une fonction différente, qui est de maintenir a changé l'état d'autorisation ou a modifié l'autorisation. Dans ce cas, si vous regardez ici, il nous dit que cela vient du gestionnaire de localisation. Et si vous regardez juste au-dessus, il dit dit aux délégués que le statut d'autorisation de l'application a changé. Alors rappelez-vous ce que j'ai dit quand vous définissez les choses en tant que délégué, vous dites au système IOS que c'est là que vous devez revenir avec ces données ou qu' elles disent le kit de carte. Où revenir avec ces données ? Donc, quand cela changera, il reviendra à notre code et dira, Oh, toute cette classe Le délégué et moi devons trouver l'autorisation a changé et puis à l'intérieur d'ici, il exécutera n'importe quoi code dont vous avez besoin. Donc c'est une façon très propre de faire les choses. Je veux dire, vous savez, très ancienne façon de programmer serait d'exécuter ceci et ensuite d'avoir une sorte de code et parenthèses que vous suivriez ensuite. Mais la façon dont il est actuellement mis en place avec des langages de programmation modernes, c'est très propre. Ok, donc ça se déclenchera quand on changera. Maintenant, je vais vous présenter un nouveau concept appelé Dieu. Maintenant, je me garde contre une sorte d'éventualité qui se produit, et cette éventualité je vais appeler statut si le statut de garde, si le statut est égal à point autorisé lors de l'utilisation, alors nous allons bien. Donc ce que je dis c'est comme si c'était un garde aux portes. Fondamentalement, cela signifie que si le statut est autorisé lors de l'utilisation, alors tout va bien. Si ce n'est pas le cas, alors il va lancer cette autre boucle pour cette autre partie de notre manteau, pas une boucle. Donc nous vérifions juste que c'est réellement autorisé. Maintenant, Ici, vous feriez généralement une boîte de message pour utiliser un pour activer l'emplacement, et je vais expliquer ce que cela signifie plus tard. On ne va pas faire ça parce qu'on est juste en train de se développer ici. Alors nous allons imprimer un message à nous-mêmes et dire l'emplacement. Oups. Non activé. Et puis nous reviendrons. Vous devez retourner, régler, sortir de cette fonction, et il n'ira nulle part ailleurs. Mais si le Dieu laisse cela autorisé quand il est utilisé à travers, alors nous allons nous imprimer un message. Emplacement froid activé. Et maintenant, nous pouvons commencer à mettre sur notre carte affichage des points de vue cartographique. L' emplacement de l'utilisateur est vrai. Alors allez-y et montrez l'emplacement actuel. Maintenant, faisons ça. Donc c'est une configuration assez compliquée pour montrer une carte simple, non ? On y va. Snow, on sort, pop up. Où étais-je en fait localiser tout en utilisant l'acte ? Et puis il nous donne la description que nous lui avons donnée afin que nous puissions cliquer sur autoriser sur ce sur, et nous n'avons actuellement rien montré. Droit. Donc ce qu'on va faire, c'est qu'on va fermer ça à notre changeur de tâches. Si vous double-cliquez sur le bouton d'accueil, vous pouvez le faire glisser comme vous pourriez être habitué à le faire. Ouvrons à nouveau notre place. Voyons maintenant si nous pouvons obtenir notre carte lorsque nos cartes fonctionnent. Mais il n'y a pas d'endroit maintenant. Si vous allez à une fenêtre ou plutôt à un emplacement de débogage, vous pouvez réellement définir où vos emplacements devraient être. Donc, au moment où il est réglé sur un emplacement personnalisé bizarre. Si vous maintenez votre ancienne touche enfoncée, vous obtenez trop peu de choses de doigt comme si vous utilisiez deux doigts sur l'écran, puis cliquez sur votre souris et vous pouvez faire glisser pour effectuer un zoom arrière sur la carte de votre simulateur. Ok, donc on va juste faire défiler le monde et voir si on peut trouver exactement où on . Je soupçonne que nous serons plongés quelque part aux États-Unis et au siège d'Apple, que vous pouvez, en fait, définir un endroit comme pomme. Si vous le vouliez, ce que je crois c'est là qu'il est déjà, sorte que vous pouvez réellement zoomer, maintenez l'ancienne touche enfoncée, cliquez et faites glisser, et vous devriez être en mesure de zoomer ou vous pouvez double-cliquer. C' est la même chose que de taper deux fois sur un certain endroit sur votre appareil à écran tactile. Nous avons donc une vue sur la montagne à San Francisco. Ok, donc c'est là que Cupertino d'Apple et c'est notre emplacement. Travaillant maintenant, juste avant de partir, En fait, vous pouvez définir vos propres emplacements par un emplacement de débogage, aller à l'emplacement personnalisé et vous pouvez définir n'importe quel nombre que vous aimez en latitude et longitude 45 par 45 Mais vous allez remarquer, et il faut du temps pour que ce point disparaisse. Quand c'est le cas, on peut zoomer et aller nous trouver. Donc, cela pourrait être la base d'un bon jeu. Je pense, tu sais, devine où tu es. Ou 1ère pour me trouver un truc de type. Où est 45 par 45 ? Je devrais prendre les paris de vous. Tu peux me dire où ça se passe. Oh, ça va prendre un fou à le faire à l'écran comme ça. Donc je ne vais pas m'embêter à le chercher. Je vous laisse jouer avec ça. Ok, donc nous sommes triés maintenant nous pouvons montrer notre position sur cet écran 73. M10 5 Des coordonnées de localités de localisation: Maintenant que nous avons une carte en cours d'exécution et que notre emplacement est affiché dessus, Ce que nous devons faire est de retirer les coordonnées de latitude et de longitude afin que nous puissions peut-être sauvegarder cet emplacement ou manipuler d'une autre manière. Maintenant, aussi, dans cette petite section, nous allons tomber dans un bar, et nous allons juste épicer les choses juste un peu pour que ça ressemble à une bonne application. Alors allons-y maintenant. La première chose que nous allons faire, c'est, comme d'habitude, les trucs graphiques. Tu devrais savoir que si tu me connais maintenant, ça va baisser un peu cette taille pour qu'on puisse la voir maintenant. Des trucs biographiques. Je veux dire, nous avons besoin d'un bouton sur notre orteil d'écran, en fait enregistrer où nous avons vu parce que l'application est appelée. Où étais-je ? Alors, où pensez-vous être un bon endroit pour le mettre ? Eh bien, si vous êtes un androïde, vous auriez ce qu'on appelle un bouton d'action flottant. Ah, Fab, qui serait assis en quelque sorte ici avec un rectangle mis en évidence, je pense que vous pouvez le déplacer aussi, mais il est assis sur le côté sur IOS. n'y a pas de telle chose, alors on doit faire un bouton maintenant. Bien sûr, on pourrait juste retirer n'importe quel vieux bouton et le déposer quelque part. Mais ce ne serait pas très bon que je dessine. Ce que nous devons faire est de nous en tenir à la façon dont Apple et IOS nous dictent de faire des choses pour que les utilisateurs ne se sentent pas dépassés par différents. Vous êtes pour ainsi dire. Donc ce qu'on va faire, c'est qu'on va simplement tomber dans une barre de navigation. Et cela vous indique que cela fournit un mécanisme pour l'affichage de la barre juste en dessous de la barre d'état . Maintenant, si vous vous souvenez avant, si nous avons un contrôleur de navigation, si je le fais glisser et le maintiens ici, ça ouvre une route à vous contrôler et assez de contrôle. Et nous avons déjà vécu ça avant. On ne veut pas aller si lourd avec ce qu'on fait. Nous voulons juste un bouton pour que nous puissions sauter ça et nous pouvons juste prendre une barre et nous pouvons mettre manuellement un dans le haut de notre écran pour que nous l'ayons. Alors positionnons ça. Donnons-lui une contrainte sur zéro de tous les côtés. Assurez-vous que les marges sont désactivées parce qu'il voulait remplir l'écran. Et nous avons là. C' est maintenant que la vue cartographique est actuellement en dessous. C' est bien, parce que la vue cartographique est par définition dynamique, donc elle peut s'asseoir en dessous parce que nous pouvons la déplacer sans doigt. Donc joli petit raccourci pratique là. Ok, maintenant nous exécutons toujours ces choses quand nous ajoutons de nouvelles fonctionnalités que nous ne connaissons pas sur ses développeurs. Simplement, bien sûr, pour m'assurer que ces caractéristiques fonctionnent, je veux m'assurer que nous pouvons voir comment barre naff. Et bien sûr, je ne vois pas de carte. Aujourd'hui, nous avons notre bar naff en haut. Maintenant, c'est un peu écrasé en haut, mais je n'aime pas beaucoup ça. Alors arrêtons cette course et cliquons sur le nab notre propre et nous pouvons changer ses contraintes en se dirigeant vers cette petite icône de règle en haut, non ? Nous pourrions faire défiler vers le bas et voir ce que la sauce de contrainte nous voulons l'espace supérieur pour super voir. On peut cliquer sur Modifier, et on peut lui donner un petit écart de, disons, 10. Et si nous lançons ça ça devrait résoudre notre problème. Maintenant, je devrais dire normalement que vous auriez effectivement un contrôleur de navigation dans votre application. Vous n'aurez pas seulement 1/2 bar, parce que regardez ce qui se passe en haut Ici, nous avons cette horrible petite ligne si bien, chanteurs, je suis censé vous enseigner la bonne pratique. Eh bien, en fait, fais ça. Donc on va enlever cet horrible maintenant, il est loin. Et on va frapper dans le dos. Donc, il est parti. Nous allons laisser notre vue de carte telle qu'elle est, et à la place nous allons sélectionner notre contrôleur de vue, Aller à l'éditeur dans le lit maintenant. Contrôleur. C' est maintenant qu'on a assez de contrôleur et on a cette barre là-haut. Et bien sûr, nous pouvons sélectionner ce contrôleur de vue. Pouvons-nous changer l'ison du clave ? Non, on ne peut pas. On devrait pouvoir le faire. Sélectionnez le contrôleur de vue. Ah, il y a notre titre pour que nous puissions le faire dans les attributs, pas les attributs, c'est ça. Désolé, les gars, il est tard et j'ai eu des attributs de café, inspecteur. Donc, disons simplement mes emplacements et cela ne montre pas pourquoi IOS Pourquoi, c'est parce que nous devons réellement sélectionner cet élément jamais, puis sous les attributs. Nous avons le titre disponible. Tu dois me pardonner pour celle-là. Parfois, vous le perdez en tant que développeur. Droits. On a mon emplacement en revenant à la chose originale qu'on voulait faire. Nous voulons créer un bouton pour obtenir nos coordonnées de localisation et les enregistrer. Bien sûr, la première étape est un bouton, mais ce ne sera pas un simple bouton. Il s'agit d'un type spécial appelé un élément de bouton de barre, et cela va sur la barre à l'écran des heures supérieures. Alors ne mets pas de boutons là-haut. Mettez les éléments de bouton de la barre. Ensuite, cliquez et faites glisser et vous remarquerez qu'il fait de l'espace de chaque côté. Maintenant, normalement, nous mettrons le focus principal sur le côté droit parce que le côté gauche contient le bouton de retour . Si nous naviguons, ok, maintenant, cet article, si nous cliquons dessus, nous pouvons lui donner un style. On peut lui donner un élément système. Donc, ces icônes que IOS fournira pour nous, nous pouvons cliquer ajouter, et il nous donne ce style IOS agréable sur l'icône plus. Ok, donc c'est en fait un bouton juste une sous-classe spécialisée de mais et je le crois. Il s'intègre bien dans ce tiroir supérieur. Maintenant, nous devons le sortir. Alors ouvrons notre assistant rédacteur en chef. Laissez-moi le sortir de cette petite image dro click et nous allons déplacer cela un peu vers le bas. Ça l'a changé en action. Et appelons ce bouton sécurisé cliqué. Super. Alors que tout fonctionne bien. Revenons à notre contrôleur de vue et voyons ce qui se passe ici. Droit. Donc la première chose qu'on va faire est d'obtenir les coordonnées de l'endroit où on pour sauver la position. Laissons donc les coordonnées égales à et vous auriez pu deviner ceci. On a besoin de Teoh référencer le responsable de l'emplacement, et ensuite on retire l'emplacement du responsable de l'emplacement, mais c'est facultatif. Donc on va poser une question à côté de lui, et ils allaient obtenir les coordonnées si un endroit existe. Droit ? Alors maintenant, nous avons ça. Maintenant, nous devons vérifier que nous portons ont notre latitude et notre longitude hors de notre position. Donc, nous disons que si la latitude est égale aux ordonnées co, nous venons de sortir, ce qui est la latitude point facultative. Alors on peut faire quelque chose avec ça. Et qu'est-ce qu'on va faire ? Eh bien, c'est juste des impressions sur notre console, la latitude comme plus la latitude des cordes. Rappelez-vous, nous sommes en train de changer de force qui sait comment imprimer. Maintenant, nous devons faire la même chose pour les tournages plus longs. Copions ça. Il est coller et appelons cela long et changez les différents éléments. Maintenant, juste une note de côté. En tant que développer, vous devez vous méfier du copier-coller car parfois vous pouvez réellement manquer des bits de code. Et si vous les manquez, il imprime la mauvaise variable ou quelque chose comme ça. Et il faut des âges, absolument des âges pour déboguer. Qu' est-ce qu'une erreur vraiment simple ? Donc, si vous copiez coller, passez par chaque mot parce que cela vous fera gagner du temps à la fin, n'est-ce pas ? Donc nous avons notre lassitude sont plus longues toot. Laissons le faire fonctionner. Et j'espère qu'il sera imprimé à notre consul. Lorsque nous cliquons sur le bouton Enregistrer heures. Il suffit de déplacer ça. Vous avez l'emplacement activé. Et si je frappe plus là, nous avons la dernière longitude étudiante et souvenez-vous, nous sommes repartis à l'intérieur de notre emplacement de débogage emplacement personnalisé. Donc si on change ça à 10 par 10 et qu'on coupe. De plus, nous avons 10 par 10 et cela fonctionne naturellement pour tous les autres endroits. Même si parfois j'ai découvert qu'il était un insecte d'ardoise. Ils ont cliqué sur pomme là-bas, mais mon emplacement est encore 10 ce qui est très étrange, très, très étrange. J' ai l'air de me rappeler que ce bug venait de l'année dernière. Essayons un autre endroit, comment ça marche. Donc, un petit endroit dans un petit bug dans l'emplacement d'Apple. Ce n'est jamais un droit d'esprit. Nous avons arrêté cette course, et c'est ainsi que nous retirons la dernière longitude étudiante et aussi comment nous ajoutons un bouton de barre U I , qui est ce qu'on appelle ce petit plus. 74. Les coordonnées de localisation de de M10 6 avec des codes d'utilisateur: Maintenant que nous avons notre emplacement d'utilisation dans cette longitude étudiante, nous avons besoin d'un moyen de le sauver pour pouvoir l'utiliser un peu plus tard. Donc, tout d'abord, dans cette section, nous allons créer une classe de modèle de données simple. Cette classe contiendra les points visités que nous avons aussi bean, et va également regarder comment nous enregistrons ces données les chaînes de l'année dernière et la longitude dans valeurs par défaut de l'utilisateur, ce qui est plus ou moins le moyen le plus simple de données d'histoire dans IOS. Et c'est une excellente option si votre application est très simple. Alors voyons à quoi ça ressemble. La toute première étape consiste à créer notre classe de modèle de données. Allons donc à notre projet Nouveau fichier. Nous allons créer un certain fichier ensuite, et c'est cool. C' est quelque chose d'évident. Je veux dire, on pourrait appeler ça des points visités. Je suppose que c'est vrai. Ou on pourrait appeler ça. J' essaie juste de trouver un meilleur nom ici. Peut-être que vous pouvez penser à un meilleur nom parce que nous pourrions vouloir utiliser cette classe pour d'autres éléments qui ne sont pas seulement des points visités, mais des points à visiter dans le futur. Donc peut-être que nous allons appeler cette classe quelque chose comme point de localisation pour la rendre plus générique afin que nous puissions l'utiliser pour d'autres points. Ok, alors créons la classe elle-même. Ouverture du point de localisation. Fermez nos accolades. Et la première chose que nous avons est une variable appelée latitude, que nous allons voler comme une corde dans ces kits. Maintenant, je crois qu'il sort avec une sorte de numéro, et quand on l'a pressé auparavant. Mais nous voulons stocker ceci une chaîne de sorte que lorsque nous utilisons nos années de valeurs par défaut affaiblir simplement stocker une chaîne. Nous pouvons changer cela plus tard si nous découvrons que utilise les valeurs par défaut, nous permet de stocker d'autres éléments Jusqu'à présent Toot est une chaîne de type. Et puis, bien sûr, nous devons initialiser cela à l'intérieur. Et d'abord, on va passer dans une latitude et ensuite, bien sûr, une longitude. Et nous l'avons là. Et puis on va dire « points de soi ». La latitude est égale à ça. Et la longitude auto-ancrée est égale à Long qui va initialiser notre point de données. D' accord. Et comme je l'ai dit, ce n'est pas forcément une chaîne. Je pense que vous pouvez réellement stocker des numéros et des valeurs par défaut de l'utilisateur. Je ne les utilise pas si souvent parce que mes AP ne sont plus très simples. Mais nous allons laisser ça comme une chaîne pour l'instant. En ce moment, nous avons notre classe de base. Nous devons créer la classe qui obtient les données dans et hors de nos valeurs par défaut de l'utilisateur. Alors créons, comme toujours, un nouveau fichier. Et appelons ce magasin de données par défaut de l'utilisateur. Vous pouvez simplement l'appeler magasin de données si vous le souhaitez. C' est aussi une option. Ok, alors appelons ce cours. Utilisez le magasin de données par défaut. De quoi avons-nous besoin ici ? Eh bien, festival. Nous avons besoin d'une fonction qui obtient les valeurs par défaut de l'utilisateur à partir du système Iowa pour notre application. Donc, c'est juste un peu d'espace sur le disque de nos appareils que nous pouvons écrire des fichiers sur lesquels sont essentiellement des fichiers texte. Mais on n'a pas à s'inquiéter de tout ça parce que j'étais des résumés tout ça pour nous. Créons une fonction à yes, les valeurs par défaut, et cela va renvoyer une instance hors valeurs par défaut de l'utilisateur. Ok, alors, pour le mettre, renvoyez-le . Nous allons retourner, utiliser les valeurs par défaut ne sont pas des normes. Donc, toutes ces étoiles est, va et obtient l'objet par défaut de l'utilisateur pour nous afin que nous puissions l'utiliser. Droit ? Donc maintenant, nous avons réglé ça. Nous avons besoin de quelque chose d'autre, qui est une fonction à stocker, peut-être le point de localisation. Et, bien sûr, nous allons passer certains éléments pour cela principalement, nous allons passer dans un point de localisation, qui est, bien sûr, de type point de localisation que nous venons de créer. Ok, alors je suis sorti. On va sortir les valeurs par défaut. Donc, disons que les valeurs par défaut sont égales à obtenir des dévouements. Maintenant encore une fois, vous pouvez vous demander pourquoi j'ai pris toutes ces lignes juste pour retourner une ligne de code alors que j' aurais pu juste utiliser cette ligne de code ici, mais c'est tout simplement une bonne programmation Pratique deux choses distinctes comme ça dans un fonctions, comme vous pouvez gérer parce que plus tard, croyez-moi, il paie des dividendes. Droit. Nous avons donc nos valeurs par défaut. Comment on a volé ? Eh bien, par défaut fonctionnent en stockant une valeur de quelque chose pour une clé, donc leurs paires de valeur de clé. Et quand vous voulez les obtenir, les valeurs reviennent, vous lui donnez la clé, et il crache la valeur des clés bien sûr. Un unique qui doit être unique afin que nous puissions définir une valeur. Et vous regardez les options que nous avons ici. La valeur peut être n'importe quel et pour la clé, qui est toujours chaîne. Ok, donc notre valeur va être des points de localisation avec la latitude des points en minuscules. Ensuite, nous pouvons avoir une clé complète, et nous pouvons mettre cela en latitude. Cependant, ce n'est pas un excellent moyen de stocker cette chaîne, car plus tard, vous devrez peut-être obtenir ces valeurs par défaut de l'utilisateur et vous allez écrire cette chaîne à nouveau. Et ça veut dire que tu l'as à deux endroits. Et cela signifie que vous avez un potentiel pour qu'un mauvais bug se produise si vous devez épeler un de ceux-ci . Alors créons ce qu'on appelle une structure. Je ne m'inquiète pas trop de ce qu'est une structure. Pensez-y comme une classe. Ce n'est pas correct. Mais pensez-y vaguement, c'est qu'on va appeler cette structure de clés de stockage et l'animal de compagnie. On n'a pas ces clés de rangement Ok, ouvrez et fermez nos accolades. Maintenant, le but de ceci est d'avoir un seul endroit où nous avons une clé de stockage cohérente pour ces noms de clés. Ok, donc je pense que j'ai déjà couvert quelque chose comme ça avec toi avant. En fait si statique laisser lattes stockés égaux à C'est un acclamé et nous ferons la même chose. Expliquez ce que signifie statique en une seconde. Stocké long est égal à Argh itude. Ok, donc c'est juste une déclaration de variable de base, non ? Et pour utiliser des clés de stockage, si vous aviez une classe, vous devez d'abord créer un objet à partir de la classe, puis vous pourrez accéder à ces clés. Eh bien, quand nous disons statique, ces propriétés appartiennent maintenant à la structure ou à la classe librement définie plutôt que à l' objet que vous créez à partir de cette classe. Ok, donc ne t'en fais pas trop pour l'instant. Si vous voulez aller chercher, il suffit de chercher statique sur Internet et la programmation ou quelque chose. Et peut-être y a-t-il de meilleures explications que je ne peux donner en ce moment. Ne vous inquiétez pas pour ça. Pour l'instant, cela signifie simplement que nous n'avons pas besoin d'initialiser quoi que ce soit les propriétés qu'il y a là pour que nous puissions utiliser . Droit ? Donc, revenant à notre clé, nous pouvons supprimer cela, et nous pouvons définir cela comme clés de stockage, docteur Stocké cas de latitude sont maintenant partout où nous pouvons utiliser le latte stocké. Et si nous voulons changer la clé parce que peut-être nous devons utiliser ce mot pour quelque chose d'autre valeur que nous stockons. Tout ce que nous avons à faire, c'est changer ici et tout fonctionnera. Ok, stockons maintenant la longitude en utilisant à peu près la même idéologie. Définissez la valeur, les points d' emplacement, les actions plus longues. Choisissez la clé. Les clés de stockage ne font pas de longitude. Ok, donc nous avons défini nos valeurs à l'intérieur des valeurs par défaut de nos utilisateurs. Il y a un autre pas, en fait les sauver pour cimenter le changement. Et c'est de faire les points par défaut synchronisés. Et quand cela se produira, tout sera stocké. La dernière étape que nous allons franchir est de revenir à notre point de vue, contrôleur. Et rappelez-vous, nous avons cliqué sur un bouton de sauvegarde. Eh bien, si nous sauvegardons le bouton si nous cliquons sur le bouton Sauvegarder frère, nous voulons un magasin, notre emplacement. Alors créons un emplacement. Donc nous avons nos coordonnées. C' est bon sur ce qu'on va faire ici. J' ai quelques notes sur ce que j'allais te montrer, mais j'ai changé d'avis parce que je pense qu'il y a une meilleure façon de le faire si on a ça. Et si on a ça, on peut les nicher. Et certaines personnes n'aiment pas trop imbriquer. Ça ne me dérange pas. Tant qu'il ne fait que deux ou trois niveaux de profondeur. Bien plus que ça, tu vas être confus. Mais dans ce cas, nous pouvons les ressentir. Donc si on a une latitude et ensuite si on a une longitude, on peut imprimer tout ce dont on a besoin. Maintenant, quand vous jouez avec une logique comme celle-ci, comme toujours, c'est une bonne idée de tester cela sur le simulateur et de vous assurer que votre logique est réellement correcte. Donc, nous devrions voir nos affaires encore imprimées quand nous cliquons sur Enregistrer. Donc quand j'ai frappé Plus, on l'a. Ça marche toujours. Ok, donc on va arrêter ça de courir ? Donc, si nous avons réussi à entrer dans cette partie de si nous sommes laissés, nous avons notre latitude et notre longitude. Qu' est-ce qu'on en fait ? Eh bien, créons un point de localisation. Points d'emplacement égaux à un point d'emplacement et cela nécessite les éléments suivants. Chaîne de latte longue. Donc on va couper ça. Je vais le coller ici et la même chose avec de la corde longue. Et on peut enlever ces empreintes. Nous n'avons pas nécessairement besoin d'eux en ce moment. Droit ? Donc on a notre point de localisation. Maintenant, nous voulons vraiment sauver ça. Donc, nous allons créer et vous utilisez les valeurs par défaut, magasin de données, ouvrir les crochets, les fléchettes et ce que nous voulons quand nous voulons stocker, emplacement, point, et tout ce que nous allons nourrir c'est le LP nous venons de créer. Ok, sauvegardez cela maintenant, avant de lancer ceci, revenons à notre magasin de données par défaut de l'utilisateur et dans les points de localisation de magasin hors pour synchroniser. Donnons-nous un petit prince pour qu'on sache ce qui se passe. Quelque chose comme des points de localisation stockés. Et si on veut, on peut tomber dans la latitude. Je ne sais pas ce qui vient en premier. Vous durez plus longtemps. Je pense que c'est la latitude plus et puis c'est créer un peu séparé pour eux. Classer le point de localisation Longitude qui est sûr. Et puis nous allons courir. Et maintenant, nous avons un petit message pratique. Retour vers nous est développeurs, afin que nous puissions voir ce qui se passe avec notre qui devrait apparaître ici. Il suffit de déplacer cela pour que vous puissiez déplacer les choses dans le code X assez facilement. C' est sympa et pratique comme ça. Allons frapper plus et nous avons stocké notre point de localisation juste là. Ok, donc tu peux commencer à courir, et on sait que ça marche ou on sait. On ne sait pas que ça marche. Nous savons que nous pouvons passer à travers ce bloc de code sans aucun problème afin que nous puissions l'imprimer . Nous ne savons pas nécessairement que quelque chose a encore stocké des haricots. C' est ce que nous allons faire la prochaine fois que nous allons regarder les choses stockées dans nos valeurs par défaut de l'utilisateur et l'extraire de là. 75. M100 7 avec un d'une étanche: accord, Nous sommes arrivés à la partie principale de notre application, qui est de montrer notre dernier emplacement sûr en utilisant une épingle une attention. Qu' est-ce que je veux dire par là ? Eh bien, nous aurons une carte affichée sur notre écran. Sont utilisables, ont leur emplacement peut-être affiché sur l'écran. Mais nous allons ajouter une petite annotation pour montrer où les utilisateurs ont enregistré leur emplacement précédent. Alors ils savent où c'est. Étaient également, bien sûr, aller chercher à obtenir les valeurs par défaut de notre stockage utilisateur. Donc, c'est une partie importante de ce processus pour Alors allons-y maintenant, Si vous vous souvenez, nous avons nos valeurs par défaut d'utilisation, fichier de stockage de données, et cela nous permet d'accéder à l'utilisation des défauts de la dette, puis placer des informations là . Tous extraire des informations. Donc, nous allons corriger la fonction qui obtient notre dernier emplacement. Donc quelque part à l'intérieur de cette classe ne correspond pas vraiment à la fonction consciente. Obtenez le dernier contact aujourd'hui emplacement, et cela va revenir. Bien sûr, un point de localisation, parce que c'est ce que nous avons créé précédemment pour cela. Maintenant, il est une petite chose. Et si nous essayons d'obtenir un emplacement sur son la première fois que vous exécutez l'application, et que personne n'a encore appuyé sur la touche de sauvegarde. Nous n'obtiendrons rien de nos valeurs par défaut de l'utilisateur. Donc, cela doit être facultatif. Il pourrait retourner quelque chose, mais il pourrait ne rien rendre. Il pourrait retourner quelque chose, Ok, maintenant, nous allons d'abord obtenir les valeurs par défaut, le N émet les valeurs par défaut, ce qui est juste obtenir les valeurs par défaut. Et c'est la fonction que nous avons créée ici. Bien sûr. Bon, de quoi avons-nous besoin ? Eh bien, nous devons retirer à la fois la latitude et la longitude se si nous allons nous assurer que nous obtenons une lassitude est égale aux valeurs par défaut. Ne pas maintenant, lorsque vous tapez des fléchettes, faites un défilement pendant une minute. Vous pouvez en fait obtenir des doubles si vous le souhaitez. Vous pourriez avoir des chars. Et bien sûr, vous pouvez obtenir des ficelles. Désolée, ça s'en va. Ne fais pas de ficelle pour qu'on puisse avoir des cordes. Nous pouvons obtenir des flotteurs, donc utilisez la valeur par défaut. Cela nous permet de stocker ces numéros. On va juste le garder comme une corde pour le moment. Mais bien sûr, si vous le vouliez, vous pourriez changer toute cette implémentation où vous changez cet emplacement. Pointez le dernier tir dans un double. Bien sûr, vous devez changer de classe. Donc, en fait, laissez-le comme il est pour l' instant, non ? Donc, nous voulons sortir une chaîne pour une clé particulière Maintenant. Quelle clé ? Eh bien, cela vient de notre structure en haut ici dit. Les clés de stockage ne stockent pas la latitude. Ok, alors oublie ce monde. Bien. Alors vérifions aussi si on peut se faire mâcher plus longtemps de la même manière. Donc, par défaut, la chaîne ancrée pour les clés de stockage de clés. C' est long. Donc, si nous pouvons obtenir cela, nous sommes tous prêts à partir, et nous pouvons maintenant retourner un nouveau point de localisation à partir de cette fonction. Alors retournons un point de localisation avec notre lassitude et, bien sûr, sont plus mâchés. Ok, maintenant il nous dit que nous avons toujours un retour manquant étroit dans un respect de la fonction de retour point de localisation optionnel. C' est parce que si cette section échoue, alors ce que nous allons faire est de retourner No. Donc ça ne mettra rien dans les options quand on le vérifiera. Ils ne seront pas vraiment un point de localisation. Maintenant, nous n'avons pas à nous soucier de nous rappeler que c'est un code ex optionnel, est assez bon et rapide en ce sens qu'il nous rappellera quand nous allons de l'avant et utilisons ceci à notre avis. Contrôleur. Donc c'est ouvert, vous pouvez les enfants voir comment ça fait ? Ok, maintenant en vue a été chargé. On pourrait le tirer là. Mais vous devez vous rappeler, vu il Load n'apparaît en fait qu'une fois qu'il ne se déclenche qu'une fois que la vue se charge, si de vous prend, est retiré de l'écran, puis réapparaît View do load n'est pas réellement appelé à nouveau parce que c'est déjà là. Il est déjà chargé. Ok, donc peut-être voir qu'on pourrait remplacer autre chose. Et ce quelque chose d'autre est appelé vue Est apparu Maintenant chaque fois que vous allez loin d'une vue actuelle et revenir vue apparaissait, devient froid. Donc à chaque fois qu'il réapparaît, il reçoit une citation pour qu'on puisse l'écrire ici si on le voulait. Mais je pense qu'une meilleure option est en fait, tout d' abord, juste de créer notre propre fonction, qui est annotate rencontré pour quelque chose annoter en dernier. Ça s'appelle le dernier endroit. La première chose qu'on va faire est d'essayer d'obtenir nos coordonnées précédentes. Donc, si nous disons que les coordonnées enregistrées sont égales à j'utiliserai le magasin de données par défaut. Et qu'est-ce qu'on va en sortir ? Au lieu de cela, elle l'a mangé en premier Et puis nous allons obtenir dif pas obtenir les valeurs par défaut. On va trouver le dernier endroit. Donc, s'il est possible de l'obtenir, alors nous allons faire ce que nous devons faire maintenant en revenant à ce que j'ai dit à propos de mettre des options dans votre propre code. Si je supprime cela et que je supprime cela, voyons ce que le code X nous dit. Il dit qu'il n'est jamais utilisé. C' est très bien. Maintenant, si je disais point coordonné sûr et latitude Eh bien, remarqué que le code X met automatiquement dans ce point d'interrogation pour nous. Donc, il ne nous donne cette chaîne que si une coordonnée sûre existe, alors gardez cela à l'esprit. Ok, donc c'est comme ça qu'il manipule votre propre code selon ce que vous avez déjà mis dans. Donc, je viens de tout défaire là-bas, et je reste avec mon si laisser vérifier la fonctionnalité. D' accord. Maintenant, si nous devons mettre une annotation sur notre carte, nous avons d'abord besoin d'une annotation. Et c'est assez simple. Nous pouvons dire que l'annotation est égale à. Et quel est ce rhume ? Eh bien, cela vient d'une classe appelée annotation de point M K. Donc, les kits de carte annotation point. Ensuite, nous devons donner à cette annotation quelques directions comme sa latitude et sa longitude. Donc, l'annotation ne coordonne pas. Je pensais que la latitude est égale à et nous voulons obtenir notre latitude de points coordonnés sauvés. Maintenant, cela va lui donner un Eric ou un avertissement, si vous voulez, parce que nous essayons d'assigner une chaîne à doubler. Donc, avec le recul, il aurait été préférable d'avoir doublé tout le long et de le sauver de cette façon parce que nous n'avons jamais vraiment montré la force. Et en tant que programmeur, tu vas rencontrer ça assez souvent. Tu penseras que les choses devraient être d'une façon. Et quand vous obtenez réellement faire l'application en question, vous devrez changer les choses dans l'autre sens. Donc pour l'instant, je ne vais pas vraiment changer ça. Peut-être que nous allons mettre ça pour des devoirs. On va juste jeter ça comme un double et un point d'exclamation. Maintenant, cette explication signifie que je décompresse l'option. Donc je dis que cela peut certainement être changé en un double si ce n'est pas notre accident de pomme à ce stade juste quelque chose à être au courant. Ok, maintenant je vais copier ça, et je vais dans les mêmes quatre longitudes. Ok, maintenant les annotations. Lorsque vous appuyez sur eux, vous pouvez leur donner un titre. Et il vous montrera quelque chose pour que nous puissions définir l'annotation. Le titre de Doc est égal à Waas ici, et vous pouvez également leur donner un sous-titre, souvenez ? D' accord. Et enfin, une fois que nous avons configuré notre annotation, tout ce que nous avons à faire est ajouté à la vue cartographique qui suffit simplement à dire ajouter une annotation et à lui donner celle que nous venons de faire. Alors disons ça. Et puis allons frapper le jeu et le déposer dans la façon dont j'ai téléphoné à Simulator. J' ai fait une légère erreur là-bas. Je vais arrêter ça en cours d'exécution parce que j'ai créé une fonction. Je n'ai pas vraiment appelé ça comme un peu stupide de ma part. Donc ce que je vais faire pour l'instant, c'est que je vais mettre cela en vue, apparaîtra et je vais mettre annoter dernier emplacement. Donc, la vue a chargé des charges, puis la vue apparaîtra, se chargera après cela. Donc, l'ordre quand il s'agit de voir le contrôle, c'est assez important. Si vous voulez en savoir plus, allez chercher les cycles de vie de vos contrôleurs et pomme produit un joli petit diagramme qui vous indique ce que vous devez savoir. D' accord. Donc, permettez, si vous réinitialisez l'application, c'est-à-dire, puis nous allons zoomer pour avoir une idée de l'endroit où nous sommes réellement. Ok, donc nous avons actuellement cet endroit, n' est-ce pas ? Sauvegardons un emplacement. C' est plus, et c'est un 37. 33. Je ne pense pas que ce soit là où se trouve le truc bleu clignotant. Et c'est un bug ont rencontré avant dans ce. Je pense que 37 est quelque part ici, au Moyen-Orient. Mais de toute façon, ça n'a pas d'importance. Ce qu'on va faire, c'est appuyer sur le bouton d'accueil de notre simulateur. Lorsque nous revenons à notre application, notre vue réapparaît. Andi, Espérons que nous avons une annotation de pin quelque part. Non, nous ne le faisons pas. Ok, donc ce que je vais faire, c'est que je vais double-cliquer sur le bouton d'accueil et que je retourne à l' écran d' accueil, et on va relancer notre application. Je ne sais pas pourquoi ça n'apparaît pas. La vue apparaîtra ne se déclenche réellement. Mais on va vérifier ça, en fait, en fait, parce que je ne prends pas ma parole pour ça. Nous devrions toujours vérifier en tant que développeurs. Alors on y va. Maintenant, nous avons nos 37 37 ordonnées. Il les a retirés et il est mis une petite annotation, et si nous cliquons sur l'annotation ou appuyez dessus, il se développe et nous dit que nous étions ici. Et en attendant, il a toujours notre emplacement actuel à San Francisco. Ok, et bien sûr, si on va à l'emplacement de débogage, on passe à la coutume. Allons-y avec 30 parce qu'on sait à peu près où ça va être à 30. Voilà notre emplacement. Allons frapper. L' allocation Plus est sauvegardée en arrière-plan. Je vais juste double-cliquer glisser vers le haut pour quitter l'application. Je vais t'emmener où étais-je ? Et voyons si nous avons ce dont nous avons besoin. On y va. Donc, vous avez notre emplacement actuel sur un autre endroit. Et bien sûr, nous pouvons déboguer et rater notre petit point bleu loin. Mettons-en 32 et nous en avons un peu au Caire. C' était un bon oui, Mais bien sûr, vous avez vu que si nous frappons l'icône plus, notre annotation ne bouge pas réellement, ce qui ne craint pas et défait tout le point de l'application. Donc, dans la prochaine conférence, je vais définir votre peu de devoirs avec cette chose particulière à faire comme une tâche en déplaçant cette icône lorsque nous cliquons plus. 76. M10 8 Et la solution de Homework: il est temps de faire un peu de devoirs. Celui-ci est assez facile. En termes de codage. Vous n'avez pas vraiment besoin d'ajouter de code supplémentaire, mais c'est plus ce que nous appelons re factoring du code des Nationals, la façon fantaisie de dire que nous mélangeons le code pour le rendre plus clair et pour le faire faire ce que nous voulons réellement qu'il fasse. Donc, actuellement, nous avons une carte. Nous avons une petite icône d'ajout. Lorsque nous cliquons sur l'icône Ajouter, nous enregistrons notre emplacement, et cela est ajouté en tant qu'annotation de broche. , lorsque la vue réapparaît Cependant, lorsque la vue réapparaît, il n'est pas génial d'utiliser un design. Est-ce parce que vous n'avez pas besoin de sortir l'application puis de revenir pour voir où votre emplacement a été mis à jour ? Ça craint un peu maintenant. Si vous mettez quelque chose comme ça dans l'APP Store, Apple le rejetterait tout de suite et dit : Allez, Allez, les gars, essayez plus fort. Donc je te veux à chaque fois. Cela plus l'icône obtient des clics pour déplacer cette annotation de carte à l'endroit où elle devrait être Maintenant, ce n'est pas exactement aussi simple que cela en a l'air, et vous allez probablement le découvrir quand vous commencerez à le faire. En fait, ça pourrait être simple. Je ne suis pas sûr de moi-même. On va juste le découvrir. Alors bonne chance. Et ne reviens pas à cette conférence. Pause le juste ici, ce moment jusqu'à ce que vous avez eu un aller il. D' accord. J' espère que vous y êtes allé et j'espère que vous avez réussi. Donc c'est juste superflu pour vous. Je vais essayer de résoudre ce mouvement hors de l'annotation dernier emplacement. Donc il y a quelques options ici. Tout d'abord, il y a une option vraiment simple, et c'est d'avoir cela toujours en vue. Sera apparaître, mais aussi dans mes clics de bouton de sauvegarde. Donc, après avoir enregistré mon bouton, je peux avoir mon dernier emplacement annoté. Voyons maintenant ce que cela fait parce que la programmation est tout au sujet de l'expérimentation Maintenant, je n'ai pas vraiment préparé cette solution de devoirs. Je suis juste une sorte de style libre pour le moment. Je crois savoir ce qui va se passer, mais voyons. Je n'ai pas fait trop de cartes absentes moi-même. Et si je le faisais, ils l'étaient il y a longtemps. Alors allons de l'avant et zoomons. Allez. Ça ne m'aime vraiment pas aujourd'hui. Je pense qu'on doit faire défiler manuellement. Je n'ai plus rien maintenant. Donc, si vous vous demandez pourquoi mon ordinateur est si lent, c'est parce que je dois enregistrer ça sur un Mac plus ancien pour obtenir la bonne résolution d'écran pour enseignement en ligne. Sinon, il enregistre sur My Mac book Pro à la Retina Resolution, ce qui est ridicule, et j'ai manqué d'espace si rapidement et le traitement prend des siècles. Donc, en tout cas, voici notre emplacement. Maintenant, allons au débogage. Changeons. Nous n'avons pas besoin de le changer, car quand on frappera, plus ce point bleu sera remplacé par le rouge. Les annotations rouges Allons frapper, plus sur ce qui s'est passé là-bas ? Rien, même si c'est stocké notre position là-bas. Maintenant, c'est très étrange. Donc je pense encore, c'est juste un bug de simulateur. C' est juste quelque chose avec lequel nous devons vivre. Mettons 31 par 32. Rangons ça. Et maintenant, il va à 31. Qui sait ce que fait ce simulateur ? Donc j'ai 31 31. Mais regarde ce qui s'est passé. Nous avons maintenant deux annotations, non ? Donc ce n'est pas vraiment génial pour nous. Nous préférerions avoir une annotation car notre application est tout au sujet de l'enregistrement de votre dernier emplacement. Alors arrêtons ça de courir. Réfléchissons à ça. Nous avons cette annoter dernier emplacement. Maintenant, ce que nous pourrions faire, c'est que nous ne pourrions avoir qu'une seule annotation ici pour que je puisse couper ceci et que je puisse le mettre en haut dans ma classe. Variables. Donc, maintenant, nous savons qu'il n'y a qu'une seule annotation. Ces erreurs disparaîtront dans une seconde quand il se rendra compte que nous l'avons encore. D' accord. Et puis nous ajoutons une annotation. Voyons si on peut s'en sortir avec ça et espérer que ça n'ajoutera pas trop. J' ai le sentiment que ce sera réellement le cas. Ok, donc nous allons en Egypte bien au-delà d'Athènes, après Benghazi. Ecoute, je pense qu'on doit aller dans l'autre sens, vraiment tester tes je pense qu'on doit aller dans l'autre sens, vraiment tester tesconnaissances géographiques ici. Maintenant, modifions notre emplacement très légèrement à un coup 30 par 32 plus et notre annotation se déplace. Donc c'est assez pratique, n'est-ce pas ? C' est frappé plus encore et rien ne se passe. C' est bien. 30 par 29. Allons frapper plus encore et nous avons décalé à travers. Ok, sorte que plus ou moins fonctionne clairement, vous pouvez voir que ce n'est pas dans la production proche prêt ? Il y a des choses que nous devons découvrir et comprendre. M. Kay, Matthew. Un peu mieux avant que nous puissions réellement sortir une application comme celle-ci. Mais vous avez l'idée de base. Dans la conférence hexagonale, je vais te faire un sacré devoir. Je vais vous faire vos devoirs. Ça ne s'applique pas vraiment aux choses que je t'ai enseignées jusqu'à présent. La prochaine tâche va nécessiter que vous allez sur Google et que vous recherchez une solution, puis que vous l'implémentez vous-même. Maintenant, bien sûr, c'est à vous de décider si vous voulez faire le prochain travail parce que c'est très difficile à faire. Mais si vous pouvez le faire, vous êtes en bonne voie pour devenir un développeur de premier plan. 77. M10 9 Où a-t-il de de la difficulté et de solution: à droite, Nous y allons. C' est les devoirs difficiles, et c'est le C'est une étape importante pour vous en termes d'application d'apprentissage, de développement dans n'importe quelle langue, d'ailleurs, parce que ce que je vais vous demander de faire n'est pas quelque chose que je vous ai montré comment faire avant. Maintenant, pour que cela soit plus clair, regardons nos positions opposées. Nous avons le premier écran sur la gauche qui est montré lorsque notre à feu. Et, bien sûr, nous avons nos emplacements qui ont montré ailleurs sur la carte. Maintenant, ce n'est pas génial l'expérience utilisateur car vous devez faire défiler la carte pour savoir où sont ces épingles et les emplacements. Donc, ce serait bien si la carte zoomait automatiquement sur la zone actuelle des utilisateurs. Et c'est tes devoirs. Je veux que vous zoomez automatiquement sur la zone actuelle des utilisateurs. Aussi grand ou aussi petit que cela est, il n'a pas vraiment d'importance quand l'APP s'ouvre, donc vous allez devoir aller sur Google, et vous allez devoir chercher des choses comme rapide et automatique zoom carte voir ce genre de choses. Voyez ce que vous pouvez trouver, le plus important, comprendre ce que vous avez confiné et ensuite l'utiliser pour implémenter réellement ce que je demande. Donc, c'est assez dur, parce que c'est un peu comme vous aider à apprendre à faire du vélo et à lâcher le guidon. C' est comme couler ou nager, mais c'est vraiment faisable. Et bravo si vous essayez ça, je vous verrai dans quelques secondes. Suspendre la vidéo. Maintenant, allez-y vous-même et bonne chance, est-ce pas ? Je me demande comment vous avez réussi avec votre petite tâche là-bas. Eh bien, voyons comment faire ça. Maintenant. Je n'ai pas préparé cette conférence, et au fur et à mesure que nous en apprenons plus sur ce cours, je suis plus en train de faire les choses hors du brassard. Vous avez donc une meilleure idée de ce que c'est d'être un développeur au jour le jour. Je ne suis vraiment pas fan de l'apprentissage structuré après une période initiale parce que cela ne vous donne pas l'impression correcte de la façon de faire les choses. Alors regardons comment j'attaquerais ce problème. Eh bien, festival. J' irais à Google, non ? Et qu'est-ce que je chercherais ? Eh bien, cherchons l'emplacement M K Matthew Auto Zoom. Swift et moi sommes prêts à parier que la première chose qui arrive est le débordement de pile. Oui, passons au 2e 1 qui semble prometteur avec Swift 3. Donc ce type essaie de le faire, nous essayons de le faire. Il a du code. Vous pouvez voir que les gens ont eu des problèmes ici avec la création de ces lignes de code en vue. Il a chargé. Droit. Donc, il y a beaucoup de code à passer ici, et vous faites simplement défiler cela en douceur pour vous. D' accord ? Donc, vous pouvez réellement lire tout cela et avoir un voir, Jetez un oeil pour voir ce que vous comprenez réellement. Donc, il a créé ce code dans l'a vu charger. Il a créé des coordonnées. Il a fait une région de 200 par 200 à partir de ces coordonnées, puis il a défini la carte. Qu' est-ce qu'il fait vraiment ça ? Parce qu'il n'a pas donné à cela une coordonnée à moins que cela ne fournisse réellement la coordonnée actuelle. Je ne suis pas sûr que ça le fasse, mais je dois le chercher. Eh bien, faisons ça. Copions-le ouvrir dans un nouvel onglet et collez-le et vous arriverez avec les docks Apple. C' est toujours le premier résultat. Latitude et longitude associées à un emplacement de sorte que cela ne nous dit pas vraiment quelque chose d'aussi utile. Allons passer par le manteau de ce type. On a un délégué. Nous savons que nous ne parlons pas, comme, comme, votre vérification c pour les services de localisation où nous avons fait ça, mais une version beaucoup plus courte que celle-ci. Demander notre autorisation. Oui. Zoom sur l'emplacement de l'utilisateur. Voyons voir. Eh bien, on ne peut que l'essayer, non. Alors copions ça sur. Nous allons séparer cela dans une fonction Z, um Teoh Emplacement utilisateur collé dans. D' accord. Et heureusement est les vues de carte appelé le même était heures. Nous ne devons pas réellement changer de code alors à notre avis, avons chargé Faisons cette fonction hors et essayons cela. D' accord. Oh, ça ne marche pas parce qu'on doit sortir de ça et essayer à nouveau. J' espère que ça marchera. L' éducation a activé mon emplacement, juste, donc il n'a pas vraiment trouvé l'emplacement actuel, et je pense que c'est probablement parce que nous n'avons pas d'emplacement ici, qui est juste un endroit aléatoire, qui est tout à fait inutile. En fait, nous avons besoin de notre emplacement actuel malade. Où trouve-t-on ça ? C' est probablement le directeur de localisation, Dr. Location. C' est probablement le directeur de localisation, Dr Alors voyons. Donc, changeons cela pour verrouiller est égal à l'emplacement Manager ne pas emplacement. Mais puis avec bien sûr, nous avons besoin de ce type spécial que nous avions avant qui avait deux d dessus. Et si vous vous en souvenez, Waas voir nos coordonnées de localisation Cindy. Maintenant, je ne sais pas où trouver ça, donc ce n'est pas là. Alors créons un emplacement de PDG. Coordonner à D. Ceci demande notre lassitude et longitude se. Allons chercher notre directeur de localisation Dobbs, décharges de localisation. Et si on avait une note de latitude ? Mais on pourrait avoir une coordonnée ? Oui. Ce que j'allais faire ici, c'était de retirer la latitude de cette coordonnée. Mais si vous regardez attentivement, le type est l'emplacement cl. Coordonner à D, et c'est exactement le type dont nous avons besoin ici pour un emplacement. Donc il n'y a pas besoin de réinventer la roue. Et parfois, quand vous programmez, vous devez faire attention à ces compléments automatiques. Attendez juste qu'ils apparaissent et puis regardez les types afin que vous ne faites pas la même erreur que j'étais sur le point de commettre en réinventant la roue. Donc tout ce dont nous avons besoin ici maintenant, c'est le directeur de localisation, Dr. Location Ne coordonne pas et nous avons exactement le type que nous devons remplir ici . Mais bien sûr, c'est une option. D' où le point d'interrogation. Donc, nous devons vérifier pour cela si let Et puis si vous sélectionnez quelques lignes, vous pouvez normalement les tabler dans. Ex coach, juste une ligne de tout. Donc, vous êtes si devrait être onglets dans tout le code de vos instructions if devrait être onglets dans, il est donc plus facile pour les gens à lire. Ok, donc ça devrait juste le faire. Si nous pouvons trouver un emplacement, alors nous allons zoomer sur la carte selon ce code que nous avons trouvé. Donc dans quelques chargements, ça va le faire, et ça ne le fera nulle part ailleurs. Je ne pense pas qu'on ait besoin de l'appeler ailleurs. Juste pour l'instant, Se, allons faire ça sur l'iPhone et vérifier que tout fonctionne, non ? Donc, il est chargé. En fait, je l'ai juste découpé là-bas pour que vous puissiez le voir fonctionner, donc je ne pouvais pas tout à fait l'attraper avec mon enregistreur d'écran. Donc je vais ouvrir l'application et regarder dès qu'elle s'ouvre. Il trouve l'emplacement et il zoome sur elle Maintenant, nous avons beaucoup zoomé, je crois. Mais si vous maintenez enfoncée le clic culte et faites glisser comme si nous avions un zoom avant sur un appareil réel, nous devrions finalement voir où nous sommes. Alors je crois. Oups. Je crois qu'on est au milieu de nulle part ici. On y va. Donc, je faisais un zoom arrière bien. Alors on y va. Cela parvient à zoomer sur où nous sommes si la cuisine traînée carte avec bien sûr pourrait se déplacer comme avant. Mais c'est comme ça que nous passons à l'endroit où nous en avons besoin. Laisse-moi juste tuer ça. Et bien sûr, cette région de vue. Ces deux numéros 202 100 sont les clés de cela. Donc nous devons savoir ce que 200 signifie. Est-ce que cela signifie mètres kilomètres ou quoi ? On ne sait pas. Donc, la chose évidente à faire est de copier cette tête sur Google et de la déposer dans la recherche. Et bien sûr, le premier résultat est normalement un développeur de pomme. Distance de résultat. Donc, il crée la région selon les valeurs de Corden et de distance. Là, nous goc donc mètres attitudes et mètres longitudinaux, donc mètres est ce que nous regardons quand il dit 200. Donc, bien sûr, on peut aller 20 kilomètres. On peut dire ça. Vérifie ça. Voyons ce qui se passe et je trouve que c'est un meilleur moyen de s'en sortir. En fait, apprendre à coder est de regarder le code de quelqu'un d'autre, comprendre ce qui se passe, puis de l'intercaler en regardant les docks d'Apple et diverses autres sources de documentation plutôt que de simplement lire l'avion quais, parce que ça peut devenir vraiment ennuyeux très vite. Donc, cela refuse de zoomer, même si je suis sûr qu'il en fait 20 000. Essayons 200 kilomètres ici et d'ailleurs lorsque vous cliquez sur jouer pour exécuter cela sur une SIM. Il devrait enregistrer automatiquement votre projet afin qu'il vous donne les dernières versions des fichiers. On y va. Donc ça fait 200 kilomètres. Nous ne pouvions rien voir parce que nous étions en plein milieu. Nulle part, non ? On y va. Qu' est-ce que c'est ? Le 6 octobre ? C' est une chose étrange pour le paradis. Une carte. Je pourrais regarder ça. Je suis facilement distrait de toute façon. Mais de toute façon, c'est comme ça que vous zoomez sur les utilisations. Localisation actuelle 78. M10 10 Où j'étais ? Résumé: Félicitations. Vous avez terminé ce module. Nous avons créé une super petite maths où nous pourrions sauver notre emplacement et montrer notre emplacement actuel quand nous nous sommes éloignés de cet endroit. Maintenant, juste un résumé de tout ce que vous avez appris. abord, nous avons regardé comment obtenir la permission de tout d'abord, installer sur des appareils avec GPS et a également demandé à l'utilisateur si nous pouvons utiliser leur emplacement pendant que l' APA est ouvert. Je vous ai également montré quelques autres choses de confidentialité que vous consentez si vous avez besoin de l' emplacement d'un utilisateur lorsque l'application n'est pas réellement ouverte. Et puis, bien sûr, nous avons regardé comment obtenir l'emplacement et le montrer sur une vue Apple Map intégrée dans notre application Et pour obtenir cela, nous avons également regardé comment intégrer des frameworks. Ensuite, nous avons obtenu les coordonnées de l'emplacement et nous avons appris hors magasin celles dans les valeurs par défaut de l'utilisateur , qui est des paires de valeurs clés pour stocker divers éléments comme les chaînes et les doubles. Ensuite, nous avons créé quelques classes pour stocker l'emplacement sur aussi une classe pour extraire les données nos valeurs par défaut de l'utilisateur. Donc vous ne le saviez pas, mais je vous enseignais en quelque sorte en arrière-plan, si vous le souhaitez, ou, inconsciemment, comment créer la bonne structure pour les classes dans vos projets. Ensuite, nous avons examiné comment ajouter des annotations épingles à nos cartes. Utilisation de ces coordonnées enregistrées. Nous avons examiné comment mettre à jour automatiquement l'annotation lorsque nous avons cliqué, plus ou enregistrer. Et puis finalement, nous avons appris à zoomer automatiquement sur l'emplacement actuel de nos utilisateurs. Un gentil petit toi, j'ai piégé. Donc, si vous l'avez fait jusqu'ici, très bien fait, et voici une petite récompense sous forme de feux d'artifice. 79. M11 Introduction à Will I graver: bienvenue à la prochaine étape de votre parcours de développement. Maintenant, dans cette section, nous allons créer ce qui semble être un acte très simple appelé Will I burn et je vais vous expliquer ce que c'est dans une minute. Mais sur le chemin de la création de cette application, il y a beaucoup de concepts plus compliqués que nous allons couvrir. Et si vous êtes un nouveau programmeur, ça va être un peu compliqué, un peu plus que peut-être que certains d'entre vous peuvent gérer si vous programmez avant et que vous avez fait trucs comme Jason et AP eyes, et vous devriez vous sentir comme chez vous . Mais ne laissez pas mes paroles vous décourager. Si vous êtes un débutant, suivez simplement et vous apprendrez tout ce que vous devez savoir, n'est-ce pas ? Alors, quelle est l'application ? Eh bien, si jamais vous êtes allé à une belle plage par une belle journée chaude, vous saurez que si vous avez la peau claire, vous allez brûler à un moment donné. Mais nous, les humains, semblons toujours surestimer le temps que nous pouvons réellement passer au soleil sans brûler, soleil sans brûler, c'est pourquoi la plupart d'entre nous reviennent comme des homards. Donc, nous allons créer une application qui tire vers le bas le local vous. Les données d'index effectuent un calcul en fonction du type de peau que nous mettons dans l'APP et nous indiquent ensuite combien de temps nous avons jusqu'à ce que nous brûlions au soleil. Non seulement ça, ça va aussi nous rappeler de sortir du soleil, et c'est à ça que ça va ressembler. Donc, je viens d'aller avec un thème monochromatique sur ce sujet, et j'ai vraiment aimé ce thème. C' est l'un de mes APS préférés que j'ai fait. Et comme vous pouvez le voir, c'est très simple. En haut, vous changez de type de peau, puis au milieu vous avez vos minutes jusqu'à ce que vous brûlez en cours d'exécution. Et en bas, vous avez une petite notification disant Obtenir des données est également un bouton de rappel pour vous dire quand sortir du soleil afin qu'une alarme se déclenche correctement ? C' est donc l'APP. Comme je l'ai dit, ça a l'air très simple, n'est-ce pas ? dollars. On va apprendre beaucoup de choses en cours de route. On va apprendre des choses comme le transfert de l'état de représentation du repos, ce qui veut dire, j'ai retrouvé la définition de Wikipédia parce que c'est ridicule. Comment peuvent-ils commencer ? Comprenez ça. On va comprendre ce qu'est le repos parce que le repos est une grande partie de la programmation de nos jours. Et je vais le faire simplement pour toi. Je vais aussi expliquer ce que ce diagramme signifie dans la prochaine conférence. Tout sur les services Rest sera, Jason, etcetera. Maintenant, si vous êtes intéressé par la programmation, vous avez probablement entendu parler de Jason et XML. Quelqu' un explique tout ça, puis nous allons aussi regarder les formats que Jason Data prend, et nous allons essayer quelques outils Web pour que nous puissions le comprendre. On va aussi regarder les yeux de l'AP. Cela signifie que nous allons aller trouver un service qui nous donne si les données que nous pouvons utiliser dans notre application, nous allons également regarder la documentation fournie avec ces yeux AP parce que c' une chose importante à apprendre à faire est un développeur, et qui est de scanner les quais. Donc, vous savez qu'il va fournir les données dont votre application a besoin parce qu'il n'y a sens de faire la moitié de votre application plomberie cela dans et de découvrir qu'il n'a pas réellement certaines des données dont vous avez vraiment besoin, non ? Et bien sûr, nous allons regarder Jason Data après cela dit, est beaucoup de propriétés et de choses à voir à droite, ouvrir le code X et allons-y. 80. M112 Quels sont les services restauratifs ?: maintenant, la toute première chose que nous devons être au courant de nos services de repos. Et comme je vous l'ai montré dans l'introduction, nous avons cette horrible définition de Wikipédia. Yada, yada, yada. Je ne vais même pas le lire. C' est juste au-dessus du sommet. Cela m'amène à un point que vous devez être conscient si vous apprenez à programmer. C' est des ingénieurs ? Les développeurs plus doux veulent se sentir intelligent, et cela vous fait mal le débutant, parce qu'ils utilisent beaucoup de jargon et ils rendent les choses trop compliquées, qui est très bien si vous êtes un programme, accepte comment nous communiquons avec chaque autre. Mais je veux que vous sachiez la vérité. services de lutte ont simplement deux éléments par client, et cela pourrait être votre application. Ça pourrait être un terminal Web. Ça pourrait être n'importe quoi et un serveur. Le serveur fournit des données au client. Généralement parlant, tout d' abord pour le faire, le client a toe demander Le serveur donc demande quelque chose de ce serveur. Ensuite, le serveur donne une réponse au client. Maintenant, cela pourrait être une réponse. Il peut s'agir de réponses multiples, mais lorsque vous créez le client, vous saurez comment le service parle Quelle langue il parle. Tu sauras comment gérer ça. Ok, maintenant, quand la réponse du serveur, il peut répondre avec n'importe quel format de données. Et deux des plus communs sont Jason et XML qui sont utilisés ces jours-ci plus Jason que XML nos jours. Et ça change depuis une dizaine d'années, je crois, n' est-ce pas ? Donc, tout cela, en soi, la demande de réclamations et la réponse du serveur ne sont pas reposantes. Le repos est quelque chose à voir avec la façon dont vous programmez ce modèle dans votre code. Ok, donc le repos est simplement une méthode pour obtenir des données distantes. Mais non seulement ce repos signifie que votre application peut poignet pendant que les données sont récupérées et que j'ai rencontré, vous avez mélangé les mots ici un peu parce que ce n'est pas ce que le repos signifie réellement, mais pour le rendre simple pour vous les gars, cela signifie simplement que lorsque vous faites cette demande, plutôt que d'attendre que le serveur réponde avant d'exécuter un expert en code, votre code fait un petit rappel pour lui-même. Donc, quand la réponse revient, votre code peut reprendre là où il s'est arrêté. Et c'est génial parce qu'en attendant, il fait ça. Votre application peut rester réactive et faire d'autres choses. Alors c'est ce que reste Feliz. Cela donne à votre application une chance de faire tout ce dont elle a besoin et de répondre aux données uniquement lorsqu' elle revient. Parce que vous pouvez imaginer ces données vont et viennent. Prenez un certain temps pour revenir dans certains cas et même 100 millisecondes de retard dans vos actes, réponse est perceptible par l'utilisateur. Ça donne l'air lent. Donc c'est la beauté hors de repos. Donc, dans notre diagramme, lorsque le client envoie sa demande et qu'il attend cette réponse, le client peut continuer à faire d'autres choses. Entre-temps, il n'a pas nécessairement besoin d'avoir cette réponse pour continuer. Bien sûr, c'est bien si vous avez une réponse. Dans la plupart des cas, vous avez besoin de cette réponse, mais il garde tout dans votre application agréable et actif, et il n'y a pas d'attente pour les événements météorologiques. orteils arrivent, non ? Donc c'est tout. services de restaurant maintenant, normalement regroupés avec un service de repos est une interface de programmation A P I et d'application et tout un p. I est le petit peu de notre code qui se trouve là ou pas notre code, mais plutôt le code serveur. Donc, un P I une interface d'interface de programmation d'application est le mot important qu'il y a. Interface est ce qui nous permet de lui donner une requête et d'obtenir une réponse du serveur. Donc, sur un P, je me concentre simplement sur ce petit peu du paradigme de réponse à la requête du serveur. C' est la façon dont vous interagissez avec le serveur et ses données. Maintenant AP, j'ai l'air compliqué, mais c'est tout ce que c'est. C' est une façon de simplement prendre les demandes et de donner des réponses à son niveau très central. Quelques exemples d'yeux AP sont celui-ci, vous pouvez aller pour échanger edotco contre une barre oblique AP I avant barre oblique et vous pouvez déposer dans quelques éléments comme des gens une planète, trois vaisseaux neuf et ce site va cracher des gens aléatoires, planètes ou pour vous dans un format Jason. Nous n'avons pas encore couvert ce qu'est une poursuite sur le format, mais nous le ferons. C' est donc un exemple de A p I. Vous allez à une adresse spécifique, vous fournissez des données à l'adresse. Donc, dans ce cas. Nous avons un P i slash gens slash un et le A p. Je sais faire sortir les gens de lui pour retourner les gens plutôt et combien de gens ? Eh bien, nous en avons spécifié un, parfois avec un A p I. Vous fournirez ce qu'on appelle un jeton d'authentification. Donc, c'est comme une chaîne secrète ou pas une chaîne secrète, mais plutôt une chaîne qui identifie votre acte comme verrouillé ou quoi que ce soit. Et puis l' A.P . I répondra aux demandes. Si vous n'avez pas le jeton, il ne répondra pas à vos demandes. Alors, quels autres exemples y a-t-il ? Eh bien, il y a ceux qui allaient utiliser ces yeux AP météo locale et nous pouvons fournir une adresse. Tirez cette adresse sur World Weather Online, et elle reviendra avec toutes les données météorologiques que nous demandons. Maintenant, bien sûr, parfois ceux-ci sont effectivement payés pour les services, en fonction de la quantité que vous utilisez parce que vous utilisez quelqu'un serveur efficacement pour cela . Maintenant. La plupart de ces yeux AP, bien sûr, viennent avec de la documentation. S' ils ne le font pas, je vous conseille de rester loin d'eux parce que vous passerez beaucoup à essayer, à essayer de comprendre ce qui se passe et dans ce cas, la météo mondiale en ligne. Ils ont quelques robes en haut qui vous permettront d'accéder à leur A P I. Et puis nous avons quelques paramètres de requête, et nous allons voir comment inclure des paramètres de requête dans nos demandes. 81. M113 Qu'est-ce que JSON ?: Si vous savez déjà ce qu'est Jason, alors n'hésitez pas à sauter cette conférence. Si vous ne savez pas, Jason signifie notation d'objet JavaScript, et c'est ah, façon de formater les données qui ont été essentiellement volées dans le monde JavaScript parce qu'il est très lisible et agréable à regarder. Et il a été mis en œuvre à peu près partout ces jours-ci. Alors c'est quoi Jason ? Eh bien, si vous vous souvenez de notre petit diagramme, nos clients enregistrent une réponse à une demande. Et le a p I Jason est simplement un format que les données prennent dans. La réponse est, pour la plupart, vous aurez normalement le retour de Jason. XML est plus ou moins une race mourante. Ok, donc à quoi ressemblait Jason ? Eh bien, voilà. Je viens de tirer un jour Jason au hasard, monsieur, de l'utilisateur aléatoire Dr M. E et leur A P I. Maintenant, la première chose que vous devez remarquer est que nous avons ces deux accolades qui commencent et finissent notre Jason. Puis à l'intérieur de ces accolades, nous avons de l'eau appelée les objets. Et le premier objet que nous avons est appelé résultats. Maintenant, les résultats sont la clé pour l'objet n'est pas l'objet lui-même. C' est simplement le nom de l'objet. Et à l'intérieur de cet objet, vous aurez d'autres clés et valeurs. Donc, les résultats sont une clé, l'objet ou le tableau. À l'intérieur, il y a une valeur ou un tas de valeurs. Et puis, à l'intérieur de ceux-ci, nous pouvons continuer à imbriquer vers l'intérieur jusqu'à ce que nous ayons un courrier doux. Nous avons le nom etcetera, etcetera. On pourrait aller jusqu'au bout. Nous pouvons inclure des choses comme des adresses Web. Si nous le souhaitons, nous pouvons également inclure des chiffres. Donc, chiffres est la section de code postal au milieu de l'écran. Là, c'est un 69974 Vous remarquerez qu'il n'y a pas de guillemets autour de la valeur réelle, donc Jason est simplement un standard pour la livraison de données. Maintenant, il y a en fait des outils qui vous permettent de valider votre Jason. Et alors que dans cette section, vous n'allez pas vraiment créer votre propre Jason. Il est pratique de savoir que le Jason qui revient de vos requêtes Web est en fait valide parce que s'il n'est pas valide dans les différents outils que nous allons utiliser, à l'intérieur de nos programmes ne sera pas en mesure de fonctionner correctement. Et évidemment, il est important qu'ils fonctionnent correctement. Alors regardons un de ces outils. Maintenant, tout d' abord, j'ai ouvert un médecin d'utilisateur aléatoire, et c'est ce que nous avons eu nos données Jason avant. Et si vous ouvrez cela vers le haut et faites défiler vers le bas, vous remarquerez qu'il a une petite section de résultats ou qu'il donne un exemple hors des résultats. Maintenant, nous pouvons simplement copier cela si nous le souhaitons, parce que c'est Jason, et puis nous allons à l'un de mes sites préférés, qui est Jason leant dot com. Et si vous collez votre Jason ici, puis cliquez, validez Jason et faites défiler vers le bas, il vous indiquera s'il est valide ou non. Maintenant, à Jason, si j'enlève quelque chose, alors disons que je retire je ne sais pas. Supprimons ces guillemets de la clé. Nous obtenons une ère, et elle nous dit où est l'ère. Donc, dans Jason, la clé est toujours une chaîne. Ils ont donc essayé de modifier un nombre. Il suffit de valider notre propre affirmation qui ne fonctionne pas non plus. Plus d'erreurs. Ok, Maintenant, les valeurs elles-mêmes pourraient être des chaînes, et elles peuvent être des nombres. Pour la plupart, je crois que nous avons quelques versions de solutions 1.1. Faites une expérience ici. Rendons cette clé, peu importe ce qu'on appelait. Et essayons d' approcher un nombre décimal. Tu vois, ça marche pour qu'on puisse avoir des doubles. On peut avoir des millésimes, etc. Maintenant, c'est à vous de découvrir ce que votre logiciel met en pause. Ce nombre à parce que vous êtes un logiciel pourrait dire que c'est un double flottant. Vous pourriez même être horrible et dire que c'est une interview, mais je ne pense pas que ça fasse ça. Quoi qu'il en soit, c'est comme ça que nous découvrons si notre Jason est correct, donc vous pouvez imaginer dans une sieste que vous feriez son appel à votre Web 80 Je vous obtenez les dates de retour, et vous en tant que développeur l'imprimeriez probablement dans votre console, vous le copiez et ensuite vous le collez dans Jason peluches juste pour vous assurer que les données sont correctes. 82. M111 EN OU DU GOD: Maintenant, juste avant que nous ne fâchions avec notre application météo, je veux apporter un point spécial qui est cher à mon cœur. Et ça s'appelle Oh Dieu, pas un autre temps. Et si vous recherchez sur Google des enveloppements météorologiques, vous savez que le marché est inondé. Vous avez des résultats qui sont 15 meilleurs 10 meilleurs, les 13 meilleures cartes météo. Vous savez, il y a une tonne de cartes météorologiques. Maintenant, cela me dit que la météo APS sont extrêmement populaires. Un et deux. Il y a beaucoup de concurrents sur le marché. Et que devez-vous faire en tant que développeur quand il y a des tonnes de concurrents ? Eh bien, tu dois te différencier. Pourquoi choisir votre application météo dans l'ensemble ? dehors de ces autres temps APS quand il apparaît dans l'APP Store, eh bien, il y a quelques choses que nous pouvons penser quand nous voulons nous différencier. Tout d'abord, parlant de la météo, pourquoi les gens veulent vos informations météorologiques ? Donc, pour le moment, l'application météo montre juste la météo, mais les gens ne veulent pas les gens de la météo. Je voudrais poser les questions suivantes. Ai-je besoin d'un parapluie aujourd'hui ? J' habitais à Magister. Donc c'était un point muet. Tu as besoin d'un parapluie tous les jours là-bas. Ai-je besoin d'un bloc ? Tu sais, je vais brûler de ce soleil chaud ? Je peux avoir un barbecue ? Ça ne craint pas. Et si vous regardez toutes ces choses, oui, oui, elles sont liées à la météo, mais à l'intérieur et à l'extérieur, elles sont liées à la météo, mais à l'intérieur et à l'extérieur,les raisons ne sont pas nécessairement de montrer la météo. Ce qu'on fait, c'est qu'on puise sur quelque chose que les gens veulent savoir. Et c'est mon inspiration derrière Vais-je brûler ? Les gens veulent savoir s'ils vont brûler quand ils sont en vacances ou où qu'ils soient. Donc, pour invoquer le désir des gens de télécharger votre application, vous devez invoquer leurs émotions. C' est un développement d'application très important, et je sais en tant que développeur d'applications où je suis très logique, vous êtes probablement très logique parce que le développement d'applications attire en quelque sorte les gens logiques. Mais nous devons traverser ce monde éthérée hors des émotions. Donc, quand je vous montre une photo de quelqu'un avec un mauvais coup de soleil, elle invoque dans l'émotion en vous. Et si j'ai dit que j'ai cette application qui empêche que vous seriez probablement aller télécharger cela immédiatement. Vous ne vous souciez pas nécessairement que c'est de savoir si vous vous souciez de prévenir les coups de soleil. D' où le nom que je vais brûler ? Ça ne dit pas. Quel est le temps qui pourrait me faire brûler ? Je vais brûler. Donc, à la fin, vous pouvez également dire à votre utilisateur, Regardez, si vous utilisez cette application, vous aurez une belle ville et aucun coup de soleil. Quoi si jamais, n' est-ce pas ? Je voulais juste mettre ça là-bas. Donc vous avez compris ce qui se passait derrière. Les raisons de cette semaine sont maintenant prêtes à revenir dans le monde logique et commencer choisir notre météo. A p I. 83. M11 5 choisis l'API de météo: allons choisir un A P. Je fournit nos données météorologiques, Nousallons choisir un A P. Je fournit nos données météorologiques, mais avant de pouvoir le faire, nous devons juste réfléchir un peu à ce dont nous avons besoin. Donc, je pense toujours à vos besoins en données avant de décider d'un élément spécifique que vous allez utiliser pour fournir ces données. Donc, nous avons besoin d'un indice UV parce que l'indice UV est la pièce clé de données qui nous permet d'estimer la durée de combustion de quelqu'un. Quelle est la puissance des UV ? corrélation directe avec la vitesse à laquelle vous allez brûler, puis éventuellement nous aimerions un temps de base. Donc, si plus tard, nous voulons montrer à l'utilisateur ce qu'il est météo, nous pouvons le faire, mais ce n'est pas totalement nécessaire. Nous serions satisfaits d'un indice UV simple, qui diminuerait également la charge de données pour nous, n'est-ce pas ? Vous devez donc aussi penser à l'avenir de l'Europe, ce que nous venons de faire là quand nous avons dit la météo de base facultative. Nous n'utilisons pas de carquois de base, mais à l'avenir, nous pourrions le faire. Et donc vous devez penser à l'avenir de votre application, et il est presque impossible de le faire parce que vous êtes enveloppés ira des endroits que vous ne réalisez jamais qu'ils peuvent ou devraient aller, donc c'est presque impossible. Mais c'est un exercice pratique à faire de toute façon. Aussi, pensez à combien cela va coûter, donc un A P je pourrais vous donner une limite libre. Vous direz que vous pouvez connecter 10 les 100 000 personnes en un mois, et c'est gratuit. Après ça, vous êtes chargé, et la tentation est de penser, Oh, eh bien, eh bien, je pourrai m'en inquiéter plus tard. Ne vous inquiétez pas à ce sujet maintenant parce que ces coûts peuvent vraiment s'additionner. Et il pourrait être plus logique de payer pour un coût beaucoup plus bas maintenant, plutôt que de prendre l'option gratuite, mais plus cher, tarder. Toujours augmenter vos coûts sur les listes de prix, n'est-ce pas ? Nous sommes prêts à choisir un A P I, et il y a en fait si un P I listes. C' est à quel point populaire, ce soit Apsara. Donc, si vous allez sur ce lien, alors vous trouverez un article Top 10 que quelqu'un d'autre a écrit, et nous l'avons ici. Notre top 10 météo AP yeux écrits en 2014 donc un peu daté maintenant et n'hésitez pas à aller chercher d'autres. Mais cela donne une belle vue d'ensemble de ce qui est réellement disponible et peut cliquer à travers et regarder les différents prix et choses qu'ils ont, n' est-ce pas ? J' ai déjà choisi mon temps, un p I, et c'est celui que je vous ai montré plus tard tôt vous a montré plus tard appelé World Weather on line. C' est développeur dot monde météo en ligne. Cela nous dit de quoi il s'agit. Météo premium, un pack pour les développeurs, 170 000 utilisateurs. C' est plutôt bien. Vous pouvez l'essayer gratuitement pendant 60 jours. Vous pouvez regarder le prix. Donc, ici, nous avons notre prime a p I, et nous avons des prix mensuels pour aller avec cela. Si nous modifions nos demandes A P I par jour, il nous indiquera quel sera le nouveau prix. 115 $ par mois ou une réduction annuelle de 10 %. Mais il a un essai de 60 jours, donc si nous revenons en arrière, vous pouvez l'essayer gratuitement pendant 60 jours. Il vous suffit de vous inscrire avec les mots de passe habituels, leur donner toutes vos données et vous devriez être en mesure d'y aller. Alors allez-y, inscrivez-vous maintenant, donc nous sommes prêts à utiliser le A P I lorsque nous arriverons à notre application. Cet AP, j'ai réellement besoin d'une clé d'authentification, donc il est lié à un spécifique utilisé. Vous ne pouvez pas l'utiliser gratuitement, est-ce pas ? Je te verrai dans le prochain quand on commencera à créer un rap et à demander des permissions. 84. M111 et de demander les permissions: nous sommes prêts à commencer à créer notre application météo ou est-ce que je vais brûler pour les autres ? Donc, la première étape, bien sûr, est de créer l'application elle-même et de demander des autorisations de localisation afin que nous puissions obtenir des données UV sur l' emplacement actuel de nos utilisateurs. Maintenant, cela devrait être assez familier pour vous, étant donné que précédemment nous avons regardé les cartes Apple et l'emplacement GPS, donc nous pouvons juste courir sur cela assez rapidement et ce sera un excellent rafraîchissement pour tout ce que nous avons fait précédemment. Alors ouvre, code X et allons-y, juste là nous sommes. Donc, si vous vous souvenez de notre dernier acte, nous avons créé des mots. Où étais-je ? Donc ce qu'on va faire maintenant, c'est créer un nouveau projet Exco et ça va être assez similaire à la mise en place d'où étais-je ? Une seule application de vue fera l'affaire. Et comment on va appeler ça ? Appelons ça le nom de l'Irak. Vais-je tourner et faire écho fera le reste pour nous. Touchons ensuite et sauvegardons là où nous voulons le sauver. Donc, sur mon bureau, juste première chose à faire, demander l'emplacement, les autorisations, et si vous vous souvenez C'est dans le fichier info dot p list. Tout ce que nous avons à faire est d'aller à la liste des propriétés d'information idéaliste hit plus, puis commencer à taper l'emplacement du tiret de confidentialité. Et nous devrions avoir une liste de lieux. Toujours, toujours description de l'utilisation. On ne veut pas vraiment ça. Essayez de développer ceci afin que nous puissions voir toute la description. Essayons encore une fois. Emplacement du tableau de bord de confidentialité. Et si vous appuyez sur la flèche vers le bas, elle vous montrera la liste complète. Donc toujours l'emplacement d'utilisation, l'utilisation, l'emplacement dans l'utilisation. Eh bien, c'est celui qui convient le mieux à notre application pour que nous puissions l'avoir. Ok, alors donnons ceci une description pour montrer à l'utilisateur pourquoi utilisaient leur emplacement. Eh bien, disons que nous avons besoin de votre emplacement pour fournir une précision que vous avez des données précises. Ok, parfait. Maintenant, passons à notre contrôleur de vue et commençons à configurer des choses ici. Maintenant, nous avons besoin de l'emplacement. Donc la toute première importation que nous devons faire, c'est notre kit de carte le sait. Vous vous rappelez dans notre carte précédente, peut-être que nous sommes allés dans notre dossier de solution Project et que nous avons mis en place nos phases de construction et le binaire de liaison où nous avons traîné dans le cadre du kit de carte. Pour l'instant, je vais laisser leur extérieur, juste annulé ça et retourner au contrôleur de vue et nous allons essayer de l'exécuter sans le faire glisser pour voir ce qui se passe. Donc, c'est une règle générale pour quand vous faites APS. Parce que les appareils ont une puissance de traitement limitée, vous voulez garder la charge réduite, donc pour parler de tous les frameworks que vous initialisez probablement lorsque vous lancez l' application afin que nous laissions cela sans elle. Pour l'instant, si cela ne fonctionne pas, nous avons ajouté Noto plus tard. Ok, maintenant nous devons obtenir notre contrôleur de vue pour hériter du délégué du gestionnaire de localisation CL. Donc, cela lui permet juste de recevoir tous les événements qui sont à voir avec nos utilisateurs. Emplacement. Droit ? Créons une variable de classe pour stocker notre gestionnaire de localisation. Donc, nous allons emplacement, Manager égal CL emplacement manager et une nouvelle instance de celui-ci parfait. Puis à l'intérieur de notre vue, a chargé ce que nous devons faire. Eh bien, nous devons siéger ce délégué comme délégué pour le responsable de localisation parce qu'en ce moment ils ne se connaissent pas l' un de l'autre. C' est ce gestionnaire d'emplacement assez simple Doc Delegates est égal à soi. Ok, une fois qu'on aura ça, on pourra demander notre autorisation. Donc, le gestionnaire d'emplacement demande fléchettes lors de l'utilisation de l'autorisation. Assurez-vous de sélectionner le bon ici, car si vous ne le faites pas, vous n'obtiendrez pas de pop-up. Et la raison pour laquelle vous n'obtiendrez pas de pop-up si vous choisissez la mauvaise version est parce que dans la liste r p , nous avons seulement une description. Quatre emplacements lors de l'utilisation. Si vous n'obtenez pas de pop up, c'est probablement l'endroit probable que vous avez besoin d'ennuyer Shoot en premier. Assurez-vous que vous avez la bonne version ici pour l'emplacement. Ok, ça m'a eu plusieurs fois, non ? Alors, qu'est-ce qu'on doit faire ? Eh bien, maintenant, lorsque nous demandons notre utilisation, l' APP va s'éteindre, Demandez à l'utilisateur. Et si elle revient et dit oui ou non. De toute façon, il va déclencher une fonction dans ce délégué. Et parce qu'ils savent maintenant les uns sur les autres, il sait à regarder dans cette classe pour ce délégué et ce délicat est appelé n'a changé statut d'autorisation. Il est là en haut, donc vous pouvez y arriver en tapant simplement un peu de ce mot-clé, qui est en fait plus loin dans la description de la fonction ou le texte réel de la fonction. Vous pouvez également y arriver en tapant le gestionnaire de localisation, et puis nous obtenons tout un tas de tout ce dont nous avons besoin. Et si vous faites une casse plus complexe ou un emplacement à, alors vous pourriez vouloir taper cela et jeter un coup d'oeil à ce que chacune de ces choses fait et vous rendra la vie beaucoup plus facile. Plutôt que de réinventer la roue vous-même, il a changé. L' autorisation est celle dont nous avons besoin. Ok, maintenant, bien sûr. Essayons-le. Dis, Prince. Emplacement désactivé. Cela va faire pour l'instant. Alors, lançons à nouveau cela sur un simulateur et vérifions simplement que tout fonctionne à ce stade précoce. Pendant que tout est en train de charger, je dirai juste que les humains américains ont cette particularité bizarre et bizarre inhérente à notre espèce, et je vous en donnerai un exemple quand nous programmons. Nous avons tendance à penser que la chose que nous venons de changer, est ce qui a causé quelque chose à s'écraser ou à ne pas fonctionner, c'est une chose bizarre. Donc c'est pourquoi je dis tester tôt et tester souvent afin que vous puissiez choisir ces bugs plus tôt parce que si vous ne faites pas cela et que vous exécutez votre acte après avoir fait, vous savez cinq ou 10 choses, alors votre esprit va automatiquement à la dernière chose que vous fait et blâme. C' est tout de suite un échec inhérent à la douleur, un humain que nous faisons cela. Mais quand il fait cela, cela vous amène à chercher la réponse au mauvais endroit, et vous passerez tellement de temps perdu à essayer de savoir où cela ne fonctionne pas juste alors. C' est pourquoi tester tôt et souvent, même si vous pensez tout savoir sur votre application et que vous savez comment configurer cet emplacement Manager n'a pas d'importance. Testez tôt et souvent, non ? Donc, cela fonctionne l'accès trouvé emplacement, cliquez sur autoriser, et c'est fait en ce moment. Comment savons-nous que notre autorisation de localisation a été autorisée ou refusée ? Eh bien, nous pourrions vérifier cela dans notre code en utilisant cette variable appelée status. Une autre façon que vous pouvez réellement le vérifier est d'aller à un appareil avec simulateur et vous avez probablement remarqué, avoir un iPhone aller aux paramètres et puis où est-il ? Dans cette version ? Allons-y Services de localisation de confidentialité qu'ils nous obtenons. Alors où étais-je ? Vais-je graver en utilisant l'application ? Et puis votre explication est aussi là, donc les utilisateurs peuvent réellement la révoquer ici et remarquer ici. Cela changera en fait parce que cette fonction de délégué est déclenchée. Et aussi parce que notre application est toujours en cours d'exécution en arrière-plan. Maintenant, faisons un petit test. Toi, c'est double clic. Oh, non, ça ne marchera pas. Je viens d'avoir une idée brillante où vous pourriez fermer l'application et ensuite tester si cela changerait . Et bien sûr, cela ne changera pas car il n'y aura plus de connexion à X Code. Oh, ma chère. C' est idiot. Quoi qu'il arrêtons ça de courir. C' est comme ça que tu peux le faire. Maintenant, regardons comment vous le faites de cette façon. Emplacement désactivé. allons avoir le statut plus, puis juste appuyer sur point Nous avons une valeur de rôle et une valeur de hachage. Qu' est-ce que ça veut dire ? Je veux dire, on s'attendrait probablement à une sorte de chaîne ici, mais il n'y a pas de telle chose. Essayons donc une approche différente si le statut est égal aux points autorisés lors de l'utilisation. Donc, nous avions une chose qui ne montre pas vraiment le statut point, et c'est parce que c'est juste revenir à ce que je crois être une valeur d'entrevue . Si nous regardons l'indice ici, si nous mettons juste point, il est dit, nous ne pouvons pas avoir inséré comme valeur de rôle. Donc, il est juste d'utiliser cet Inter jurés un code pour trouver si c'est équivalent au statut d'autorisation C L . Donc, si nous allons donner à cela son nom complet, serait ce n'est pas autorisé l'utilisation gagnante, donc vous remarquerez que c'est le même type. Est-ce juste ? Ensuite, bien sûr, nous pouvons imprimer l'allocation comme autorisé, et nous pouvons aussi faire quelque chose comme d'autre. Si notre statut est égal à et nous pouvons utiliser le raccourci ici refusé, alors nous avons un problème parce que si notre utilisateur révoque cet emplacement sont le statut d'autorisation, rien ne leur dit que dans l'application qui nous est laissé en tant que développeur à plomb dans So festival , nous allons nous imprimer Emplacement nié. Ensuite, nous devons dire aux utilisateurs d'une manière ou d'une autre, et pour ce faire, nous allons leur donner ce qu'on appelle et élire. Allons un Let's égal à maintenant. En alerte est simplement une sous-classe hors du contrôleur de vue car il nous montre une vue. C' est un point de vue spécialisé. C' est comme une boîte à message. Vous avez peut-être vu ça avant de nombreuses fois. Donc, cela s'appelle un contrôleur d'alerte U I, et vous pouvez l'initialiser avec un titre, un message et un style. Donc, bien sûr, le titre va être une erreur. Et si vous appuyez sur l'onglet, nous pouvons aller au message. Et appelons cela permettre à apt d'accéder à votre emplacement via les paramètres. Vous pouvez mettre plus de description là-dedans si vous le souhaitez, mais je vais le laisser pour l'instant. Et puis nous avons besoin d'un style. Et quel type de style va juste mettre des points et nous pouvons avoir une feuille d'action. Mais nous n'avons qu'une chose à faire ici, c' est la presse. OK, donc nous voulons juste un simple A Let Ok maintenant nous devons donner à cette sélection le buting réel. Il n'est pas livré avec un bouton par défaut, donc l'action d'ajout de point d'alerte est la façon dont nous le faisons, et il nécessite une donc l'action d'ajout de point d'alerte est la façon dont nous le faisons, et il nécessite uneaction d' alerte. Donc, vous devez faire ici est appuyez sur Entrée sur l'auto, remplissez-le beaucoup de sentir que pour vous. Ouvrez à nouveau vos crochets, appuyez à nouveau sur Entrée et il vous donne le modèle dont vous avez besoin. Donc, ce bouton a besoin d'un style. Un titre. Plutôt OK. Il a besoin d'un style, qui est point et il y a plusieurs styles annulés. Par défaut, destructeur. Tu pourrais passer par ça et voir ce qu'ils font pour toi. Nous allons juste avoir par défaut alors quoi d'autre avons-nous besoin quand nous avons besoin d'un gestionnaire ? Et c'est ce qui arrive quand ce bouton est Prince. Pour l'instant, nous ne faisons rien, donc c'est nouveau maintenant le permis est prêt à partir. Donc avec toi point et nous devons le présenter. Donc, comme vous le pensez, nous devons aller présenter. Et cela nous donne une vue Controller deux présente, qui est tout simplement et élire parce que, rappelez-vous, alerte vient de votre contrôleur Eilert, qui vient du contrôleur de vue. Donc c'est là que je présente nous permet d'utiliser ça. Alors tu veux l'animer ? Enfer, ouais. À la fin de l'onglet Hit et nous n'aurons rien qui s'est passé à la fin. On n'a pas besoin de quoi que ce soit, alors je vais juste le dire et nous allons voir exactement ce qui se passe. Oh, on a une époque. Autoriser jusqu'à l'accent, l'emplacement, les paramètres de vice cliquez. Ok, alors allons à nos réglages. Nous allons avoir tout en utilisant l'application et nous avons l'emplacement autorisé. Et si nous revenons à l'APP, tout devrait être bon. Mais si je vais maintenant à mes réglages, j'aimerais pouvoir. Et je pense que jamais. Et puis nous revenons à nous, genre, brûler. Notre message est en fait apparu maintenant. Je ne compterais pas sur ce message pour sortir si l'APP est fermée en arrière-plan. Évidemment, vous ne ferez rien. Mais lorsque l'APP se déclenche, cela donnera à notre utilisateur l'alerte qu'il a été stupide et qu'il a révoqué le statut d'autorisation . Ou ils l'ont annulé quand on l'a demandé pour la première fois. Donc ça arrache ce petit insecte qui attendait de nous mordre. Maintenant, il est temps d'obtenir l'emplacement réel. Donc, faisons une variable de classe pour tenir nos coordonnées sont la latitude et la longitude. Maintenant, nous pourrions définir ceci comme quelque chose si nous le voulions, ou nous pouvons simplement lui donner des coordonnées de localisation. Deux D, et nous pouvons faire ces droits facultatifs maintenant. Ce que j'avais fait avant waas, je l'ai fait égal à une sorte de latitude et de longitude par défaut. J' ai juste mis quelques diplômes là-dedans et je n'étais pas particulièrement dérangé. Mais j'ai réalisé plus tard que lorsque vous faites cela, si vous avez une sorte d'erreur en obtenant l'emplacement d'utilisation, votre application a déjà des coordonnées, ce qui est dangereux parce que vous pourriez dire à votre utilisateur, Vous pouvez dépenser une heure au soleil, mais les coordonnées de votre jeu par défaut et ils ne peuvent passer que 10 minutes au soleil, puis ils sont brûlés et en quelque sorte ils vous poursuivraient si votre application est vraiment populaire, bien sûr. Donc je veux dire, faire APS est une chose multi-facettes, multi-talent ces jours-ci. n'ai plus fait de ferme. Apple a fait 1 000 000 livres. C' est Vous devez penser à certaines de ces ramifications de ce que vous faites réellement dans votre application. Donc je veux dire, pour une sieste comme celle-ci, j'obtiendrais une clause de non-responsabilité standard pour les enveloppements, et je ferais accepter cette clause de non-responsabilité. Apple a en fait sa propre clause de non-responsabilité. Lorsque les gens téléchargent APS, c'est que vous pouvez compter sur cela. Ok, maintenant que nous avons nos coordonnées de localisation, créons une autre petite fonction pour obtenir l'emplacement et disons si l' emplacement est égal à ouvrir notre emplacement. Manager, essayez d'obtenir l'emplacement qui est facultatif, puis essayez d'obtenir les coordonnées à partir de cela. En fait, on n'a pas besoin d'avoir les coordonnées. À ce stade. On peut le laisser comme ça. Nous pouvons obtenir les coordonnées à ce point est égal à points de chance co ordinate droite. Donc c'est trié. Alors oh, chaîne optionnelle, Voyons voir, n' a aucun effet. Oh, oui, bien sûr. Tu n'as pas besoin d'avoir ça à la fin. Parce que si cela n'existe pas, alors le si Let n'arrivera pas. Ok, donc maintenant on peut trouver l'emplacement et le mettre dans nos coordonnées. Variable. Droit. Nous sommes prêts à aller avec la plomberie très basique de notre application. Ensuite, nous allons en fait regarder la conception de notre Donc dans ce cas particulier, je n'ai pas fait le design d'abord parce que, eh bien, je commencerais normalement, mais je voulais renforcer ce que vous ont déjà fait avec des cartes, et je pensais que la meilleure façon de le faire était en fait de faire un peu de code d'abord. Ensuite, nous allons regarder la conception de notre application autour d'un fonds personnalisé vraiment sympa 85. M111 7 Concevoir votre application autour d'une police personnalisée: Maintenant, il y a une règle de conception que j'ai apprise il y a longtemps, et c'est de concevoir tout ce que vous faites. Peu importe si c'est une sieste. C' est une voiture-bateau. Peu importe. Concevez-le autour. Un point focal. Une seule fonctionnalité, Le mot clé il est unique. Et dans notre cas, ce seul article est un front personnalisé. Alors ouvrez un navigateur Web et allons chasser quelque chose qui fait vraiment ressortir la saveur de notre application, est-ce pas ? La première chose que nous faisons est d'aller à une sorte de moteur de recherche comme le canard canard, Go. Je les aime parce qu'ils ne me traquent pas un meurtre d'un truc d'intimité. Quoi qu'il en soit, regardons quelque chose comme Funk open source. Ce n'est pas techniquement correct formulation, mais nous avons les 40 meilleurs fronts Google. On a une forge frontale etc. Maintenant, vous êtes invités à utiliser tous les fonds que vous aimez dans cette pomme Oster création. Je vous recommande de choisir un front différent de celui que j'ai choisi juste pour que vous puissiez avoir une idée de la façon de concevoir des choses et comment faire votre propre APS bien paraître. Donc, j'ai vraiment un front. J' ai déjà choisi. J' aime vraiment ce front. Cooper Hewitt. Je crois que c'est assez vieux. Il y a quelques versions de ce qui se passe autour, vous pouvez avoir livre. Je fais un peu comme un livre. C' est la police de choisi, et maintenant il est important de vérifier la licence pour votre front. Parce que si vous faites des ventes d'applications et les licences viennent après vous et réalisez que vous avez créé des cellules utilisant leur front illégalement, pour ainsi dire, ils vous cachent et ils peuvent vous voir pour plus de probablement que votre application vaut la peine s'ils peuvent prouver qu'ils ont perdu autant, alors vérifiez toujours une licence. Celle-ci, je crois, est totalement libre de redevances. Donc, même si c'est sur ce site commercial, je dois vérifier ça avant que ça ne soit libre de redevances, non ? Alors téléchargeons l'avant de l'O. T. T. F. Je crois que Oh CF est un format de front open source, non ? Une fois que vous avez obtenu cela, nous devons alors inclure cela dans notre projet quelque part. Alors festival Allons sur nos téléchargements va à notre Cooper Hewitt et là nous avons toutes les polices dans ce dossier. Mais comment l'inclure dans le code X. Eh bien, ce n'est pas immédiatement évident, mais ce que vous faites réellement est que vous pouvez cliquer et faire glisser le dossier et vous pouvez simplement le déposer dans votre projet quelque part dans votre dossier de projet. Assurez-vous que c'est le dossier jaune et non le dossier bleu. Et puis il vous donne un dialogue public et vous voulez certainement vérifier les éléments de copie si nécessaire. Hit finition et tout sera mis là dedans. Vous pouvez agrandir le dossier et nous avons tous les fonds. Nous avons également notre fichier de licence, qui nous dit qu'il s'agit d'une licence ouverte, qui est génial. Peut dire que vous pouvez les utiliser tant qu'ils ne sont pas vendus par eux-mêmes. Vous pouvez les utiliser dans tout ce que vous vendez tant que le front n'est pas le but principal la vente. D' accord. Et si vous cliquez sur les fonds eux-mêmes, cela vous donne un aperçu de ce que tout ressemble maintenant par lui-même. Cela ne fonctionnera pas si nous essayons de spécifier ce front car le code X ne connaît pas tous les nez de code ex . J' ai un tas de fichiers, donc nous devons les lier à notre projet. Maintenant, je vais utiliser ce livre avant. Donc je vais copier cette commande, voir et obtenir ce dialogue d'édition. suffit de cliquer dessus une fois et d'attendre une seconde et il apparaîtra pour vous pouvez faire un clic droit et aller à renommer ce qui, bien sûr, n'est pas là. Peu importe. Il suffit de penser une fois que ça fera l'affaire. Ok, maintenant, comment on inclut ça ? Bien que ce soit assez simple, nous allons à notre liste info point p et nous travaillons. Pas celui qui les a fermés, celui-là. Et nous disons à notre projet expert quels fonds nous avons inclus. Et cela est fait feu. Cherchons les polices fournies par application afin que nous puissions cliquer que sinon les fonds sont fournis par le système Iowa lui-même. Droit ? Alors qu'est-ce que c'est alors que c'est en fait un tableau, Donc, si vous cliquez sur cette option de type, vous pouvez sélectionner tableau. Et puis si vous développez les fronts, vous avez l'élément non, et vous pouvez cliquer là et enveloppé dans le nom de votre front avec son extension de fichier. Cela devrait être O T f. Maintenant, juste pour vous assurer que ces fonds sont copiés, cliquez sur la solution. Passez à construire des phases, je crois que pourrait construire des paramètres cette tribu construire deuxième note, construire des visages, certainement construire des visages. Là, il est en bas. Nous voulons copier Bundle Resource est et remarquez comment il est copié sur votre dossier de polices. Et ce qu'il fait, c'est qu'il déverse simplement tous ces éléments dans le même répertoire. C' est pourquoi nous n'avons pas besoin de spécifier un répertoire dans la liste p info dot. Donc c'est quelque chose à se méfier. Faites attention à la dénomination des fichiers personnalisés que vous apportez. Vous ne voulez pas qu'un conflit de nom de fichier n'importe où parce que pour autant que je m'en souvienne, il peut avoir changé récemment. Mais j'en doute. Le compilateur met en fait toute votre ressource est comme tous ces fronts, etcetera dans une ressource est un dossier dans votre arriver car nous allons plus loin dans l'apprentissage de l'Iowa va regarder cette structure de fichier hors de nos majuscules. ce moment. Ouvrons simplement notre planche principale. Laissons une seule étiquette et essayons d'assigner ce front, puis testez-le. Alors allons pour l'étiquette, vous savez, les objets, inspecteur, cliquez et faites glisser. Centrez-le juste pendant que nous sommes ici, donc il semblera certainement avoir les contraintes et ils ont obtenu les attributs d'étiquette, Inspecteur, ils vont à l'avant, frapper le texte. Icahn, va à la coutume et voyons si on a vraiment un Cooper Hewitt là-bas. Voilà, Cooper Hewitt, et vous remarquerez que ça nous donne toutes les options. Maintenant, si je choisissais une de ces options que je n'incluais pas ma liste info p, nous obtiendrions un Kratch hors sorte. Donc je vais choisir le livre parce que je sais que ça marche. Craquez à l'avant et lancez ça sur notre simulateur juste pour tout vérifier. Donc maintenant cette étiquette Shourd que nous avons notre ère de localisation, cette étiquette devrait être du type de livre Cooper Hewitt. Pour moi, ça ressemble en quelque sorte. Est-ce que ça peut ? Oh, bien sûr, c'est pareil. Dahmer vous lui dites d'utiliser les polices Cooper Hewitt, donc bien sûr, c'est le même. Mais tout fonctionne maintenant juste pour vous montrer si j'ai spécifié une version différente de Cooper Hewitt comme le livre droit, Alec et puis j'ai couru ça dans. Mais j'espère, eh bien, eh bien, n'espère pas que vous n'espérez jamais un crash, mais je pense qu'il va planter ou par défaut à un autre type d'étiquette, est-ce pas ? Donc ça ne s'est pas écrasé auparavant. Mais maintenant, nous avons cette étiquette simple par défaut à l'avant du système. C' est juste quelque chose à savoir si vos polices ne s'affichent pas correctement. Donc nous voulons revenir à notre livre. Maintenant, c'est ennuyeux parce qu'il va vraiment vous montrer l'italique dans le designer, mais il n'apparaît pas vraiment où nous voulions apparaître. Ce qui, bien sûr, est dans le mais de toute façon, c'est ainsi que vous avez recherché et implémenté des polices personnalisées dans votre application. 86. M118 Autel de choisir un type de peau: afin de calculer le temps de brûler pour quelqu'un assis dans un certain indice UV de soleil, vous devez savoir quelque chose sur ce type de peau. Ainsi, plus ils sont blancs, plus vite ils brûlent et plus ils sont médecins, plus ils peuvent réellement rester dehors au soleil. Maintenant, il y a quelques catégories allant du blanc au noir, et nous pouvons permettre à un utilisateur de choisir l'un de ces types d'habillage dans notre application. Donc, nous allons configurer l'interface entière, la partie graphique et la partie de codage et de programmation réelle, qui inclut la définition du type d'habillage dans les valeurs par défaut de l'utilisateur afin que l'utilisation qui n'ait pas à réinitialiser ce type d'habillage chaque fois qu'ils ouvrent l'application. Alors allons-y. Droit. Donc, nous voici dans la partie graphique de notre application. Nous avons ouvert notre planche principale, et nous allons commencer à jouer avec l'apparence de tout maintenant. Parfois, une fois que vous avez développé assez longtemps, vous n'avez pas nécessairement à vous en tenir aux paradigmes que cet écosystème de développement vous impose comme IOS commence, et nous avons déjà commencé à faire quelque chose comme ça en ayant une police personnalisée pour notre étiquette. Je veux dire, pourquoi utiliser le système un ? Et je pense qu'on va aller plus loin dans ce petit processus. Nous allons réellement styler cela après le style Windows Phone des choses. Ils comptent donc beaucoup sur l'alignement des fronts et le noir sur les couleurs de type blanc. Donc, ce qu'on va faire, c'est choisir nos principaux quelques-uns là-bas, et on va mettre ce fond en noir. Ok, alors choisissons le travail qu'on a déjà traîné. Changeons sa couleur en blanc complètement. Si on veut, on peut monter un peu la taille. Maintenant, cette étiquette ne va pas simplement dire étiquette. Ça va nous donner les minutes jusqu'à ce qu'on brûle. Alors, allons en avoir 10 là-dedans. Ça devrait être aligné au centre. Maintenant, il est un peu écrasé au milieu. Donc, ce que nous pouvons faire est de voir quelle taille nous donne un meilleur ou moins écrasant. Si vous aimez quelque chose à propos de cette taille, alors affaiblir, sélectionnez-le et nous pouvons alors imposer cette hauteur horizontale, cache horizontale, hauteur verticale sur elle. Donc ce sera toujours aussi haut. Ok, ça a l'air assez bien pour l'instant. Droit ? Le but de cette section est donc de permettre à l'utilisateur de choisir un type d'habillage. Eh bien, tout d' abord, pour laisser sur l'utilisateur Non, il y a un bouton par lequel ils peuvent choisir votre type de peau. On doit leur en donner un. Donc, nous allons d'abord créer une autre étiquette Maintenant. On pourrait faire glisser une étiquette séparée ici pour le faire. Ou nous pourrions sélectionner notre étiquette existante Hit commande C Command V et cliquer et faire glisser, peut-être quelqu'un près du coin supérieur. Laissons sa taille vers le bas et changeons la police de celui-ci. Peut-être pourrions-nous inclure d'autres fonds, donc je pourrais vraiment vouloir mince. Maintenant Thin ne fonctionnera pas dans ce cas, si vous vous souvenez, parce que nous n'avons pas vraiment spécifié ce front dans notre liste Info P. Nous l'avons dans notre liste de fonds devrait être ici il tiret mince. Mais si nous passons à notre liste de P, nous devons l'ajouter dans ce tableau. Alors allons-y plus et allons-y. Cooper Hewitt tableau de bord mince point Ozier. Maintenant, c'est disponible. Alors, retournez à notre storyboard, et quand nous lancerons ça, nous n'aurons rien de terrible qui se passera. Et puis laissons tomber cette taille, et c' est double-cliquer dessus et changer la couleur de la peau. Ou peut-être le type de peau est une meilleure description. Ok, on peut juste l'ouvrir, le fermer un peu. Vous remarquerez qu'il a toujours cette hauteur parce que nous avons copié cela aussi, aussi, donc nous pouvons double-cliquer dessus et nous pouvons le changer en quelque chose comme 44 et vous verrez probablement pourquoi c'est. Dans une minute. Nous pouvons lui donner une bonne intelligence et vérifions juste quelles contraintes. C' est comme ça que ça l'a déjà fait. Alors, sélectionnez l'élément en haut, non ? C' est sélectionner notre petite icône de règle là. Si vous faites défiler vers le bas, il nous dit que nous n'avons que la largeur et la hauteur, ce qui est bon. Cela signifie que nous pouvons l'épingler sur le bord supérieur de notre appareil. Donc ce que je veux faire avec ça, c'est que je vais le rétrécir juste pour toucher, disons à environ 90. Je veux que ce texte soit une sorte de remplisseur là où il est là. Et puis je veux que ce texte s'aligne à gauche parce que ce que nous essayons de faire est un principe de conception d'aligner tout sur une marge sur la droite sur la gauche, plutôt, et nous ferons la même chose sur la droite si nous doivent. Donc j'ai eu notre type de peau. C' est très bien. Contrôlons. Cliquez et faites-le glisser vers le haut afin que vous puissiez obtenir un contrôle d'espacement vertical envoyé, cliquez et faites glisser le côté et obtenir l'espace de début et définir. Donc maintenant, il est fixé dans le coin supérieur, et nous savons quelle que soit la taille de l'appareil, nous aurons toujours au moins ce coin supérieur beaucoup que ce soit et paysage ou portrait. Ok, alors quel type de peau y a-t-il maintenant ? Nous avons besoin d'un bus pour changer réellement le type d'habillage afin que vous puissiez cliquer et suivre cela dans. Changons d'abord la couleur de ce bouton orteil blanc pour correspondre à tout. Changeons son texte pour le changer. Dépendez ça un peu. Nous pouvons donner à nouveau une largeur et une hauteur fixes. Maintenant, Apple dit que vos boutons devraient avoir au moins 44 points d'écran de haut, et la raison pour laquelle ils font cela est parce que c'est la meilleure façon de l'aligner avec la taille de nos doigts humains. Il supprime cette inexactitude que les petits boutons ont, mais plutôt gênant, ils enfreignent effectivement cette règle dans certaines de leur propre abside, ce qui est très étrange. Quoi qu'il en soit, ils disent, Si votre bouton n'est pas 44 embauche une chance, vous pourriez être refusé un examen APP. Ça ne m'est jamais arrivé. Mais je n'enfreins pas les règles si souvent. Je les plie. J' ai vraiment bafoué les règles, non ? Alors maintenant ça. Mais ça ne correspond pas exactement, et c'est probablement quelque chose à voir avec l'avant. Alors sélectionnons notre front personnalisé. Allons voir notre Cooper Hewitt. On peut avoir cette série de Finn. On pourrait le faire envoyer au livre si on le souhaite, pour qu'on puisse le changer. Mais le haut maintenant, nous avons juste besoin de positionner ça. Contrôlons le clic et le glisser-glisser vers le type d'habillage. Donnez-nous un espacement horizontal, contrôle, clic et glisser vers Eh bien, nous pourrions effectivement faire le type de peau à nouveau, et nous pourrions leur envoyer verticalement afin qu'ils s'assoient le long du même axe, et cela les aligner très bien pour nos usages. Hé, les gars, j'ai repéré. Maintenant, nous devons faire est de sortir ces articles parce que nous allons être dans cette étiquette et cliquer sur ce bouton. Alors ouvrons notre assistant rédacteur en chef. Ça devrait vous sembler familier maintenant. Il fait défiler. Il suffit de toucher. Assurez-vous que c'est la bonne vue. Contrôle. Assure-toi toujours de ça. Et puis laissons tomber un contrôle. Cliquez et faites glisser de notre étiquette à la peau de type LeBeau. Et, bien sûr, parfois, vous obtenez cette époque. Ça a été ennuyeux, alors dépose-le à un autre endroit. Toujours dans la même région. Ça devrait marcher. Ici, nous allons, et vous pouvez le séparer vous-même pour vous assurer que tout est agréable et clair pour vous. Droit. Ensuite, on va faire notre contrôle de bouton. Cliquez et faites glisser. Changez-le en inaction. Appelons ce type d'habillage cliqué et connectons mieux. Parfait. Maintenant, fermons ça. Ramenez dehors des bars si vous avez besoin de Teoh. Ok, allons à notre contrôleur de vue Now view controller. On va faire des trucs avec le type de peau. Cliquez en bas. Nous ne pouvons pas encore faire quoi que ce soit parce que nous n'avons pas d'options pour afficher notre utilisateur. Donc, créons quelques options pour les types de peau. Maintenant, ces types de peau de assez fixe. Quand il s'agit de calculer les UV, il y a des types 1 à 6 sur. Tout le monde sait de quel genre ils sont. Donc, ce n'est rien de trop compliqué. Allons à notre projet. Créons un nouveau fichier, et ça va être une structure qui tiendra notre type de peau. Donc ça va être un fichier rapide d'avion. Et comment on va appeler ça ? Eh bien, appelons ça. Peut-être que les types de peau vont de l'avant. Créé. Maintenant, nous allons créer notre structure appelée type de peau. Parfois, il se termine automatiquement pour nous, ce qui évidemment nous ne voulons pas de type de peau de structure. Et qu'est-ce qu'on va avoir ici ? Quoi ? D' abord, nous allons laisser taper un et vous remarquerez les noms de variables. Vous pouvez en fait utiliser un numéro maintenant. Certains programmes n'aiment pas ça. Certains ne le dérangent pas. Et si vous êtes comme moi, vous n'êtes pas vraiment dérangé tant que vous savez que vous serez compatible avec le futur, ce que je pense que ces jours-ci vous êtes presque garanti. Donc tapez un maintenant, ça va tenir la description de la peau. Donc c'est quelque chose que nous allons réellement montrer à l'utilisateur, et nous allons aussi l'utiliser comme une sorte de variable interne. Nous savons donc quel type de peau nous avons. Donc ce que nous allons montrer aux utilisateurs de type 1, ce qui est égal à des slash lights pâles. Donc si tu brûles très facilement, c'est toi. Ce vaisseau, et puis,bien sûr, bien sûr, a parlé à la barre oblique droite du tiret de Type 2. Ok , le type 3 est égal au type 3, qui est moyen type 4, ce qui est notre belle Méditerranée tout son brun. Laissez le type cinq égal à cinq points de suture Doc Brown. Et enfin, nous allons Type six est égal à types. Six. Slash noir très foncé. Tu ne le croiras jamais. J' ai fait ça pour un tutoriel pour quelqu'un, et ils ont dit que j'étais raciste parce que j'avais dit le mot noir. Ils ne m'ont pas traité de raciste parce que j'ai dit White, ils ont appelé son visage Is va si noir ? J' étais genre, Oh, allez, remets-le , du fromage de toute façon, certaines personnes. Donc, je vais dire que maintenant revenons à notre contrôleur de vue comme aller vers le haut et créons une variable pour réellement tenir ce type de peau jusqu'à présent. Et cela, bien sûr, va être hors type de peau que nous venons de créer est égal à, et vous type de peau points sur. Nous allons juste mettre un défaut dans l'année, donc nous pouvons juste mettre trois serrés si nous le voulons. Oh, et oups. Ça devrait être une chaîne. Évidemment, nous avons mis ces cordes en ce moment à l'intérieur de notre peau. Boston a changé. Voyons ce qu'on va faire ici. Eh bien, tout d' abord, nous avons besoin de quelque chose pour dire à notre utilisateur de choisir quelque chose. Qu' est-ce qu'ils vont penser ? Eh bien, un de ces types de peau qu'on a déjà créés, alors quoi, on va apprendre à House c'est créer de l'alerte. On l'a déjà fait avant. Si tu te rappelles ici, dans notre gérant de localisation, on va en créer un autre. Ça s'appelle une feuille d'action où il nous donne tout un tas d'options que nous pouvons spécifier . Donc ça commence à peu près la même chose. Laissez, et c'est égal à un an. J' alerte le contrôleur sur ça. Je sais. Je tape que quand Swift réparera tout ça pour moi, nous pouvons définir notre message de titre, etc. Alors, quel est le titre ? Eh bien, ça va être de type peau. Get, peut-être mettre un gâchis. interrogation dessus. Notre message va être S'il vous plaît en choisir un. Quelque chose comme ça. Et notre style préféré est sombre. Évidemment, ce n'est pas dans l'Ehlert. Il s'agit d'une feuille d'action parce que nous voulons qu'un utilisateur prenne des mesures à partir de la feuille de choses que nous affichons . En ce moment, nous pouvons commencer à ajouter les actions qui correspondent à nos types de peau. Alert ancré annonce action, et nous voulons une nouvelle action U I alerte, donc il suffit de frapper. Entrez, et il le remplira pour vous. Ouvrez votre support et vous obtiendrez le coup complet automatique. Entrez. Si la complétion automatique ne s'affiche pas pour vous, alors par tous les moyens, vous pouvez également le taper. Mais ça devrait être juste. Alors c'est quoi le 1er ? Eh bien, le 1er 1 va être notre type 1. Comme pâle, il brûle plus ou moins facilement dès que vous pensez juste au soleil afin que nous puissions commencer à taper le type un ici, etcetera, etcetera. Mais bien sûr, il y a un moyen beaucoup plus simple parce que nous ne voulons pas se répéter tout le temps ou nous devons faire est d'aller aux fléchettes de type peau, type un, et cela va nous montrer cette chaîne. Ok, Et puis notre style d'action let est ancré et nous voulons juste par défaut. Rien de spécial. Maintenant, gestionnaire, si vous tablez dessus et que vous appuyez sur Entrée. Il vous permet de créer un gestionnaire. Qu' est-ce que Handler fait ? Eh bien, c'est le bit de code qui s'exécute après que cette action est cliquée. Et quand il s'exécute, il passe sur l'action elle-même. On appellerait ça l'action. Donc, c'est simplement passer un argument, alors notre code lui-même, nous pouvons supprimer. C' est ce qui s'exécute et ce que nous voulons faire est de définir le type de peau auto point, type de peau t égal avec une majuscule s. Cela devrait être, euh, type un. Nous avons donc défini le type d'habillage approprié. Maintenant, si j'étais vraiment intelligent ici, je pourrais vraiment supprimer ça. Je pense que je ne suis pas sûr de voler le brassard ici. Nous pourrions avoir nos chiens d'action et nous obtenons notre titre parce que si vous vous souvenez, notre titre est ce qui n'est pas que nous voulons celui-ci. Oui. Notre titre est en fait le type de peau un. Maintenant, c'est facultatif, donc il se plaint. Mais dans ce cas, nous savons qu'il existe que nous pouvons atteindre le point d'exclamation. Alors, qu'est-ce que ça veut dire ? Bien que cela signifie que ce petit morceau de code peut maintenant être utilisé comme un modèle, toutes les autres actions que nous voulons ajouter. Donc je pense juste, en termes d'économie d'espace de programmation ici, ce que vous pourriez être tenté de faire est de copier ce collé en dessous et aller Eh bien, faisons maintenant taper choisir la peau serrée, et ensuite nous avons notre peau de type deux triés et vous devrez le faire et plus de quatre fois. Pouvez-vous imaginer combien de code cela va prendre ? Eh bien, je pense que c'est en fait une bien meilleure façon de faire ça. Donc ce qu'on va faire, c'est enlever ça. Nous allons utiliser un bon vieux pour lécher quatre types de peau lointaine dans notre tableau de types de peau et quelque chose sorte qu'il n'est pas encore tout à fait complet. Je vais juste taper ça. J' ai mis mes accolades donc nous avons besoin de tous les types de peau à l'intérieur de ce tableau. Revenons à nos types de peau, pas vite. Et nous devons tout mettre ici dans un tableau. Donc, créons un tableau hors chaînes. Donc, avons chaîne tous les types de peau. Je suis retourné à une autre langue ici. Tu vas devoir m'excuser. C' est une fonction. Tous les types de skint, types de skin, qui va retourner et arracher les chaînes ouvrir et fermer les accolades. Laissez-moi juste m'assurer que compile correctement. J' ai fait quelque chose de stupide. Ça fait le tour. C' est parce que j'avais déconné avec pas de Js et angulaire ce matin, et ça m'a complètement jeté le cerveau pendant six heures ici, non ? Donc maintenant, nous pouvons retourner une nouvelle fonction, qui contient tous ces six types de peau. Donc, retournez un nouveau tableau hors type un. Tapez deux. C' est Sentra. Ok, donc ça devrait rendre tout ce qu'on a. Ok, alors disons, Fats, revenons à notre contrôleur de vue. Maintenant, nous pouvons utiliser notre pour Luke, donc avons tous les types de peau. Ça va vivre tout le lot, et ça va attraper le type de peau, et on devrait en fait faire un laisser maintenant. Je n'ai pas étudié cela en profondeur, mais la différence Abner, nous discuterons de cette différence plus tard ont encore fait une erreur stupide. Là, c'est assez angulaire pour que je m'arrête. Bon, maintenant on a notre type de peau. Maintenant, nous pouvons ajouter dans Action Year, qui est le type d'habillage sur DWI peut définir ce gestionnaire laisser tel quel. Cela va vivre à travers tous les types de peau et ajouter un peu d'action pour chacun . Et cela nous permet d'économiser beaucoup de code et beaucoup de code répété. Plus important encore, c'est un excellent exemple hors d'une boucle, nous fait économiser beaucoup de temps maintenant, une fois que nous faisons une fois que nous l'avons fait ? Eh bien, on va faire un cadeau, et on va choisir cette première option. On va le présenter beaucoup. On va l'animer. Et à la fin, ce que nous voulons faire. Eh bien, absolument rien, merci. Alors sauvegardons ça. Et maintenant, il est temps de courir et de tester qui permet hit play sur nos taux SIM. Nous voilà maintenant, nos boutons se sont un peu écrasés ici, donc nous devons changer ça. Eh bien, allons tout de même cliquer dessus et haut affiche notre feuille d'action afin que nous puissions cliquer sur les éléments au fur et à mesure que nous allons et il sélectionnera cet élément. Super. Donc, notre petite boîte de sélection fonctionne et pour relativement peu de code pour ce que nous avons réellement dans notre application. Maintenant, nous allons régler le formatage des étiquettes et des graphiques plus tard au fur et à mesure. Mais pour l'instant, on va continuer la plomberie parce que c'est là qu'on est en ce moment. Maintenant, nous devons changer cette étiquette qui apparaît à notre temps de peau. Maintenant, voici un nouveau concept pour vous sur ce concept est ce que vous auriez fait précédemment est sélectionner votre étiquette. Et si nous l'avons appelé comme vous changeriez votre texte pour être égal à ce que vous voulez changer. Mais il y a en fait un moyen vraiment snazzy de faire cela sur la façon vraiment snazzy sont ce que nous appelons des observateurs sur les variables. Maintenant, un observateur sur une variable signifie que si nous avons quelque chose comme ça et que quelque chose change , il , déclenchera automatiquement un morceau de code pour nous. Et toutes les variables viennent avec ces propriétés d'observateur. Et tout un tas d'autres prophéties allaient juste regarder la seule que nous avons moment. Alors, comment on les met ? Eh bien, après que le type 3 ait frappé un espace ouvert, fermez nos accolades. Donc, il a sa propre petite zone de code, si vous voulez. Maintenant, le type a envoyé l'ouverture. Fermez nos accolades. Droit. Donc, cela va se déclencher après que cette variable a été définie sur bean. D' où le mot-clé n'a pas défini. Maintenant, il y a beaucoup d'autres interruptions que vous pourriez faire dans le cycle de vie d'une variable . Il suffit de les chercher si vous voulez savoir. Pour l'instant, nous allons simplement à Prince, euh, vieille peau plus et nous pouvons saisir l'ancienne valeur de la variable parce qu'elle est toujours en mémoire. Quelque part ancienne valeur, plus nouveau et nouveau. Bien que nous n'ayons pas besoin d'une nouvelle valeur, Plutôt, nous avons juste besoin de la variable elle-même type de peau. Droit ? Donc, cela va se déclencher chaque fois que la variable change et faire quelque chose que nous voulons avec des valeurs anciennes ou nouvelles. Donc si on joue sur ce méchant garçon et qu'on fait ça dans notre sim, on devrait avoir la belle petite empreinte ici, dans la zone des aboiements. Alors changeons le type un Là, nous l'avons changé. Tapez deux. Là, nous l'avons. Alors maintenant, nous sommes sûrs que tout change selon ce qu'il doit faire. Et c'est un très joli, petit morceau de code. Super. Donc maintenant, nous savons que ça marche. On peut arrêter notre sim. Lâchez cette boîte. On peut supprimer ça. On n'a plus besoin d'imprimer. Nous pouvons définir notre étiquette de type de peau. Ne pas envoyer de texte égal au type d'habillage, plus le type d'habillage. Continuez à taper la peau. Je ne suis pas dépouillé. Je vais bien faire. Merci beaucoup. Ok, donc on peut avoir ça dans leur si on le veut encore dans leur ou on peut changer. C' est à nous de décider, non ? Donc maintenant, si nous frappons le jeu chaque fois que cette variable change, cela va aussi changer notre étiquette de type de peau. Donc tapez un, il le change en haut. Nous ne pouvons pas le voir avec notre formatage est assez mauvais, mais quoi que ce soit, il est en train de changer. Ok, donc c'est une chose assez bizarre que vous pourriez faire avec des variables qui ont fait ensemble. Maintenant, il y a une chose très méchante qui manque ici, et c'est en mettant cet entendre tout autre développeur qui regarde votre code, c'est facile à manquer. C' est assez facile à rater. Chaque fois qu'ils changent de choses, ils diront : Pourquoi l'étiquette change-t-elle ? Et pour l'application simple, il est assez facile de comprendre quel est le plus complexe. Ce n'est pas si facile. Donc ce que je vais faire, c'est appuyer sur la commande X, je vais taper le nom d'une fonction que nous n'avons pas encore créée. Modifier l'étiquette de type d'habillage. En fait, nous allons appeler cette mise à jour deux étiquettes de type de peau, et nous allons juste déposer ça quelque part en bas de l'étiquette de type de peau de mise à jour de fonction inférieure. Et nous avons laissé tomber la seule ligne de code là-dedans. Donc maintenant, cela est facile pour développer son débogage. Ils regarderaient cela et diraient : C'est là qu'ils ont échangé. C' est un nom qui a du sens. J' appuyais la commande C commande F pour trouver, et je le collais dans, et je pouvais voir où il faisait froid, et puis il pourrait facilement démystifier votre code. Et quand je dis un autre développeur, je veux dire vous dans le futur quand vous vous demandez, Qu'est-ce que j'ai fait et pourquoi est-ce qu'il fait ce qu'il a fait ? C' est donc une bien meilleure façon de tenir compte de ce code. Ok, je pense que c'est assez pour cette petite conférence. Cela dure depuis longtemps. 20 minutes quelque chose maintenant. Alors je vais faire une petite pause. Maintenant. Tu vas faire une petite pause, et on reviendra à ça dans la deuxième partie. Donc on va continuer à partir d'ici où on part, donc je te vois dans la prochaine 87. M119 Autorisation de choisir un type de peau partie 2 de stockage de la partie 2: dans cette deuxième partie de la sélection d'un type d'habillage, nous allons continuer à partir de l'endroit où nous nous sommes arrêtés dans la première partie, qui consistait à définir quelques boutons et étiquettes pour choisir un type d'habillage. Et dans cette section, nous allons ajouter cela en stockant le type d'habillage par défaut de nos utilisateurs à l'intérieur des valeurs par défaut de l'utilisateur . Alors ouvrons nos projets et partons. Maintenant, la première chose que nous devons corriger est ce genre de mise en page de notre étiquette ainsi que cela égal. Cela devrait être un tiret, donc nous allons essayer d'abord la mise en page de ces étiquettes. Revenons à notre projet, allons à notre tableau principal et commençons à déplacer les choses à l'intérieur d'ici. Alors nous allons zoomer d'un coup et voir ce que nous pourrions faire. Maintenant, on pourrait mettre ce bouton de changement en dessous. Je pense que ça pourrait avoir l'air plutôt sympa. Alors faisons ça. Mettons-le un peu en dessous, et la façon dont nous allons le faire est en supprimant simplement certaines de ces contraintes qu'il a. Nous voulons donc supprimer la contrainte qui l'épingle au type d'habillage. Parfois, si vous ne pouvez pas le voir. Vous pouvez déplacer un peu votre étiquette, et à un moment donné, vous découvrirez que j'étais en fait celle-là. Je n'avais pas besoin de bouger quelque chose de gros. Sélectionnez votre contrainte et supprimez-la. Nous avons donc également cette contrainte à l'année de pointe, que je n'arrive pas à sélectionner. Peut-être qu'il appartient au type de peau. Oui, c'est le cas, donc je peux l'enlever. Ok, Alors maintenant le changement n'a qu'une largeur et une hauteur. Nous pouvons laisser cette largeur et cette hauteur plus ou moins inchangées. Et on peut juste changer ça de haut en bas. Et puis ce que je vais faire, c'est que je vais aligner ça sous l'étiquette de type de peau quelque part par ici. Donc, avant de le faire, sélectionnons le bouton et voyons si nous pouvons réellement l'aligner sur la gauche. Et oui, oui, on peut. Si vous regardez du côté droit, notre section d'alignement nous permet de l'épingler de ce côté. Et puis on peut donner à ça une hauteur de 44. C' est très bien. Et il a donné un esprit d'esprit. Quoi que ce soit, ça a juste augmenté cette attaque parce qu'elle avait l'air écrasée avant. Ensuite, nous pouvons contrôler, cliquer et faire glisser vers notre type d'habillage, et nous pouvons aligner les bords d'attaque. Donc, si nous cliquons dessus, ça devrait être zéro. C' est un double clic qui fait apparaître ces bateaux, et ensuite on peut juste décalé juste une touche pour que ça ressemble bien. Contrôle, cliquez et faites glisser met un espacement vertical, et maintenant tout devrait être aligné. Bien que lorsque vous faites cela, parfois cela fait un changement. Il applique effectivement ces contraintes qui n'ont pas encore été appliquées. Donc, si les choses bougent lorsque vous contraindez quelque chose dans le code X ou dans cet éditeur, c'est parce que ces contraintes sont soudainement activées. Donc c'est notre contrainte 44 qui le fait en fait. Je vais avoir bafoué les règles d'Apple et en mettre 37 dans leur Il y a un Z. Tu vois à quoi ça ressemble ? Je pense que ça va pour l'instant. Je vais augmenter la largeur de cette étiquette de type de peau, alors sélectionnons cela avec et faisons ce 300 qui va nous couvrir pour les petits appareils, n' aura jamais besoin de rien de plus que cela. Et si nous le faisons, nous allons juste diminuer nos droits de taille avant. Nous avons corrigé ce petit problème Allons à nos types de peau, pas rapide et changer ce stupide égal à Teoh Dash Slash Slash light. OK, maintenant passons à notre contrôleur de vue. Nous avons réglé tout ça. Maintenant, quand nos abcès se chargent, nous ne voulons pas vraiment que nos habitués aient à sélectionner leur type de peau à chaque fois. Nous voulions l'enregistrer et le charger automatiquement chaque fois que le premier chargement est effectué. Pour ce faire, nous pouvons utiliser nos valeurs par défaut de stockage local, notre utilisation de stockage par défaut. Maintenant, l'endroit évident pour le faire est de créer notre nouveau fichier. Créons mon nom préféré, qui est les utilitaires tous les trucs utiles. Il n'a pas vraiment un autre service domestique maintenant, une part, vous pouvez le mettre dans les services publics. Vous pouvez également le mettre dans votre propre type de fichier de stockage local. Peu importe ce que tu veux appeler ça. Ok, alors faisons les utilitaires. Juste une note de côté pour les futurs voyages pour l'efficacité future, je trouve avoir une section utilitaire est en fait très, très utile sur. Plus souvent qu'autrement, je vais effectivement copier ceci. Les utilitaires déposent son intégralité dans d'autres projets que je commence à créer parce que j'ai toujours besoin des choses contenues dans les utilitaires. J' ai juste besoin de les modifier légèrement de temps en temps. Mais les services publics sont très, très utiles. Mon même publier ma propre bibliothèque pour ceux-ci. C' est une bonne idée. Ok, donc la première chose que nous faisons est que nous avons besoin d'une fonction pour obtenir nos valeurs par défaut de l'utilisateur. Alors appelons ceci obtient le stockage. Ça va s'll. Bien sûr. Renvoie un type hors valeurs par défaut de l'utilisateur. Maintenant, je ne sais pas si nous avons réglé ça pour être inclus. Les chauves-souris. On verra ce qui se passe. Je pense qu'on devrait l'être. D' accord, revenons. Comment ? Où Années de valeurs par défaut a ancré la norme. Ok, maintenant nous avons besoin d'une fonction pour définir le type de peau dans notre utilisation des valeurs par défaut, et nous allons passer une valeur qui va juste être une chaîne simple, et nous allons sortir, Est-ce que vous les gars, qui est obtenir du stockage pour qu'ils soient prêts à partir. Ensuite, nous avons besoin d'un arrêt par défaut, et nous allons définir une valeur pour une clé. Alors, quelle est la valeur ? Eh bien, c'est la vallée dans laquelle nous passons. Quelle est la clé ? Ou nous pourrions définir ceci comme un type de peau ou de péché. Mais si vous vous souvenez, nous avons fait cela d'une manière légèrement différente avant de mettre une structure quelque part. Dans ce cas, nous n'avons qu'un seul objet. Donc, ce que nous pouvons faire est que nous pouvons couper cela et ce que je peux faire normalement est de mettre une marque, utiliser un stockage par défaut. Donc, ce n'est qu'un commentaire que j'ai créé ici. Ce n'est pas réellement compilé et nous allons avoir un bar. La clé serrée de la peau est égale au type de peau Maintenant. Je peux utiliser cette clé partout afin que je puisse la déposer dans la touche de type d'habillage ici. Ok, donc nous n'avons pas besoin de créer toute une structure pour ça comme nous l'avons fait sans APS précédent. Et une fois que nous l'avons défini, tout ce que nous avons à faire est de dire par défaut dot synchronize, et cela fera le travail pour nous. Maintenant, nous avons besoin d'une fonction pour obtenir le type de peau. Laissons tomber ça. Faisons de l'espace. Vous pouvez voir la fonction obtient le type de peau, et cela va passer une chaîne. Naturellement ouvert. Fermez nos accolades. Prenons notre première étape de stockage. Ensuite, nous allons essayer de sortir quelque chose du stockage. Nous ne sommes pas sûrs si c'est là, donc nous allons dire si laisser le résultat est égal à de folks fait des cordes. On va essayer de sortir une ficelle des portes. Quatre clés ou quelle est la clé ? Et si nous commençons à taper la clé ? C' est la clé de type peau. Oups. Donc, si nous pouvons obtenir ça, alors nous pouvons retourner le résultat. Agréable et simple. Mais si on ne peut pas l'obtenir bien ici ? Nous avons besoin d'un cas par défaut, qui est de retourner quelque chose. Alors retournons nos points de type peau réguliers, et nous pouvons retourner l'un des types de celui-ci. Prenez trois peu importe maintenant, revenant au fait que c'est une application qui indique aux gens combien de temps ils seront brûlés. Il est probablement préférable d'aller vraiment pessimiste sur vos estimations si elles ne vous donnent pas un type de peau et mettre un avertissement de type. Donc là, aussi blanc que possible. Ils seront brûlés en bref que possible, et votre application leur donnera l'avertissement requis pour cela, dit peu probable. Ça regarde et va. J' ai une heure et ils sont blancs et ils ont mis un cadre pour un Noir, et évidemment ils ne peuvent pas rester. Comment au soleil pendant si longtemps. Ok, donc tout est trié. On devrait pouvoir sortir notre entrepôt de là. Revenons à notre point de vue, contrôleur. Commençons à assigner certains de ces trucs. Le premier endroit où nous allons regarder est la variable réelle elle-même. Donc maintenant, on ne va pas lui assigner comme trois. Au lieu de cela, on va tomber dans nos services publics, et on va aller chercher le type de peau, ce qui rendra notre force. Maintenant, j'espère que ça va le faire. Et quoi qu'il revienne, il le fera. Puis le feu a réglé, et il mettra à jour l'étiquette automatiquement. Donc, nous n'avons pas vraiment besoin d'écrire de code à l'intérieur. Vu il charge, ce qui est belle programmation. Si vous me demandez, laissez-moi me taper sur le dos. Bien joué. Totalement planifié comme bas. Ok, faisons ça dans notre simulateur iPhone S e ou n'importe quel simulateur que vous avez. Donc ça devrait le remplacer. Et d'un seul coup, nous aurions dû prendre soin de notre sélection de peau sur Devinez ce que nous n'avons pas. Et c'est parce que cette étiquette en haut n'a pas vraiment changé la première fois. Donc nous venons d'apprendre qu'en fait, ce sens ne se déclenche pas. La première fois que notre variable change, c'est intéressant pour moi. Vérifions. Ça marche toutes les autres fois. Changeons ça en White Fair. Oui, donc partout ailleurs fonctionne très sombre ou étiquette noire ne correspond pas tout à fait. C' est bon, donc on peut arrêter ça. Ok, donc cet acte à pas ne fonctionne pas vraiment. Eh bien, il y a deux options ici. Il y a deux options ici. Nous pouvons regarder à travers les quais et voir quels autres articles nous pouvons regarder. Tu sais quoi ? C' est un feu assez, ou nous pouvons simplement aller voir la charge parce que nous savons que la vue a été chargée ou chargée après que toutes les variables de classe ont chargé de sorte que le type de peau sera disponible et en vue a chargé. Nous pouvons simplement mettre l'étiquette de type de peau mise à jour, Donc c'est totalement votre choix sur la façon dont vous voulez architecter cela. C' est assez ennuyeux que nous ne puissions pas utiliser cette belle solution, qui ne fonctionne pas réellement. Ce n'est pas si beau, mais comment c'est ce que c'est, non ? Alors allons jouer et voyons ce que ça va faire pour nous. Donc maintenant, nous devrions garder quelque chose en mémoire. Payez les lumières. Si nous changeons cela à moyen, en fait changé à Oliver Brown Et puis je double-clique sur ce bouton d'accueil, supprimé l'application, revenir à l'écran d'accueil, ouvrir à nouveau l'application. Nous avons un très léger problème sur quel est le problème ? Eh bien, nous ne l'avons pas vraiment gardé dans notre peau serrée. Il nous donne le type 1 par défaut. Donc, revenons à notre a envoyé un intérieur d'ici après que nous avons défini cette étiquette, ce que nous allons faire est d'appeler nos utilitaires pour dire cette valeur, qui a été défini type d'habillage si vous enregistrez et bien sûr que nous passons sont variables. Sauvons ça. C' est juste idiot de moi. J' ai oublié de l'appeler. Je trouve des oups. Je trouve qu'il aide réellement d'avoir un morceau de papier sur lequel je gribouille quand je pense à la logique de mon application et à ce que je crée réellement, par programme. Alors je n'oublie pas des choses comme je viens d'oublier, mais c'est un peu trop de vous parler, vous divertir et de faire tout ça en même temps. Alors, changeons ça. Rangons brun foncé. Allons à notre mélangeur peut-être. Enlevez-le, retournez chez nous. Vérifions le haut et il apparaît avec brun foncé. Donc, il est en fait l'enregistrement dans nos valeurs par défaut de l'utilisateur. Nous avons maintenant toutes les données dont nous avons besoin. Et nous avons un moyen de définir le type de peau de nos utilisateurs. Et nous avons également réduit notre code de manière significative par deux choses dont je veux que vous vous souveniez après ces deux conférences. Et cela a été fait pour que nous puissions changer des choses ici après avoir changé quelque chose dans une variable et aussi une utilisation judicieuse de quatre boucles. Utilisez une boucle for, sorte que vous n'avez pas à faire des choses comme ajouter sur les temps d'alerte six avec tout le code d'ID associé dedans . Droit. Donc, il en a quelque sorte sorti. La prochaine fois, on va passer à des trucs un peu plus compliqués qui obtiennent des informations sur Internet. Mais on va tromper. On va tricher d'une manière que tous les programmes trichent. Et pour savoir comment vous devrez vous joindre à moi lors de la prochaine conférence 88. M111 Utilisant Cocoapods pour installer un module pour des services RESTANTS: ici, nous allons avec un autre concept très, très important que vous devez saisir en tant que développeur. Ce concept s'appelle Ne pas réinventer la roue. Sans aucun doute, quelqu'un là-bas a compris comment obtenir un P yeux et des services de repos sur Internet et fournir de meilleures données à leur application. Et ce que cette personne a fait, si elle est vraiment gentille, c'est qu'elle a créé un petit module qui nous aide à faire ça. Et ce qu'ils ont fait, c'est qu'ils ont publié ce module et dit, Hé, n'importe qui peut l'utiliser. S' ils le veulent, ils peuvent le modifier. n'y a pas de licence attachée à elle maintenant dans l'Iowa que le concept existe. Et quand on veut trouver quelque chose, une roue qui a déjà été inventée pour faire une tâche complexe pour nous. Nous allons à la recherche de ce qu'on appelle les gousses de cacao. Maintenant, notre tâche complexe est la suivante. Nous sommes le client, l'APP. Nous faisons une demande à un serveur. Nous obtenons une réponse dans Jason XML ou tout autre type de données hors. Cette méthode de repos rouge de faire des choses maintenant pour écrire tout cela nous-mêmes. Pouvez-vous imaginer combien de travail ce serait ? Eh bien, peut-être pas parce que les gens ont essayé d'écrire cela eux-mêmes. Mais il y a tellement de choses qui pourraient aller et tant de code à parcourir pour créer tout cela, qu'il est beaucoup plus facile de voir si quelqu'un d'autre a déjà inventé la roue de la gousse de cacao . Et s'il y a une bibliothèque pour le faire comme il arrive, il y a des tonnes de bibliothèques pour cela, et je vais vous montrer l'une des plus populaires. Alors installons une gousse de cacao sur nos droits de projet d'ici. Je suis dans Google et faisons une petite recherche pour les gousses de cacao, et la première vue des gousses de cacao dot ward est celle que nous voulons regarder maintenant. Ce site contient un référentiel pour toutes les gousses de cacao ou la plupart des gousses populaires et même les impopulaires qui sont là-bas. Sinon, sans gousses de cacao, nous regarderions des dépôts comme get hub et ce genre de choses. Mais les chances sont, ce dont vous avez besoin est contenu ici. Essayons donc de chercher quelque chose comme le repos et nous n'avons rien. Cherchons Alamo Fire, qui est la partie que nous voulons maintenant. J' ai eu ce problème avant de commencer cette conférence me demandait ce qui se passait. Je pense que leur site Web pourrait être en panne. Donc on va copier Alamo Fire et on va le chercher sur Google en tant que cacao Alamo Fire, ce qui devrait nous emmener au bon endroit. Mais tout mon point de vous montrer ce site Web était que vous pouvez réellement rechercher des pods lorsque les sites Web fonctionnent. Alors passons à ces premiers liens. Là, nous avons notre feu Alamo. Maintenant, Alamo tire l'une des gousses de cacao les plus populaires, et c'est la version audio 4.5, qui est bien, beaucoup dedans. Actuellement, c'est sur la version 3 de Swift, mais je pense que nous devons trop nous inquiéter à ce sujet. Si vous cliquez sur ce lien en haut, nous pouvons réellement aller à leur site web get up et nous pouvons parcourir le code pour nous-mêmes. Et cela nous dit que c'est une bibliothèque de réseau de 82 p écrits dans Swift et nous permet essentiellement de faire tout le reste pour les choses que nous devons faire et des tonnes et des tonnes plus de choses qu'il peut faire. Cette organisation Alamo fait effectivement une bibliothèque d'images, qui est extrêmement utile ceci et un autre que j'utilise et un indicateur de réseau, qui est également assez utile. Mais vous pouvez faire en Iowa lui-même. Quoi qu'il en soit, nous ne savons rien de ce qui a besoin de savoir que ces endroits existent. Donc, les gousses de cacao point ou quand il fonctionne vous donnera toutes les parties que vous devez savoir sur. Et on va utiliser ce feu d'Alamo en particulier, n'est-ce pas ? Nous allons donc maintenant installer des gousses de cacao dans notre application. Alors passons à notre code Rx de l'écran principal. Maintenant, quand on tire une partie de coca d'une partie pour court, on ne le fait pas vraiment à travers le X Cody en face juste ici. On le fait à travers ce qu'on appelle un fichier de pièces. C' est juste un fichier texte brut à toutes fins utiles, mais nous devons d'abord mettre en place notre projet pour recevoir ces fichiers de pièces. Et à cause de la façon dont cela fonctionne, nous devons complètement quitter le code X, non ? Donc, le code X complètement rapide. On peut laisser notre simulateur en marche. C' est très bien. J' ai tous nos anciens AP ici. Maintenant, ce que nous devons faire est d'aller dans notre dossier APP. Vais-je brûler dans ce cas ? Pour le moment, nous avons un projet ex code, et il contient tous les dossiers et fichiers que nous chantions. Maintenant, à l'intérieur d'ici est l'endroit où nous créons le fichier pod dont je viens de vous parler. Il suffit de fermer ce simulé pour le rendre plus clair pour vous. Comment créer un fichier de pièce ? On doit ouvrir le terminal. Donc, si vous êtes sur Mac, vous devriez savoir de quoi il s'agit. Je vais ouvrir une nouvelle fenêtre de terminal ici et maintenant nous devons réellement aller dans notre dossier de projet . C' est donc un moyen facile de le faire. Vous devez aller dans l'espace, puis cliquez et faites glisser votre dossier dans et appuyez sur Entrée et il ira automatiquement dans le dossier si vous voulez voir ce qui est là juste pour vous assurer que le type ls entrer et il vous montre tous les fichiers et dossiers que nous pouvons voir ici. Excellent. droite. Donc maintenant qu'on est ici, on doit faire quelque chose qui s'appelle dur dedans et ça n'existe pas. Alors, comment installer réellement des pièces de cacao ? Eh bien, tout d' abord, nous avons besoin de Sudo Jim dans les selles de cacao. Appuyez sur Entrée et tapez votre mot de passe système, et cela devrait aller et installer des pièces de cacao. Si vous rencontrez des problèmes avec ce que vous pourriez simplement faire, ouvrez simplement un nouveau patron d'onglet, qui est en cours d'exécution. Vous pouvez également essayer Sudo gem. Installez les gousses de cacao et vous pouvez opter pour une version battant avec dash dash pré dash fin, qui est un drapeau d'installation, et vous pouvez spécifier l'utilisateur local Slash Been pour l'installer dans, mais seulement si vos gousses de cacao ne fonctionnent pas après en exécutant cette gem sudo, installez des gousses de cacao, donc c'est une option de sauvegarde simple. Si cette option ne fonctionne pas maintenant, cela prendra un peu de temps à s'exécuter. Alors donnez-lui aussi longtemps qu'il en a besoin et une fois terminé. Nous pouvons vérifier cela avec la version de tiret de partie, et il nous dit que nous avons quelques éléments manquants afin que nous puissions réellement installer cela maintenant. Acceptez nos outils de ligne de commande et il va de l'avant et téléchargera les bits supplémentaires dont il a besoin. Juste une fois qu'on a fini, il suffit de frapper fait et on devrait être bon d'y aller. Revenons donc à la partie tiret, version tiret et tout devrait aller bien. On est sur 1.2 point 1 maintenant. Si vous rencontrez des problèmes avec les gousses de cacao, obtenez la version et recherchez le code d'alerte de description d'erreur qui apparaît ainsi que de concert avec le numéro de version. Cela vous aidera beaucoup lorsque vous essayez de résoudre des problèmes. ce moment, nous sommes prêts parce que nous sommes dans un dossier pour initialiser notre fichier pod simplement partie dedans et vous remarquerez Tout ce qui fait est de créer ce qu'on appelle un fichier de pièce. Maintenant, nous pouvons réellement ouvrir ceci dans n'importe quel éditeur de texte, mais il est préférable de l'ouvrir à l'intérieur du code X. Et c'est parce que les éditeurs de texte peuvent réellement introduire une posture, gel et des guillemets Coghlan qui ne sont pas conformes à ce dont le fichier pod a besoin. Statut. Un petit avertissement pour toi là-bas. Ouvrez le tiret un code X et un fichier dur. Et nous ne pouvons pas trouver l'étape de code X parce que je suis actuellement sur le batteur de code X. Oui, je le suis. Donc on va changer ça avec moi. X code tableau de bord pita. Ok, donc ça devrait l'ouvrir. Ce dont nous avons besoin maintenant ce fichier contient quelques valeurs par défaut pour nous. Il a créé quelques petites cibles pour les tests, et vous les tests oculaires. Lequel de ces dossiers nous voyons ici ? Ok, alors revenons dans notre dossier. Tout d'abord, nous avons une plateforme globale que nous pouvons définir. Ou nous pouvons supprimer cela et nous pouvons définir. C' est que j'avais 11 ans en fonction de la plate-forme sur laquelle vous exécutez réellement ou de la plate-forme que vous ciblez. Donc, une fois que vous avez fait cela peut appuyer sur nous pour le sauver. Droit ? De quoi d'autre avons-nous besoin ? Eh bien, utiliser les frameworks est quelque chose dont nous avons certainement besoin, et vous remarquerez au-dessus. Il dit commenter la ligne suivante. Si vous n'utilisez pas Swift et que vous ne voulez pas utiliser Frank Maxwell dynamique, nous voulons utiliser Swift. Donc nous allons laisser leur propre, commenté pour commenter quelque chose. Placez simplement le caractère de hachage avant, et cela fait que les casseroles l'ignorent. droite. Donc maintenant, en dessous pour nos gousses pour bien, je brûle. C' est juste un petit Marcus. On sait où on est. On peut commencer à écrire des trucs qu'on peut dire. Je voudrais le pod appelé Alamo Fire. Je crois que c'est en minuscules jusqu'à la première lettre. Commun. Et ce qu'on va faire, c'est qu'on va prendre ce pod pour obtenir Hubble du dépôt git et que tu dis égal à ça c'est triangulaire. Donc, nous allons juste spécifier où il est et puis à l'intérieur de nos citations, nous allons spécifier que nous voulons que le visage vienne. Obtenir hub dot com avant slash Alamo feu quatre slash Alamo Fire docks obtenir Donc tout ce que je fais est de spécifier où ce fichier get est, qui est ici dans get up. Donc, il va et le trouve ici. Maintenant, il y a les moyens de le faire. Je préfère le faire de cette façon parce que get hub contient généralement les choses les plus à jour. Et si vous n'avez rien sur les gousses de cacao, obtenir le hub est l'endroit où aller et le trouver. Donc, par exemple, si vous avez un tout nouveau framework ou une nouvelle version de celui-ci, ce est probablement pas encore sur les parties de cacao. Il est préférable d'aller directement pour obtenir le hub et chercher la branche qui apparaît ici. Donc, si nous faisons défiler vers le bas dans les branches, nous avons une branche rapide à quatre. Maintenant, c'est la branche que nous devons réellement utiliser pour ce projet particulier parce que nous utilisons Swift pour Donc, si vous cliquez dessus, il va simplement recharger cette page avec le swift pour les implémentations spécifiques, et vous remarquerez que rien a changé à ces dates du côté. Donc personne n'a encore commencé à le changer. Et c'est parce que Swift pour n'est pas très différent des trois rapides. Il n'y a pas grand-chose à changer, mais cela vous dit en haut, cette direction a 22 chefs de comité en retard. Maître. C' est bon. Ok, donc la façon de spécifier un brunch est de taper brunch le même élément. Et puis on lui donne le nom de ce brunch Swift. Ok, maintenant il y a une autre chose à faire, et c'est quelque part en haut de notre fichier pour spécifier une source. Et notre source va être à nouveau. Https. Blond sanglante obtient des fléchettes moyeu. Avancez les gousses de cacao slash. spécifications Nash de Ford point Obtenez et fermez votre devis unique. Donc, il sait d'où vient la source, n' est-ce pas ? Donc sûr et je vais juste laisser ce petit peu ouvert. On va passer à mon terminal et au moins essayer d'installer cette pièce en magasin et de frapper. Entrer maintenant, espérons-le, ça va aller trouver cette branche douce d'Alamo Fire et le cloner directement dans je suis arrivé par clone. Je veux dire, si nous regardons nos dossiers, nous avons maintenant un dossier PODS qui finira par contenir les pods dont nous avons besoin. Croyez qu'ils vont dans le pli des parties. Je ne me souviens pas de ma tête en ce moment, mais ça devrait l'être. Et après un âge absolu, tout sera puisé dans cet âge n'est que cette première fois parce qu'il importe choses de get hub. Mais après tout cela est fait, vous devriez avoir le type de sortie suivant qui vous indique que Alamo Fire a été effectivement installé correctement. S' il y a des erreurs ici, alors votre meilleure option est absolument d'aller à pile débordement sur juste post sur là, ou simplement chercher d'autres problèmes que les gens ont eu. Poster vos codes d'erreur et ce qui n'est pas juste une fois que cela a été créé, vos motifs plus dans votre dossier de projets Dans vos parties, nous avons Alamo feu. C' est très bien. Nous avons notre bloc de fichier pièce, alors fermons notre fichier pod pour l'instant parce que tout fonctionne et nous avons aussi le projet de code X , que nous avions avant et XY espace de travail. A partir de maintenant, vous allez toujours ouvrir votre projet en utilisant l'espace de travail XY et jamais le projet XCode. C' est parce que l'espace de travail XY intègre les pods et le projet Ex Code ne le fait pas plus ou moins . Si vous double-cliquez sur votre espace de travail XY qui va charger toutes les pièces et tous les bits et pièces que notre projet est réalisé. Vous remarquerez que nous avons deux solutions ici. Vais-je brûler et les pièces ? Et bien sûr, comme d'habitude, nous avons les mêmes fichiers dans, Eh bien, je brûle. Maintenant, regardons ça. Vais-je brûler la solution et voir ce qui est inclus à l'intérieur de nos phases de construction. Nous avons quelques binaires de liens et vous remarquerez que ces installations comprenaient les pods que nous avons spécifiés. Donc, dans notre cas, c'est juste celui qui est automatiquement inclus. Donc ça marche. C' est très bien. Maintenant, allons à notre contrôleur de vue et faisons une dernière chose. Vérifiez que la pièce est réellement installée et qu'elle fonctionne. Nous allons simplement essayer d'importer Alamo feu, et espérons que vous obtenez une commande complète. Mais parfois, il faut un certain temps pour que Swift ait attrapé ou code ex. Alors mettons-le là-dedans. Nous ne l'avons pas encore, alors allons à notre produit Nous allons tout nettoyer, puis aller aux produits et construire ou vous pouvez appuyer sur commande be. Et puis j'espère que cela va vraiment reconnaître que nous avons une capsule appelée Alamo Fire. Donc c'est en cours d'exécution. On n'a rien eu jusqu'ici. Il est sûr de dire parfois dans Exco que vous pouvez réellement ignorer ces erreurs Vous nettoyez et construisez simplement . Et voilà. Nous sommes construire a réussi nous sont célèbres. Les derniers mots ne peuvent pas charger le module sous-jacent pour Alamo fire. Donc maintenant, nous avons un peu d'enquête à faire, et j'espère que cela ne vous est pas arrivé. Si ce n'est pas le cas, vous pouvez vous sentir libre d'ignorer le reste de cette conférence et de passer à la suivante. Mais je vais juste déboguer exactement ce qu'est ce problème. Et la toute première étape que nous allons faire dans ce numéro est d'examiner notre dossier de réhabilitation. Alors écrivons quoi ? En fait, fermons le code X d'abord. C' est une bonne idée. Il est un fichier de sortie de clic droit ouvert avec, et vous pouvez utiliser le code Visual Studio. Si vous avez installé cela, c'est un autre éditeur de code ou code ex complètement à votre disposition. Nous devons vérifier que tout est correct ici donc la zone cible numéro un et il semble que nous avons notre rôle. Notre get va bien. Je vais me déshabiller, c'est bon. Et nous savons que c'est en fait OK parce qu'il nous a dit qu'il était réellement installé, donc tout devrait être bien à l'intérieur du fichier pod. Aussi, assurez-vous que vos cotisations et vos fins correspondent, comme si d'autres déclarations ou accolades ouverture et fermeture des accolades. Donc tout cela semble correspondre. Ok, donc on n'a plus à regarder là-dedans. Revenons à notre projet ex caillé et voyons quels sont les problèmes. Ok, passons au produit et construisons à nouveau parce que cela fonctionne maintenant. Donc il s'avère que tout ce qu'on avait à faire était de fermer le code X et de redémarrer et de récupérer le feu d'Alamo pour nous. Mais j'allais dire que la prochaine chose qu'on pourrait vérifier était d'aller à la solution Arpad. Vérifiez les pots en dessous et vérifiez qu'Alamo Fire existait réellement. Et les diverses autres choses que vous pouvez explorer ne changent rien dans ce répertoire pods. Du moins, pas si vous êtes un développeur débutant. Ok, alors on y va. C' est essentiellement comme ça que vous installez vos fichiers de pièces. Maintenant, je l'ai fait de la manière assez compliquée à l'intérieur du fichier Arpad parce que je voulais que vous puissiez obtenir la source de Get Hub, qui est la source la plus à jour. Généralement parlant, que les plantes de coca peuvent être, et vous pouvez obtenir plus de choses sur obtenir hub pour Alamo Fire. Ce n'est probablement pas nécessaire, mais c'est comme ça que vous le faites pour obtenir et un brunch. Et je veux juste vous montrer sur les guides de gousses de cacao que vous pouvez juste avoir quelque chose comme celui-ci où vous spécifiez le nom d'une pièce que nous connaissons déjà, et ensuite vous pouvez spécifier n'importe quelle version supérieure ou égale à 3.0 ou quelle que soit la version que vous sont après. Voyez, vous pouvez réellement rechercher sur des pièces de cacao si la recherche fonctionnait, ce qui n'est probablement pas pour la version que vous pourriez chercher pour votre application. Donc, c'est le genre de façon officielle de le faire, et la façon dont je vous ai montré est une façon plus développée, très bien de le faire pour vous assurer que vous avez le code réel de obtenir Hub tiré dans. Maintenant, s'il veut mettre à jour ça. Quittez que vous pouvez quitter le code X et vous pouvez exécuter parti en décrochage et rien ne se fait. Je crois que cela ne se met pas réellement à jour. Ça fait un moment que je ne l'ai pas fait. Donc, ce que vous pouvez réellement faire, si vous voulez le mettre à jour à la dernière, c' est que vous pouvez ouvrir votre fichier pod et vous pouvez en fait simplement supprimer ceci ou alternativement plutôt que de le supprimer dans votre presse-papiers. Vous pouvez aller de l'avant et commenter tout comme, sorte que vous pouvez l'enregistrer. Vous pouvez courir une partie dans le décrochage, et il enlèvera le feu d'Alamo pour nous. Ensuite, vous pouvez annuler tous ces commentaires. Vous pouvez l'enregistrer magasin d'empotage, et il va installer la dernière version d'Alamo Fire. Mais sachez que lorsque vous faites cela dans des pods, si vous utilisez quelque chose qui a été modifié de manière significative dans la partie de votre projet, vous devrez faire un peu de retravailler le code à l'intérieur de votre propre projet afin de le faire fonctionner encore une fois. C' est très, très probable, et c'est une source de frustration. Donc je dirais que mettre à jour les pièces si c'est vraiment nécessaire, non ? C' est ainsi que nous utilisons les pièces. Ensuite, nous examinerons comment nous utilisons réellement ces parties de cacao pour récupérer certaines données de notre A P I. 89. M11-1 : Retrieve des données à partir d'une API dans une application iOS: Et maintenant que nous avons installé un pot de coca sous la forme d'Alamo Fire, nous sommes prêts à commencer à récupérer des données de notre météo mondiale en ligne AP Si vous êtes un appel, tout dans un p I. Est-ce que cette interface ici, trop noté par la grande boîte où nous envoyons une demande et nous obtenons une réponse avec quelques données. Alors ouvrons nos projets et voyons comment cela se fait. Maintenant, la toute première étape est d'aller regarder la météo mondiale en ligne, et vous devriez déjà vous y inscrire parce que lorsque vous vous inscrivez devrait obtenir un essai de 60 jours. Maintenant, si, eh bien, si en ligne n'est pas disponible lorsque vous suivez ce cours, c'est bon. Vous pouvez utiliser n'importe quel autre service. Ce qui est important, c'est qu'ils aient la documentation. Donc, si le monde en ligne a des discussions onglet en haut, et ce que nous pourrions faire est que nous pouvons nous diriger vers une introduction, et normalement AP yeux vous donnera comment accéder au festival A P I. Donc enregistrez vérifier, connectez-vous grand appliqué au bloc. Ok, on sait que c'est déjà Allons à notre météo locale A B I. D'autres options. Nous avons notre historique. Nous n'avons pas vraiment besoin de cette marine dépend du genre d'application que vous fabriquez. On n'a pas besoin de ça. Donc on veut juste la météo locale ici. Il vous dit le reste ap. Je vous permet d'accéder aux conditions météorologiques actuelles sur les 15 prochains jours de congé. Donc, il retourne tout un tas de choses, y compris les UV, que nous avons vérifié à l'avance. Et vous pouvez spécifier votre emplacement par l'un de ces. Et nous y voilà. latitude et la longitude sont idéalement ce dont nous avons besoin, car c'est ainsi que nous obtenons nos coordonnées de localisation à partir de notre application. C' est assez important, méthodes http Donc, lorsque vous demandez quelque chose sur Internet, c'est normalement via http, vous enverrez si toutes les intentions et les fins, c'est comme un mot clé. Vous dites que je veux obtenir quelque chose et puis le a p je vais retourner quelque chose. Donc, c'est quelque chose que nous allons spécifier implicitement dans notre demande, mais sachez juste qu'il y a d'autres types, comme get post et divers autres types. Droit ? Donc maintenant, nous avons notre fille de base et cette base votre l va permettre notre p I ou nous permettre de demander la météo mondiale en ligne, A P I pour quelque chose. Maintenant, il y a deux façons de le faire. Tout d'abord, Http, qui est une connexion non sécurisée ou non sécurisée et https, qui est sécurisé. Quelle est la différence ? Alors que Http n'est pas crypté. Ainsi, toute personne qui est en quelque sorte sur votre réseau WiFi non crypté réseau WiFi ou peut intercepter vos signaux réseau peut voir ce que cela contient, y compris votre clé de connexion. Ce n'est pas génial. Et comme note de côté, IOS a forcé les développeurs plus ou moins à suivre la route de GTP. Donc je préfère que vous fassiez beaucoup de communications sécurisées. Nous pouvons encore le faire, Http, avec quelques modifications. Mais pour nos besoins, nous allons utiliser le droit sécurisé. Et si votre a p i pour quoi que ce soit n'a pas une sécurité, je resterais loin de lui. Restez certainement loin parce qu'ils ne sont pas conscients de la sécurité. Et vos détails de verrouillage peuvent être capturés dès maintenant. Les paramètres de requête sont les éléments que vous avez besoin l ajouté à la fin de celui-ci. Donc le paramètre Qué est pour l'emplacement, et cela est nécessaire évidemment. Sinon, vous ne pouvez pas obtenir de bulletin météo. Il y en avait d'autres qui sont facultatives. Nombre de jours. Quatre prix et il y a tout un tas d'articles optionnels, donc tout va bien. Donc, le paramètre Q peut avoir le nom de la ville, le pays, l'état à Centra. Voyons donc leur latitude et leur longitude en degrés décimaux. Et la façon dont ça marche, c'est qu'on ajoute cette petite ficelle à la fin de notre fille. Donc on va le faire sous peu. N' est pas nécessaire pour entrer en détail en ce moment Et puis il vous dit aussi dans les docks sur la réponse que nous obtenons, Donc la réponse pourrait être un XML, Jason, Jason P ou des valeurs séparées par des virgules. Normalement, je crois que ce retour en tant que Jason. Voyons si on peut changer ça. Je ne pense pas qu'on puisse. Je pense que ça revient juste. Est-ce Jason donc ce n'est pas de grandes documentations qui ne me disent pas. Donc, nous pourrions avoir à faire du débogage en tant que développeurs pour voir quel est le format. Je sais que ça va être Jason, donc ça va, c'est tout un tas d'autres choses. Mais fondamentalement, c'est ce que la documentation vous dit. Tout ce que vous devez savoir, non ? Mais nous avons juste besoin de connaître ce premier paramètre pour continuer à défiler vers le haut de cet euro de base . Passons donc à notre projet. Créons une sorte de nouveau fichier, qui est un simple fichier de script, et cela va contenir notre si un P I. Vous pouvez appeler ça tout ce que vous aimez Kate. Donc, dans le temps, un p I nous allons tenir une « structure ». On pourrait faire de la classe. C' est totalement à nous de décider. Mais faisons une structure pour maintenant se structure. Que ce soit un b i, tout le monde près des accolades. Alors, quelle est la première chose dont nous avons besoin ? A P I Eh bien, abord nous avons besoin d'un privé. Laissez maintenant pourquoi ai-je tapé privé ici ? C' est parce que je suis sur le point de spécifier une base u r l qui va être quelque chose à Croce, et je veux que ce soit privé parce que je ne veux rien d'autre pour entrer dans cette structure et changer ce que cette base est sur laquelle votre l est en la gardant privée. Seule la structure elle-même peut y accéder ou la voir. C' est la différence. Si vous supprimez cela, n'importe quelle autre classe pourrait réellement le voir en Europe. Donc, nous allons supprimer ça maintenant. C' est dans la programmation appelée encapsulation cachaient ces implémentations. Nous les encapsulons dans des fichiers, des dossiers et des choses afin que la plupart de votre programme ne connaisse pas la plupart du reste. Il sait seulement ce qu'il pourrait mettre et ce qu'il peut sortir. C' est un concept important pour la programmation en général, non ? Alors, quelle est comment Basé u R L ? Eh bien, c'est ce méchant garçon ici. Copions ça. C' est collé. OK, donc c'est notre base. Tu es sorti maintenant. Il nous faut une clé. Et c'est quoi ce G ? Eh bien, laissez la clé est égale à quelque chose entre guillemets, et la clé sera ajoutée à la fin de cette fille. Donc on n'a pas encore fait ça. On veut juste avoir la clé. Et la façon dont nous spécifions n'importe quel paramètre à la fin d'un Earl vous est normalement avec le caractère et . Ensuite, la variable name off que le A B I attend et égale. Et puis, après égal, tout ce qui suit égal est la variable elle-même. Donc AP yeux de beaucoup comme la programmation comme nous le faisons dans Swift. Ils s'attendent à des variables, ils s'attendent à certains éléments. Donc, si vous revenez à votre météo mondiale en ligne, avez-vous accédé à votre compte. Ce dont nous avons besoin, c'est d'une clé. Et le voilà. Voici ma clé. Maintenant, faites attention de ne pas utiliser ma clé parce que vous avez probablement dépassé les demandes sur mon compte. Et d'ailleurs, il expirera après 60 jours. Donc je vais déposer cette clé dans leur maintenant, juste pour revenir à ce que j'ai dit avant quand vous utilisez l'insécurité et l'envoi de ces yeux avec juste http, n'importe qui peut effectuer ce qu'on appelle un homme dans l'attaque du milieu, et ils peuvent intercepter cette fille et prendre ta clé de toi pour qu'ils puissent ensuite utiliser ton A P. Et si tu as payé pour ça, ce n'est pas génial. Est-il avec http s Vous mettez en place un tunnel sécurisé entre votre APP et World météo en ligne dot com. Maintenant, chaque fois que vous demandez quelque chose, vous envoyez votre clé. C' est seulement le monde. Que ce soit en ligne qui peut déchiffrer cette clé et comprendre ce qu'elle est, personne d'autre au milieu ne peut réellement le faire. A moins d'avoir quelques 100 000 années de rechange et toute la puissance informatique du monde, ça ne vaut pas vraiment la peine pour un temps Abia. Bon, alors revenons à l'U R L De quoi d'autre avons-nous besoin ? Eh bien, nous devons avoir les paramètres requis. Donc, un certain nombre de jours prévisions, parce que si vous vous souvenez dans les docks, a dit que vous devez avoir ceci Donc, cela est égal à nouveau une chaîne, et cela va être ajouté à la fin de la clé. Donc pour ajouter des choses que nous avons frappées et la clé pour cela est de souligner les jours, je crois. Maintenant, si cela ne fonctionne pas, alors vous pouvez toujours aller vérifier les points pour le A p I. Parce qu'ils peuvent changer ces mots-clés très occasionnellement. Ça ne se produit pas comme ça. On veut juste aujourd'hui. Ensuite, nous allons avoir un format privé Let's égal à Let's have et format. Nous allons donc spécifier notre format pour les résultats. Et nous voulons que Jason soit sûr que nous obtenions la bonne chose, non ? Donc quand nous ajoutons tous les ensemble, nous obtenons juste notre habituel, vous êtes L. Mais il n'y a pas encore d'endroit, donc nous avons besoin d'un autre privé. Et ça va être une variable, pas laisser alors on ne peut pas changer après les variables de fait que nous pouvons. Il y a une raison à cela parce que c'est la chaîne de conformité, qui va rester vide pour l'instant. Et quand nous avons initialisé cette structure, donc dedans, nous allons réellement passer au-dessus d'une latitude comme une chaîne et, bien sûr, une longitude comme une chaîne un propriétaire stree. Ensuite, nous allons envoyer la chaîne de coordonnées comme égale à et ça parce que nous sommes en attente à tout va en fait être différent festival. Donc, ici, je suis entré et j'ai eu une fin, ce qui implique que ça est ajouté à quelque chose maintenant avec notre base. Je n'étais pas clair à ce sujet. Oui, je suis désolé, on ne veut pas avoir. Et ici, nous mettons un point d'interrogation pour marquer quand les requêtes commencent réellement. Donc, le navigateur ou le récepteur de cet AP, je peux comprendre cette adresse, et il comprend également cette question Mark n'a pas beaucoup à voir avec l'adresse où il va réellement. Nous allons donc chercher ce fichier à cette adresse Web. Ensuite, il passera également sur ces paramètres. Donc on va mettre notre chaîne de coordonnées en premier, ce qui signifie qu'on commence par une question. Comme il est le premier Qué coordonné est égal à Maintenant, nous devons passer dans la latitude et longitude. Maintenant, comment passer des variables à l'intérieur d'une chaîne ? Eh bien, vous pouvez le faire de cette façon. Plus Latte. C' est parfaitement bien. Mais il y a un autre moyen. C' est, euh, je pense que c'est mieux parce que ça me plaît. C' est plus clair pour moi si vous mettez une barre oblique inverse, alors ça enlève tout de la barre oblique arrière comme littérale, donc ouverte. Fermez nos parenthèses et laissez tomber en latitude. Et c'est comme ça que nous passons une variable dans une chaîne. Après ça, on aura une couleur, et on refera la même chose pour notre longue itude. Donc, cela nous donnera la bonne chaîne. Droit ? Donc, à ce stade, une fois que vous avez initialisé ceci, nous avons cette chaîne de coordonnées. Alors tout ce que nous avons à faire est de former l'u. r l complet dont nous avons besoin. Et pour ce faire, nous allons créer une fonction appelée get Donc peut-être si vous êtes l. Et cela va retourner une chaîne simple. Il y a d'autres options que nous pouvons retourner, mais nous allons faire une chaîne pour l'instant. Et nous allons retourner la base. Vous êtes dehors. Nous sommes contre vous. Ajoutez sur elle la chaîne de coordonnées. En plus de cela, nous devons lui donner la clé. Et il n'y a pas d'ordre particulier pour la plupart que nous devons suivre ici. Nous avons juste besoin d'avoir tous ces éléments parce que ce qui se passe avec les yeux AP, c'est qu'il prend dans toutes les variables que vous avez données, il les sépare, puis il commence le traitement. Donc, il ne cherche pas un T rapide ce qu'il va chercher la clé en premier, mais seulement après qu'il a été traité. Chaque variable qu'il existe. Et puis nous allons y ajouter un format, qui est cette section ici cas où vous êtes l coordonnées, nombre clé de jours de prévision et le foment. Donc, nous avons tout trié. Alors sauvegardons ça. Allons à notre contrôleur de vue point Swift et à l'intérieur, on va aller chercher nos données météo. Donc, c'est quand Alamo feu commence à entrer en jeu parce que nous commençons à gâcher avec vous , Ou alors peut-être quelque part près du fond, c'est la fonction créative appelée encore si les données. Ok, maintenant la première chose est qu'on a besoin d'un « Vous êtes l » pour obtenir des données de ça est assez évident. Ça va être notre temps. A p I dans la nouvelle version de celui-ci ne sont pas et obtenir plein si vous êtes maintenant le bien sûr, il y a un problème ici parce que sont où le a p je nécessite un emplacement. Commencez par Alors retournez ici, ouvrez les parenthèses et nous devrions être capables de le faire. Parfois, Exco ne se sent pas aussi pour vous si vous modifiez donc c'est vraiment ennuyeux. Vous devez recommencer, si un p i et puis il se sentira également et vous pourriez appuyer sur Entrée. Donc, nous devons lui donner une latitude, qui est une chaîne. Et ça va être les coordonnées. Rappelez-vous, nous avons déjà sorti ce point nat itude. Ça va être une ficelle. Et pour le moment, nous avons une petite erreur rouge. Voyons ce que c'est, et nous avons notre innit décrivant. Donc, c'est un problème, rappelez-vous, nous avons déjà rencontré cela avant. Si nous décrivons une chaîne, nous obtenons effectivement une sortie facultative. Donc, la façon de contourner cela est de déballer explicitement cela tant que nous savons que les coordonnées existent réellement maintenant. J' espère qu'ils le feront. Je suis presque sûr qu'ils le font. Alors faisons le suivant. Et c'est tout à vous de choisir. Bien sûr, comment vous allez faire cela afin que vous puissiez réellement avoir un pair, sorte de off if let déclaration. Ou vous pouvez avoir une déclaration de garde pour vous assurer que les ordonnées existent. En fait, faisons ça. Donc, si les cordons sont égaux aux coordonnées et que nous sommes des accolades ouvertes et des accolades fermées maintenant, tout ici les fouets appartiennent au si on peut changer les CD ici. On n'a plus besoin de le déballer. Et on devrait être bon d'y aller. Nous avons maintenant un u r l Maintenant, nous pouvons utiliser Alamo Fire, Alamo Fire, Alamo feu et très étrange. Parfois, cela ne semble pas assez sûr que nous l'avons inclus en haut ici. Oui. Importer les tâches Alamo Fire. Et nous voulons demander maintenant. Quelle demande voulons-nous réellement ? Eh bien, il y a ça. Vous êtes l Est ce décapotable. Très étrange. Je m'attends en fait à quelque chose dans les lignes de point encore et puis nous passons comment vous êtes . L Donc c'est sûr. Les toiles ramènent cet espace. On devrait aller bien. Argument supplémentaire. Donc, nous avons un léger problème ici parce que l'ancienne version d'Alamo Vier pour autant que je m'en souvienne , vous deviez spécifier point Get. Mais peut-être que vous n'avez pas vraiment à faire ça maintenant, une sorte de retour arrière que nous allons juste avoir le vieux U R l. Et ce que nous allons faire, c'est qu'on va juste enlever ce chèque ce que le champ auto nous dit vous êtes. L demandes. Alors nous allons taper ça à nouveau. Parce qu'il y a ce truc ennuyeux. Ce qui ne fait pas tout ce que tu es. L décapotable. Maintenant, je ne sais pas ce que ça veut dire, alors quand on ne sait pas et que les choses semblent avoir changé le meilleur endroit où aller, c'est la vraie sortie de sa page de la partie cacao. Il a regardé parmi ça ? Il vous dira comment vous le faites. Alors, voilà. Vous pouvez simplement spécifier une demande et également vous dire sur la gestion de la réponse. Donc c'est assez pratique. C' est exactement ce dont nous avons besoin. On a juste besoin de cette chaîne apparemment amarrée. Demande d'abandon, u R l Et puis ce qui se passe est qu'il va souvent obtenir cela un synchrone, et puis il vous permet de faire quelque chose avec la réponse afin que vous puissiez enchaîner. Et si vous êtes un développeur JavaScript, cela semble familier ? Vous pouvez enchaîner cette réponse, Jason. Donc, ce que nous pouvons faire, c'est que nous pouvons simplement copier ceci à partir de la page des docks, et nous pouvons changer cela directement en pure et simple. Alors écoutez-moi sur le U R l si laissez Jason etcetera, etcetera. Bon, donc cela nécessite dit que nous avons un problème ici. Où est sur la page des docks et tu vas rencontrer ça c'est le développeur tout le temps. Ça dit que tu vas bien, juste mettre une ficelle dedans, mais ici ça nous dit que tu ne peux pas en avoir. Vous devez avoir une demande u R L convertible. Voyons donc à quoi ressemble une demande de fille convertible. C' est des crochets ouverts et je ne vois rien là-dedans. Donc, une autre option est de venir juste à une nouvelle ligne et aller Vous êtes l demande convertible. Ouvrez nos supports. Voyons ce que ça suggère. Eh bien, il n'y a rien en fait. Donc, la dernière option est de copier ceci. Allez à notre bibliothèque, frappe commande si Haston demande convertible, et nous allons juste chercher cette page pour tous les éléments. Donc, ici, nous avons quelques données à ce sujet. Respiration par défaut. Ok, donc c'est un protocole. Je n'ai pas encore couvert ceux dans la programmation, mais nous le ferons. Vous n'avez pas à vous en inquiéter, mais regardons ce que cela implique réellement, non ? Je regarde juste ça. Ok, donc ils sont devenus un peu plus compliqués que je ne veux vraiment te montrer ici, non ? Revenons donc à notre projet. Oh, je viens de le voir. Je suis aveuglé par la programmation toute la journée. Ce que nous avons fait c'est que nous avons à Stan Sheets, le temps, ap I Donc ça laisse ce u R l est en fait un type de temps FBI. Nous devons aussi ajouter notre get si vous êtes à la fin, et ensuite nous allons passer notre fille ici et maintenant. Espérons qu'il ne devrait y avoir aucun problème. Ok, parfait. Alors on va aller Teoh, trier notre Jason. Donc d'abord, nous allons imprimer une demande, une réponse, les données et les résultats. Et si on peut faire sortir Jason de ce résultat, alors on va aussi l'imprimer, non ? Donc obtenir des données météorologiques est quelque chose que nous devons appeler quelque part dans notre application. Donc, après le gestionnaire d'emplacement après ce statut d'autorisation se déclenche. Et quand nous avons un endroit, peut-être pourrions-nous le mettre là-dedans. Regardons autour de nous et voyons où on pourrait le mettre d'autre. Pas la personne de type peau, si vous le mettez en vue, a chargé. Nous pourrions avoir un problème là-bas parce que l'emplacement pourrait ne pas être encore prêt, n' est-ce pas ? Donc je pense offenser endroit décent pour le mettre quelque part ici. Tapons le gestionnaire de localisation et voyons dans quoi d'autre nous pouvons nous accrocher. Donc, nous voulons quelque chose comme, mise à jour ou quelque chose comme ça. mis à jour les emplacements si cela se déclenche. Donc c'est peut-être notre option. Charles, le délégué qu'une nouvelle donnée de localisation est disponible. Essayons ça. Et puis nous allons récupérer nos données météorologiques à l'intérieur de là. D' accord ? Et puis, juste au-dessus, ce que je vais faire, c'est imprimer un nouvel emplacement. Calme. Ok, je pense que nous sommes prêts à y aller. Alors frappons le jeu. Croisons les doigts et espérons que ça marche pour nous, non ? Donc, pour le moment, nos paramètres ne permettent pas notre localisation. Donc ce qu'on va faire, c'est qu'on va changer ça et aussi un long chemin, on va en quelque sorte déboguer notre sortie. Assurez-vous que cela fonctionne pour nous. Alors allons-y. Car il y avait une intimité, probablement un emplacement. Eh bien, je brûle en utilisant l'application, et maintenant nous devons le voir ici maintenant. Un peu de peine. Revenons à notre application. Nous aimons brûler, et nous ne recevons pas cet endroit. Le gestionnaire a mis à jour les emplacements. C' est étrange. Alors arrêtons ça de courir. Frappez jouer à nouveau et voyons s'il fonctionne réellement cette fois. Emplacement autorisé et nous n'avons toujours pas d'emplacement. Donc on va arrêter ça. De toute évidence, ce n'est pas une mise à jour, donc il pourrait y avoir autre chose que nous devons faire. Mais tu n'es pas là pour regarder ça. Donc on va juste faire une solution rapide. Retirer. Je vais chercher les données météorologiques et on va faire défiler jusqu'à n'avoir pas changé d'autorisation. Descendez un niveau et appuyez sur la commande F A. Commandement V Plutôt et la paix n'obtiennent pas les données météorologiques dans leur. Donc maintenant que devrait réellement aller et tirer sur notre obtenir l'emplacement des données météorologiques autorisé. Et que se passe-t-il en ce moment ? Rien d'aussi loin qu'on puisse dire. Donc, quand vous ne voyez rien se passer, c'est une bonne idée de commencer à déboguer la première façon de déboguer est en vous envoyant quelques Prince. Tu es moi , et on va t'ajouter, Earl. Nous venons de créer et puis nous allons relancer l'application et nous devrions vérifier. C' est que t'es envoyé Earl ou au moins t'es créé pour nous. Emplacement autorisé. Et nous n'avons pas de droits. Donc c'est très étrange, parce que ne pas arriver ici, ça veut dire que cela n'existe pas encore. Donc nous avons rencontré un bug très étrange pour nous-mêmes. Alors, allons chercher nos coordonnés. Trouvons où il y a des références à eux en haut. Trouvons le suivant. Obtenir l'emplacement. Droit ? Alors, prenez l'emplacement. Trouvons que c'est là. Et devinez quoi ? Nous n'avons pas appelé get location n'importe où, donc c'est notre problème. Et s'il n'y a pas d'endroit, ça ne se déclenchera pas. D' accord ? Donc, après que notre statut d'autorisation sera viré, peut-être que nous pourrons trouver notre position. Je vais supprimer obtenir des données météorologiques, et peut-être que je vais le mettre à l'intérieur. Il s'en sort après avoir trouvé l'emplacement. Maintenant, bien sûr, nous avons des options. Nous pourrions utiliser le gestionnaire de localisation si nous voulions obtenir nos coordonnées, mais nous le ferons à la place ce tour. Alors prenez les jours météo et je m'excuse pour tout le copier-coller. Mais au fur et à mesure que nous développons nos compétences entre vous et moi, je veux que vous voyiez ce que la vie réelle du développeur n'est pas seulement le vitreux Hey, vous faites juste ça et tout va absolument bien, non ? C' est vrai. Nous avons tout un tas de sorties. Nous pouvons regarder ici pour que nous puissions faire passer tout ça. Je n'aime pas l'apparence de cet échec, donc nous avons notre u R l cette fois le u R l est en train de passer à travers. Et si on inspecte ça, on a un emplacement dessus, ce qui est pratique. Nous avons notre clé. Nous avons nos formats. Tout va bien. Échec de l'enregistrement pour le SSL ennuyeux. Droit ? Quelque chose là-bas. Nous avons une option qui est en cours d'impression. D' où vient cette option ? Eh bien, ce sont probablement tous ceux qui ont été en fait imprimer la réponse. Vous êtes Al Head est donc ça vous dit ce qui est réellement envoyé sur Internet. Cela vient donc de tous ces éléments qui étaient par défaut dans nos articles que nous ne voulons pas réellement imprimer la demande. Nous ne voulons pas imprimer la réponse, ou nous pourrions nous dire si nous avons raison. On voudra peut-être imprimer la réponse. Ne résultat pas donc nous pouvons arrêter ça et le relancer. Et nous avons une autre erreur. Donc on va arrêter ça. Et on va vérifier. Tout d'abord, comment tu es autre. On va copier cet euro. Nous avons imprimé la commande. Tu vois, on va aller sur un nouveau navigateur qui va aller à ça. Droit ? Donc nous avons tout ce dont nous avons besoin ici. Et si nous sélectionnons tout cela, copiez-le et nous allons à Jason Lynch dot com. Vous pouvez voir que j'ai été là plusieurs fois. Colle-le dedans. Nous pouvons valider le Jason et il nous dit que Jason est valide et que nous avons nos données. Donc, en tant que développeur, vous savez maintenant que votre URL est absolument correct bunts. Nous avons un échec, et cet échec est probablement imprimé d'ici. Dites, juste pour être sûr, appelons ce résultat de réponse plus pire Plus, Donc nous savons si clairement que nous n'obtenons pas les résultats que nous voulons. Alors, comment pouvons-nous réparer ça ? Eh bien, la première étape de a eu une petite erreur ici du résultat de la réponse. Et nous pouvons facilement surmonter cela en imprimant simplement sur une autre ligne sans rien convertir . Ok, Donc, revenons à notre problème principal, allons frapper et nous assurer que c'est la réponse qui n'est pas la bonne chose. Et j'espère que c'est le cas, parce qu'on sait où chercher. Et ça va être 20 ans. Bien sûr, cela fonctionne maintenant, donc il n'y a pas d'époque. Bon, donc si on regarde ça, on vient d'imprimer tout le Jason. C' est tellement ennuyeux, c'est ça. Mais juste pour que tu saches, ça va faire beaucoup de ta vie. La ville s'est effondrée Les choses ne marchent pas. Et soudain, ils commencent à travailler. Nous avons donc le résultat de notre réponse comme un succès. C' était une ère de log SSL ennuyeuse, peu importe. Mais ici, nous avons notre Jason, que nous avons imprimé ici parce que nous l'avons. Oh, mon garçon, j'ai été dur, non ? Donc, il y a une leçon pour toi. Si les choses ne fonctionnent pas, vous contestez plusieurs objets, ou vous pouvez tout simplement tout redémarrer. Donc je vais juste enlever toutes ces empreintes pour que ça soit clair pour toi. On y va. droite. Je pense que vous et moi méritons une pause après cette conférence épique et un échec épique de faire fonctionner tout simplement les choses. Alors je vais aller prendre un café. Je te verrai dans la prochaine. 90. M11 12 Comment parse des données JSON avec Swift: à droite. Donc, nous allons maintenant regarder comment nous obtenons que Jason résultant de nos requêtes Web de feu Alamo a fait comment nous positionnons afin que nous puissions réellement l'utiliser à l'intérieur de notre application. Et cela est généralement appelé Comment passer Jason. Et ce sera plus ou moins la même pour toutes les langues, juste avec quelques différences subtiles. Notre Jason que nous avons a un format très spécifique dans ce n'est pas la poursuite que nous avons reçue, mais c'est un exemple de celui-ci. Il a beaucoup de clés et de valeurs et peut parfois avoir un tableau et un objet. Et je vais passer par ce que tout le cours de l'inju est méchant. C' est donc ouvrir notre projet et regarder comment extraire nos informations météorologiques. Maintenant, la toute première chose que nous devons retirer de nos données est l'indice UV, et c'est à peu près tout ce que nous avons besoin de retirer. Donc, créons une variable de classe quelque part en haut de notre contrôleur de vue principal. Et appelons cet indice UV lointain égal à tout ce qu'il est. Appelons ça neuf pour l'instant, ou peut-être 10 pour prendre le pire scénario. Peu importe ce qu'on dit ici parce qu'on va changer ça nous-mêmes. Donc maintenant on va passer ce Jason qui reçoit le transformateur est renvoyé pour monter. La première chose que nous devons faire avant de passer quoi que ce soit, c'est aller regarder le Jase sur lui-même. Donc si vous vous souvenez, c'est le Jason que nous avons reçu, et j'ai mis en longueur Jason pour qu'on puisse le lire beaucoup plus facilement. Et si on regarde autour de nous, on peut voir des trucs comme cet indice UV à 10. Où je suis actuellement ou où ce Marco était en fait. Donc, en regardant Jason, la façon dont ça commence est par un objet. Accolade bouclée. Cet objet a une clé normalement appelée data, mais parfois c'est non, en fait là. Et puis ces données ont un objet qui lui est associé. droite. Donc, c'est simplement nous dire que vous avez envoyé Voici vos données de retour. Vous nous avez envoyé une demande, et voici la demande dans son intégralité. Cette requête est réellement stockée dans un tableau. D' où les crochets. Vous pouvez avoir plus d'une demande occasionnellement, et il vous indique que vous voulez votre latitude et votre longitude où au moment où vous l'avez envoyée, c' est très bien. Nous avons ensuite un autre objet qui est envoyé sur les conditions actuelles. C' est la trame de base que nous avons à cet endroit, et si nous faisons défiler vers le bas, nous avons tout ce dont nous avons besoin. Ensuite, nous avons aussi la météo nous dit quand, euh, lever du soleil et coucher du soleil côté, ce qui est assez pratique et aussi notre indice UV. C' est probablement notre indice UV actuel, et je pense que c'est le seul endroit où nous le voyons. Mais pour être sûr, nous pouvons copier l'indice UV et nous pouvons le rechercher avec la commande F et coller entrer. Et je pense que nous n'avons qu'un seul endroit où il est situé, donc c'est l'indice UV actuel à cet endroit. Donc c'est ce qu'il faut sortir. Donc, cela est contenu à l'intérieur de l'objet appelé météo, qui est contenu à l'intérieur de l'objet appelé données. C' est maintenant que nous avons ces indices de base. Nous pouvons retourner à notre et nous pouvons commencer à retirer ça. Donc, créons une fonction à D qui d'une façon ou d'une autre obtenir des données météorologiques sous la fonction ici, obtenir l'indice UV, et cela va nécessiter la réponse Jason, disons Jason String sur. La raison pour laquelle nous le faisons est de nous assurer qu'on lui a transmis quelque chose. Parce que lorsque vous avez affaire à des yeux AP pleins de repos, des variables, disons que vous aviez une variable de classe Jason dans le contrôleur de vue. Il se peut qu'il ne soit pas renseigné avant d'appeler ceci et que vous obtiendrez une erreur, donc vous devrez peut-être introduire des options, ce qui crée plus de complexité. La façon dont on le fait, c'est qu'on va tout simplement le passer. Et où va-t-on le passer ? Fini ? Eh bien, si notre Jason est valide dans notre fonction get weather data, alors nous allons obtenir notre où la date pas les données météo obtient l'indice UV et simplement passer au-dessus de notre Jason. Ok, donc maintenant nous sommes prêts à programmer cette fonction. Donc nous avons notre Jason. Nous savons qu'il existe avec l'imprimé. Faisons notre si les données plates sont égales à et qu'est-ce qu'on va obtenir ? Eh bien, on va les attraper, Jason. Nous sommes passés sur le chemin où nous accédons à Jason. Les données sont entre crochets, puis nous spécifions la clé sur la toute première clé que nous voulons est données. Parce que si vous vous souvenez que c'est la première et la seule clé de cette structure arborescente, alors nous allons l'obtenir. Et nous allons dire, Essayez de faire cela comme un dictionnaire parce que si vous y pensez, tout ce qu' un dictionnaire est est un tas de clés sur les objets associés à ces clés. Alors disons-le, il sera les clés ou les cordes, ce qui est vrai pour Jason sur tous les objets peut être n'importe quoi. Et la façon dont nous spécifions cela est en disant n'importe quel objet. Donc ça veut dire que ce sont des objets. Ça pourrait être absolument n'importe quoi. Donc, tout ce que nous avons fait sur cette seule ligne, c'est dire, si vous pouvez changer cette section d'arbre de données en un dictionnaire, alors nous sommes prêts à partir. Ouvrons et fermons les accolades et continuons. Donc, à ces moments, la première chose que vous devez faire est de voir quel est le problème ici. Impossible d'inscrire une valeur de type string avec une chaîne de type index hors type, à droite, qui n'a aucun sens. Rapide. Donc ce que je vais faire, c'est nettoyer le produit et je vais le reconstruire. Commandez la construction du produit ou. Ok, donc on a un problème, non ? Je sais quel est le problème si stupide. Cette valeur de point de résultat, je pense, est éteinte une fois. Alors voyons. Valeur qui est sur n'importe quel type. Donc ce que je vais faire ici, je passe tout ce qui n'est pas génial. Donc, en fait, je vais passer n'importe quoi alors,bien sûr,nous devons bien sûr, changer. Comment, euh, article ici, vérifions simplement cet appel pour pleurer Express lui-même. Qu' est-ce qui va réparer celle-là ? Ok, c'est bon. Maintenant, pourquoi est-ce qu'il a juste besoin de lui-même ? C' est une question intéressante. Quelque chose que tu devrais savoir. C' est parce que lorsque nous faisons cette demande, c'est asynchrone va, obtient les données, il revient. Cela pourrait être sur un fil différent dans notre traitement. Mais je ne pense pas que ce soit vrai pour Alamo tirer quelque chose que vous pourriez vérifier. Mais il revient, et quand il revient, il n'est pas conscient de soi où il est dans le monde. Donc on doit dire des cellules pour en faire une usure exactement là où elle est. Donc n'importe quel soi-même disait, Hey, la classe dans laquelle Alamo a été le feu est où vous allez trouver cet indice UV, et nous avons un problème légèrement différent ici dans notre méthode d'indice UV get, où ça nous dit cette Jason Data n'existe pas réellement efficacement. Nous ne pouvons pas retirer les sous-scripts Jason et n'importe quel objet parce que notre programme ne comprend pas ce que c'est. Donc, nous allons simplement enlever là-bas et voir si nous pouvons essayer de lancer. C' est ce qu'on appelle cela quand on dit comme quelque chose que nous jetons dans quelque chose comme un simple dictionnaire. Droit ? Donc nous allons tester que le coût fonctionne avec les mêmes données, et nous allons essayer de retirer cette clé de données. On va sauver ça et on va le faire sur la façon dont Sim et j'espère qu'il sera d'abord imprimé. Ensuite, nous allons le faire réimprimer immédiatement après cela dans Get UV Index. Donc travailler avec les données Internet et les structures de données d'autres personnes, c'est un peu bizarre parce que vous avez vraiment à décoder ce qu'ils font si icône, il continue à défiler. Ensoleillé, ensoleillé Oui, on sait qu'il est ensoleillé. Ok, donc ce que je cherche, c'est simplement le tag Jason. En fait, on peut faire le commandement f ici. Quel était l'article que nous avons ? Était-ce une demande ? Oui. Donc, nous avons eu une requête et regardez, il dit là où est mon curseur, Donc c'est demander une et demander Sue. Cherchons où ça dit, Jason, Jason, il y a notre succès, Jason. Super. Alors saisissons les moyennes climatiques. Et je vais le suivre pour chercher le deuxième lot qui est imprimé. Ici, c'est. C' est le deuxième lot qui est Prince Doubt est un optionnel. Ce sera évidemment assez prudent parce que nous avons affaire à des options à nouveau. Mais nous devrions avoir l'indice UV dont nous avons besoin si nous continuons à faire défiler vers le bas. Toujours simplement, recherche indice UV et il y en avait deux. Super. Donc, il est imprimé. C' est en fait obtenir cette structure de données pour nous, ce que nous attendons à ce qu'elle obtienne. Alors continuons à déboguer ceci juste pour nous assurer que nous savons où nous sommes. Je vais supprimer cette ligne simplement en la commentant. Donc maintenant on ne fait imprimer que ça, et maintenant on va imprimer une autre clé. Donc, en théorie, on peut changer ces clés ensemble. Ils veulent des données, et nous voulons l'autre clé hors temps. Donc disons cela et bien, j'ai dit en théorie, sur ce qu'il dit ici est que vous avez spécifié que c'est dans n'importe quel objet. Donc, quand il va pour obtenir ces données avec la clé de données. Il revient dans n'importe quel objet. Et Swift ne sait pas comment indexer sur n'importe quel objet, car il pourrait littéralement être n'importe quoi. C' est ce que ça veut dire. Donc je ne peux pas forcément faire quoi que ce soit là-bas. Donc on doit faire des routes différentes, on va couper ça. Et nous allons dire ici loin ou peut-être que les données font avancer. Faisons un temps égal à ces données, puis la météo. Maintenant, cela donne une erreur parce que c'est toujours sur n'importe quel objet ce DT Donc, nous devons dire à notre programme de le vérifier si est égal à ceci comme quoi ? Eh bien, encore une fois, ça va être un dictionnaire avec une chaîne et sur n'importe quel objet, parce que ça pourrait littéralement être un dictionnaire de n'importe quoi. Donc maintenant, nous avons notre météo en série. Alors, nous allons comme ces fouets. On veut dire que c'est ma faute. On veut enlever tout ça, couper et on veut vraiment si on monte ici et puis on va couper cette ligne. Dépose-le ici. Ok, donc maintenant nous vérifions si nous pouvons réellement extraire des données est une chaîne de dictionnaire. Ensuite, on va essayer de faire le tour. Donc il y a beaucoup de vérifications que nous faisons en fait ici. Mais c'est une bonne chose quand il s'agit de la programmation, surtout des trucs d'Internet, parce que vous ne savez jamais vraiment ce que vous allez récupérer. Je veux dire, ils disent ce qu'ils vont te donner, mais tu ne sais jamais vraiment, vraiment et tu dois toujours vérifier. Et donc j'ai sorti des données, et si on fait défiler vers le bas, on a notre météo. Mais remarquez ici. Et Jason, nous avons ce crochet carré qui me dit que c'est un tableau, donc je pourrais avoir plusieurs éléments à l'intérieur de ce tableau. Multiple de ces objets. Je pense. En l'état actuel, nous n'avons probablement qu'un seul objet si nous continuons à défiler. Oui, mais ça vaut la peine. Il est intéressant de noter que cela se trouve en fait dans un tableau. Ça veut dire que tu dois sortir la première partie de notre rayon. Donc indice numéro zéro revenons à notre article, et nous voulons retirer le temps à zéro, et voyons si cela nous donne une ère. Je le soupçonne, mais si nous avons de la chance, ce n'est peut-être pas le cas. On y va. Tout objet n'a pas de membres ultérieurs, donc c'est le même que Mary a rencontré où nous sortions, si, si, comme dans n'importe quel objet, et Swift n'a aucune idée de ce dont nous parlons réellement. Donc, ce que nous pouvons faire est de laisser ceci tel quel et nous pouvons modifier cela parce que nous savons que quand nous sortons, nous ne me laissons pas juste vérifier cela me confondre ici. Et je ne vous confond pas l'état actuel si il y a la météo, si elle pourrait être retirée comme un tableau. Donc ce qu'on va faire ici c'est se débarrasser de ça et on va sortir ça comme sur un rayon tous les objets du dictionnaire, qui, bien sûr, bien sûr, peut être n'importe quel type d'objet. Donc maintenant, il va résumer ça pour vous les gars. D' abord, on est un artiste avocat pour qu'on puisse les voir dans une ligne d'Isis. Un peu difficile à voir. Tout d'abord, nous obtenons nos données comme un dictionnaire de chaînes et d'objets. Ensuite, nous allons essayer d'abord étaient sortir. Jason a un dictionnaire. Ensuite, nous recevons nos données T, qui est cette clé de données ici. Ensuite, nous essayons d'obtenir la météo sous forme de tableau de dictionnaires et de chaînes, et c'est parce que cela renvoie des données. Ce n'est pas seulement sur l'objet. Il y a ce petit tableau sournois là-bas. Maintenant, nous avons un tableau. Donc maintenant, nous pouvons essayer de retirer le premier membre de ce tableau, qui contient notre météo actuelle. Donc, si nous appelons ce temps, peut-être que notre projet est égal à notre temps à Position Nord. Et puis si on peut convertir ça pour toi, deviner un dictionnaire sur ce qui devient douloureux, quelque chose va copier ça. N' importe quel objet. Alors on peut aller faire quelque chose avec ça. Donc, il ne devrait pas y avoir d'erreurs ici. Ouais, c'est bon. Coûts conditionnels. Euh, ok, il y a un petit article là-bas. Donc, ce qu'il veut dire, c'est que vous avez déjà jeté ceci comme des chaînes de dictionnaire. Ça ne sert à rien de le refaire. Alors, qu'est-ce qu'on peut faire ? Il dit en fait, si on va directement à l'indice UV tuant sur zéro comme indice UV. Alors vérifions l'indice UV de la météo. C' est directement sous la météo dans cet objet. Alors j'ai dit, prenez le 1er 1 puis allez chercher l'indice UV. Si vous pouvez coûter cette dépendance avis et rappeler. Mais en tant que chaîne, je crois que nous allons voir si vous avez un index. Oui, c'est une chaîne car elle a une citation entourée. Bien que techniquement, c'est un numéro que nous allons utiliser. Ensuite, nous pouvons définir notre indice UV vous-même point indice UV est enfin égal à cet indice juvie l'intérieur de cette petite section. Maintenant, vous avez L'index est actuellement mis nous une interview. Donc nous allons coûter ça comme un entier. Nous savons que cela devrait vraiment fonctionner, mais c'est à vous de décider si vous voulez réellement mettre en si laissez ici totalement à vous. Alors va nous demander de le déballer. Allons le réparer. Ça l'a forcé. Développe ça. Ok, maintenant, donnons-nous-mêmes un message. L' indice UV d'impression est égal à U V. Cous comme force, n'est-ce pas ? Retirons toutes les autres empreintes que nous avons. Je pense qu'avec ok pour ceux vous obtenir index. Maintenant, il est juste de s'assurer que ces parenthèses ne le font pas. Je pense qu'on doit en mettre un de plus quelque part ici, non ? C' est donc l'un des dangers de la programmation de ce genre de manière défensive. Vous obtenez parfois ces structures d'arbres assez grandes. Et bien sûr, il y a des façons de le faire d'une manière simple. Mais je veux que tu comprennes ce qui est impliqué dans le passage de Jason parce que c'est quelque chose qui va faire assez souvent. Et en le faisant très long chemin et ne pas utiliser une prise ou une partie de cacao pour l'instant, vous avez une bien meilleure compréhension. Donc, quand les choses tournent mal, vous ne passerez pas aussi longtemps à essayer de comprendre ce qui s'est réellement passé. Vous pouvez aller manuel et tout le monde dans votre équipe. Je te respecte d'être le gars qui sait comment faire les choses correctement. Donc maintenant, quand on joue ça, tu sais, Sim, on devrait nous faire imprimer notre indice UV. Comme je l'ai dit, c'est un peu douloureux d'avoir un seul numéro. Mais c'est ce qui est dit sont l'indice UV. Il a Bean imprimé, à droite, donc c'est trié. Travail fait 91. M1113 M'en faisons Homework de l'engrenement ! (et de solution): à droite. On a un peu de devoirs à faire. Et j'augmente la difficulté des devoirs en vous donnant de moins en moins d'indices et en vous forçant à sortir chercher des trucs dont vous pourriez avoir besoin. Et ça va faire de toi un meilleur développeur à la fin, non ? Donc, pour nos devoirs, actuellement, notre APP a quelques problèmes, mais un problème majeur. Alors qu'il obtient des données à partir d'Internet, comment l'utiliser et savoir que c'est ce qu'il fait ? Un utilisateur ne va pas attendre plus d'une ou deux secondes, trois secondes au maximum pour que votre application fasse quelque chose. Et s'ils attendent aussi longtemps sans savoir pourquoi ils vont vous donner une très mauvaise critique, croyez-moi. Je les ai eu. Nous allons donc résoudre ces problèmes qui surgissent d'attendre longtemps. Que faire si le temps AP I échoue ? Comment on le répare ? Et la façon dont nous allons le résoudre, c'est que nous allons donner les années ou un indice sur ce que le haut fait actuellement. Il en va de même pour récupérer des données. Est-ce que ça traite quelque chose ? Quoi que ce soit, ça n'a pas d'importance. Ce que je veux que vous fassiez dans ce devoir spécifique est de trouver un moyen de dire à l'utilisateur que le dehors va trouver des éléments. I e. Les données météorologiques 80 i. Mais ne le dites pas en langage technique, juste en disant simplement, essayant d'obtenir si quelque chose comme ça et aussi peut-être donner à l'utilisateur un feedback pictural de ce processus qui se passe. Donc, voici un indice. Recherchez quelque chose appelé un indicateur d'activité ou indicateur d'activité au i. Je crois que c'est ce qu'on appelle. Il suffit d'aller sur Google et de rechercher avec le mot-clé sur IOS, et vous pourriez trouver ce dont vous avez besoin. Alors mettez la vidéo en pause ici. Bonne chance. Essayez votre propre solution. Et quand vous aurez épuisé toutes les solutions possibles que vous avez dans, revenez à cette vidéo, commencez à la lire à nouveau et je vais parcourir la solution avec vous, n' est-ce pas ? J' espère que tu as eu un bon coup à tes devoirs. Tu l'as géré ? Tu l'as fait ? Si vous avez une solution de travail, c'est génial. Mais regardons maintenant quelle serait ma solution particulière pour ce problème, n' est-ce pas ? La première chose que je ferais est d'aller à mon storyboard et de voir ce que je pourrais réellement utiliser dans mes petits objets placés sur le côté droit pour montrer quelque chose. Alors, cherchons simplement de l'activité. Et là, nous avons quelque chose qui semble très prometteur. C' est un petit indicateur de rotation qui anime que quelque chose se passe pour que nous puissions cliquer et faire glisser cela dans notre vue. Maintenant laissons peut-être tomber ça quelque part près du coin inférieur, et je vais juste zoomer un peu et je vais contrôler, cliquer et glisser et déposer ça dans notre conteneur de position en bas pour qu'il soit un peu hors du chemin. Mais s'il commence à tourner, c'est quelque chose qu'un utilisateur est susceptible de remarquer. Maintenant, ceux-ci ne s'animent pas par défaut. Ce que vous avez à faire est de venir à la section des propriétés et faisons défiler vers le bas et cherchons quelque chose de très spécifique, qui est ici sous le comportement que nous voulions animer lorsque l'APP se charge pour la première fois, mais aussi quand il a fini d'obtenir les données, nous allons arrêter l'animation et affaiblir automatiquement la cacher quand nous l'arrêtons pour que nous puissions cliquer sur cette option aussi, et cela nous évite juste de faire beaucoup de codage plus tard. Ce serait également génial si nous pouvions déposer une étiquette juste pour dire à notre utilisateur exactement ce qui se passe. Alors laissez tomber ça et en fait je vais supprimer ça. Je vais juste copier cette étiquette qui est en haut de notre écran, coller quelque part et ensuite cliquer et faire glisser vers le bas. Eh bien, nous ne voulons pas faire ça, c'est sûr. Allons juste chercher l'étiquette cette fois. On y va, en parlant, parlant, en cliquant sur Track ce week-end en bas de gouttelettes. Retournez un peu son fonds parce que ce n'est pas très important. On peut l'aligner sur le côté droit, et ensuite, qu' est-ce qu'on va faire ? On peut changer sa hauteur en une seconde, je crois. On peut changer sa hauteur en une seconde, Mais pour l'instant, positionnons-le donc contrôlons le clic, faites-le glisser vers la vue, glisser vers la vue, obtenez un clic de contrôle de l'espace principal et faites-le glisser vers l'espacement horizontal de l'indicateur d'activité afin qu'il sache où il est leur contrôle. Cliquez et faites glisser vers le bas pour un espacement vertical. Ensuite, nous pouvons laisser tomber cette hauteur un peu parce qu'il est un peu ridicule est qui se tient 22 et peut-être juste une touche plus 20. J' essaie de l'aligner quelque peu sur les indicateurs d'activité, donc il semble très bien conçu. Même si on a fait ça à la mouche, on en a six. Si vous effectuez un zoom avant, vous pouvez voir qu'il semble assez aligné. On peut vraiment, mais ça l'un contre l'autre si on veut. Refusé. Oui, je pense que ça n'a pas l'air trop mal. Et puis nous pouvons double-cliquer sur l'étiquette et dire charger la fille parler. Donc ça a l'air assez bien jusqu'à présent. Ok, je pense que je pourrais combler un peu cet écart. Elle essayons peut-être cinq. Rapprochez-vous vraiment. Ok, donc nous sommes en train de charger. Maintenant. On a juste besoin de sortir ça. Alors ouvrons notre assistant rédacteur en chef. Fermez le contrôle des onglets du site. Cliquez et faites-le glisser vers le haut de notre contrôleur de vue. Et appelons cela quelque chose comme le chargement de l'étiquette. Prends cette ère stupide. Essayons quelque part là-bas. Étiquette d'apprentissage. Ici, nous allons et la même chose avec l'indicateur d'activité. Alors indicateur d'activité et nous allons nous connecter. Ce sont des points de vente simples, simples, donc il peut tout fermer et passer à notre contrôleur de vue afin de faire quelque chose avec ces éléments. Donc, créons une fonction pour le faire. Peut-être quelque part en bas, parce qu'il semble être Où êtes-vous ? Je trucs empile la fonction mise à jour vous. Ça va, c' est ça ? Donc, nous allons juste créer une petite pièce ici pour que vous puissiez voir ce qui se passe. Et puis à l'intérieur de notre mise à jour, vous je Eh bien, en fait ce que nous voulons faire est de passer une sorte de variable. Juste un booléen vrai ou faux pour voir si nous avons une sorte de succès de données comme ça Et puis si nous n'avons pas le succès des données, alors que se passe-t-il ? Eh bien, nous allons dire à l'utilisateur que nous avons échoué, donc nous allons vérifier notre étiquette d'état. Peu importe ce que je l'ai appelé étiquette de chargement, il a été appelé texte DOT est égal à n'avoir pas réussi à obtenir de nouvelles tentatives de données. Je pense que cela devrait le faire, transmet le message que nous devons transmettre. Et puis, bien sûr, si nous n'avons pas réussi à obtenir les données, nous devrions alors essayer à nouveau, ce qui est de savoir si les données Donc, ne faites pas un dans cette petite lèvre et ensuite nous pouvons revenir de cela. Maintenant, si les données sont un succès, ça va sauter cette enchère et aller complètement à cette section. Et ce que nous allons faire, c'est aller à notre indicateur d'activité et nous allons arrêter de l' animer , qui se souvient, cache aussi en fonction de la façon dont nous l'avons réglé. Et puis nous allons définir notre étiquette de chargement. Ne textez pas comme égal à vous avoir cinq données. Ok, donc c'est assez simple. Maintenant, nous devons appeler mise à jour vous. Je quelque part. Alors allons monter à probablement à l'intérieur obtenir indice UV. Quelque chose comme ça. J' aurais pensé que si nous avons imprimé ici, nous n'avons pas besoin, ou nous pouvons laisser cette impression pour nous-mêmes parce qu'à l'intérieur d'ici, nous pouvons vous mettre à jour et dire que c'est réussi, non ? Et après ça, nous pourrons revenir. Ok, donc on a l'indice UV. Nous sommes tous bons. Donc maintenant, si nous réussissons à passer à travers tout cela, si nous devons faire ce que nous devrions faire et que nous obtenons l'indice UV, nous devrions être bien d'aller au-dessous de cela. Mettons juste un petit commentaire pour nous-mêmes qui disent qu'ils n'ont atteint que cela. Si nous n'obtenons pas l'indice UV de l'incident A B I, c'est juste une note pour nous-mêmes. Plus tard, quand vous revenez à cela et ce que nous pouvons faire est de dire, auto fléchette mise à jour vous je et dire que nous avons échoué. Faux. Donc ce que ça va faire, c'est venir à toi, je vais être faux. Il va lancer ça et dire, échoué à réessayer les données. Il va essayer d'obtenir les données météorologiques. C' est la danse déplacée. Je suis juste en train de rendre cela un peu plus court, donc il s'adapte réellement à l'écran. ça Appelonsçapour obtenir des données et ça viendra chercher des données météorologiques et reviendra. Ensuite, bien sûr, s'il parvient à entrer dans cette offre, il le fera à nouveau. Mais bien sûr, ici vous devez être un peu prudent parce que vous pouvez rester coincé dans une boucle un peu, souvent infinie si elle n'arrive jamais ici. Parce que le format de données a changé avec les utilisations, n'a pas Internet, il va toujours aller rond et rond, toujours en essayant de l'obtenir ainsi sur les mains. C' est assez utile. Personne n'a à cliquer sur quoi que ce soit pour réessayer l'autre. Vous avez le danger d'avoir une boucle infinie. Mais ce n'est pas une boucle infinie très dangereuse . Ça veut dire que ça va continuer à essayer sans succès. Et vous saurez si le A P I change parce que vous commencerez à obtenir de mauvaises critiques. C' est comme ça que les choses sont les gens comme elles sont, non ? Donc ça devrait être bien. Ça va te mettre à jour. Je Donc, en théorie, ça devrait marcher. Allons frapper jouer. Passons à notre Sim donc il est en train de se charger. Nous devrions voir un bref message de la marque ajouter en bas. Peut-être que tu l'as vu. Peut-être que vous ne l'avez pas fait, mais il dit maintenant, avoir des données UV, donc ça fonctionne parfaitement bien et ce que vous pourriez réellement faire. À ce stade, vous pouvez désactiver votre WiFi, et vous pouvez le réexécuter simplement pour voir ce qui se passe. Donc, si vous appuyez sur Play pendant qu'il est en cours d'exécution, il écrasera l'application actuelle. Nous allons démarrer l'application actuelle supprimée, puis installer à droite la nouvelle version. Ok, donc c'est toujours notre indice UV maintenant il y a une petite question qu'on doit te poser. Pourquoi est-ce le cas ? Eh bien, c'est double vérifier ça. Maintenons-le. Enlevez-le complètement, puis arrêtons-nous. Arrête, arrête, arrête Joue. Peut-être que ça semble avoir eu un crash de code ex. Non, non, on va bien. Donc, il le lance à nouveau. Il devrait nous demander l'emplacement permettre. Et regardez en bas. Nous avons le chargement, et c'est juste le chargement, le chargement et le chargement. Ce qu'il va faire, c'est continuer à faire le tour de cette boucle en entrant dans cette mise à jour. Toi. Pourquoi ? Parce que nous avons un faux et dans la mise à jour, votre I Well, il devrait en fait être en train de charger en essayant d'obtenir des données. Mais tu sais ce qui se passe ici, c'est que ça n'a pas vraiment atteint ce point, Jason, c'est important à noter. Là où il est arrivé, c'est qu'il essaie d'obtenir les données météorologiques. Il essaie de faire feu à Alamo. Ça se déclenche, obtient un résultat, et alors ça ne peut pas vraiment avoir Jason. Donc, il n'obtient jamais l'indice UV, ce qui signifie, à son tour, qu'il n'arrive jamais à cette sanction qu'il est important de savoir. Donc on va faire, c'est qu'on va copier cette ligne. Copions donc cette commande. Tu vois ? Et on va aller chercher des données météorologiques, euh, euh, à l'intérieur d'ici. Si on ne peut pas avoir le Jason. Ensuite, nous aurons aussi et sinon pour l'échec de se connecter. Nous pouvons laisser tomber ça pour que nous puissions ensuite le sauver. Arrêtons ça de courir et ça recommence. Donc j'ai eu cet appel à cette fonction à deux endroits, les deux endroits où nous pouvons avoir l'échec. Donc c'est toujours une bonne idée de revoir votre logique, car quand vous commencez à ajouter des yeux AP, la logique va changer dans votre avis parce que nous l'avons fait. Maintenant, nous obtenons la logique correcte en essayant d'obtenir plus tard apparaît. Nous obtenons notre indicateur d'activité. Je pourrais les séparer un peu parce qu'ils ont l'air un peu méchants. Mais ici, nous avons une réponse continue. Résultats de l'échec sur ce qui se passe si j'allume ma femme. Eh bien, voyons ma femme. Je me connecte toujours. On y va. Nous avons nos données UV, donc il continue d'essayer jusqu'à ce qu'il arrive vraiment là où il doit aller. Brillance qui fonctionne bien. C' est une expérience utilisateur assez agréable, donc nous pouvons aller à notre planche principale. Et corrigeons cet espacement ici. C' est toujours agréable de corriger ces choses au fur et à mesure que vous allez donc ça semble bien au début, mais ce n'était pas le cas. Faisons un espacement de 20. Ok, ça devrait être bien. Nous pouvons corriger cela au fur et à mesure. Pas besoin de le tester maintenant. Droit ? Donc c'était ma version qui réparait le problème des devoirs. Maintenant, si vous parvenez à obtenir cette solution que très bien fait, je ne dis pas que ma solution est la meilleure. C' est juste une solution et les carburants fonctionnent. Alors un Pourquoi réinventer la roue ? suffit de le garder comme il est juste. Donc il y a juste une dernière chose avant de partir, en fait, que je veux pointer vers cette mise à jour. Ton oeil est appelé de l'intérieur d'Alamo Fire. Maintenant, parfois vous devez vérifier que cela rappellera le thread qui l'a démarré, ou n'importe quel thread auquel il rappelle sur le processus. Euh, s'il rappelle un thread qui n'a rien à voir avec notre interface utilisateur, nous allons avoir un crash. Quand on descendra, Teoh te met à jour. Pourquoi ? Parce qu'il essaie d'accéder aux choses sur le U Wise Red et c'est sur un fil différent. Il ne peut pas vraiment faire ça. Donc, si vous voulez être vraiment du côté sûr avec ça. Ce que vous feriez ici est appelé votre expédition Qué attraper mignon. Vous auriez la principale menace, qui est le vous. J' enfile le traitement et tu appellerais un évier dessus. Donc, vous lui dites que je voudrais que vous exécutiez quelque chose sur ce fil et puis à l'intérieur d'ici, nous pouvons copier ces données. C' est donc l'introduction à placer les choses sur le bon fil. Et bien sûr, si je cours ça, ça devrait courir. Et bien sûr pas parce qu'il a besoin de soi, parce que nous sommes en train de jouer avec des threads ici. Nous devons dire explicitement où sont ces éléments. Donc si nous venons de réparer rapidement X corwed mettra en soi pour tout et nous devrions être bons pour y aller , alors nous pouvons l'exécuter. Ok, donc c'est en cours d'exécution. Et cela garantit juste que sont rappelés pour changer le vous. Je fonctionne en fait sur le thread principal U I, et c'est une très, très bonne pratique, une dans laquelle vous devez entrer en tant que développeur. Peu importe que mon Internet soit tombé et sorti toute la journée, donc il essaie toujours d'obtenir des données, mais de toute façon, revenir à ça. Toi, je filme. C' est un concept très important mettant les fonctions de programmation correctes sur les threads corrects. Vous devez vous assurer que si vous obtenez un métier bizarre lorsque vous vous mettez à jour, pourquoi, c'est probablement cette expédition fait la file d'attente vers le point principal un évier. Ok, c'était les devoirs dans la solution. J' espère que tu as bien réussi à celle-là. Je te verrai à la prochaine conférence. 92. M11-14 calculent le temps de brûlure: C' est vrai, les gars, nous avons beaucoup fait dans cette affaire. Nous sommes allés sur Internet. Nous avons nos bits et pièces sont indice UV ou nous devons faire maintenant est lié cet indice UV avec le type de peau de nos utilisateurs et calculer leur temps de brûlure. Et c'est assez facile une fois que vous savez où regarder sur Internet. Alors ouvrez un navigateur et découvrons comment le calculer. Donc, j'ai ce site très pratique l'a appelé i un point com et il vous dit tout sur la façon d'éviter les coups de soleil. On dirait un vieux site web, vraiment ton retour dans la journée avec un point Web. Oh, mais ça marche toujours, et ça nous dit comment éviter les coups de soleil. Mais plus important encore, il nous parle de nos types de peau et du temps maximum que vous pouvez passer au soleil par type de peau par quantité de l'indice UV. Donc, 12 jusqu'à environ 11. Je pense que vous l'index, arrive sur cette planète pour vous donner quelques exemples. Une personne avec un type de peau de trois indice UV déviant de deux brûlera après seulement 20 minutes exposition non protégée au soleil et son calcul est effectué sur 200 minutes par u v I Donc si nous regardons ici, nous avons un type de peau de trois. Donc, nous divisons 200 par l'indice UV et 200 divisé par un indice UV de 10 est 20 minutes. D' accord. Et ils sont également vous permet de calculer le facteur de protection solaire. Donc, pour cette application, cela pourrait en fait être une option pour vous de pop ceci dans un utilisateur sait ce que SPF réellement appliqué à eux-mêmes. Il y aura un joli petit ajout, mais nous ne le ferons pas. Ce qui va calculer combien de temps avant qu'on brûle sans notre FPS. Donc, ici, nous avons à peu près toutes nos valeurs. Maintenant encore une fois, c'est une bonne idée de sortir et de vérifier toutes ces valeurs sur d'autres sites Web et de s'assurer qu' elles sont correctes. Tu n'as pas brûlé les gens ? Grâce à vos actions, vous ne le faites vraiment pas. Alors faisons une structure, tu sais, tu sais, rap avec un nouveau fichier, un fichier rapide, un fichier rapide, et appelons cette structure quelque chose comme les temps de brûlure. Je suppose que ça va le faire. Structurer le temps de l'homme et nous allons nous donner une petite note. Oh, dans quelques minutes. Donc, quand nous reviendrons voir ça plus tard. Nous savons ce que c'est. Alors appelons. Allons brûler. type 1 va être de type Double parce que c'est un nombre. Nous allons faire un calcul avec lui et le type de brûlure un an 67. Donc 67 et puis nous continuerons sur cette route. Un type 1 type 2 double C'était 100. Si je me souviens bien, laissez Bt trois tabou. Vous citez trop deux centaines et ensuite ça augmente de centaines. C' est assez facile à retenir. Laissez brûler type pour le double 300 qui brûlent le type cinq comme un double faisant Bo, qui est double que 400. Laisse Ben taper six en double. Moi aussi. Cinq 100, droit ? Alors vérifions simplement ça. Oui, nous avons tous raison. Donc maintenant, il est assez facile de calculer cela. Et en fait, recul, je pense que ce qu'on va faire est en fait faire un cours. C' est une meilleure idée. Nous pouvons contenir tous nos calculs à l'intérieur de cette classe. Donc, à l'intérieur de la classe, nous pouvons avoir une fonction à calculer. Ben, heure ouverte. Fermez nos supports et accolades. Maintenant à l'intérieur d'ici. En fait, nous avons besoin que notre type de peau soit transmis, parce que c'est une partie importante de tout ça. Donc ça va passer sur notre temps de peau. D' accord ? Maintenant, une fois que nous avons notre type de peau, nous pouvons alors sélectionner l'une des durées de brûlure correspondantes. Donc, la meilleure façon de le faire est probablement une instruction de cas de commutation pour le type de peau. Donc, le cas où il s'agit d'un type de peau hors type un, alors nous pouvons faire quelque chose comme définir le nombre de minutes qui ou plutôt nous ne pouvons pas faire le calcul selon cela. Donc, ce que nous allons faire ici est de me laisser juste réfléchir à cela une seconde parce que j'ai très légèrement changé par rapport aux notes de Made. Parce que j'ai vu que c'est en fait une meilleure façon de le faire que ce que j'avais avant. Laisse-moi juste penser ici un bonbon. Je crois que je l'ai. Nous allons créer une fonction privée pour que personne d'autre ne puisse la voir. Juste à l'intérieur d'ici, et nous allons calculer le temps de combustion. Et ce que je vais faire, c'est que je vais mettre un trait de soulignement juste pour moi, donc je sais que c'est une version interne de ça ? Oui, je crois. Et puis on va passer sur un type de peau. Ben Index n'est probablement pas le meilleur nom pour cela, mais ce sera essentiellement un double. Et cela va simplement être une valeur qui est passée d'ici. Donc, dans ce cas, où nous passons sur un type 1, nous allons souligner Teoh, calculer le temps de brûlure, et nous allons passer au-dessus de Bt 1. Oui, c'est génial. D' accord. Et ce que ça va faire, c'est calculer le temps de brûlure. Donc nous allons revenir d'ici un double, puis à l'intérieur d'ici. Quand nous aurons ce double retour, nous allons aussi le rendre. Ce qui veut dire qu'on doit le rendre ici. a une petite chaîne là-bas. Prenez juste une minute pour regarder ça. Si vous, euh, êtes un peu confus, est-ce pas ? Laisse-moi juste réparer cette époque. Type de peau, type un bureau a marché, être stupide là-bas. C' est en fait un type de peau. Ok, bien. Je vais changer d'ère. Mais c'est bien. On va arranger ça au fur et à mesure. Dis qu'on va passer un bt et qu'il tombera à travers. Teoh, on aura notre temps de combustion réel. Ok, donc on n'a pas à s'inquiéter pour cette fonction pour l'instant. Finissons notre boîtier d'interrupteur. Donc je vais copier ça. Je vais le coller et on va avoir un type 2 sur un BT ici si tu es un charbon. Dans les conférences précédentes, nous l'avons fait avec une boucle quatre. Donc, nous avons regardé à travers tous les éléments hors tableau. Et nous avons fait ces choses de type cas de changement. Et nous ne le faisons pas cette fois, en partie parce que paresseux et il est presque temps de rentrer à la maison. Mais si vous voulez vraiment le faire, vous pouvez, bien sûr, faire pour vous-même comme devoirs et c'est une bonne pratique. Sophie. Donc, nous tous les programmeurs souffrent du livre de paresse. C' est la mauvaise programmation de la racine. Bt cinq. Qu' est-ce que j'ai un problème avec les fouets ? Ivor a fermé mon étui d'interrupteur. Alors enlevons ces accolades. C' est la chose terrible à propos du collage de copie aveugle. Des choses comme ça peuvent arriver Droits quand vous en avez besoin. Parce que c'est l'équivalent de notre interrupteur ici. 84. Ça va être Bt 6 avec le type 6. Donc 12356123456 Grande. Et puis, bien sûr, sous cette dernière affaire, nous avons besoin d'un défaut au cas où cela tomberait à travers et que les gens de D. reviendraient. Et disons que l'utilisateur a cinq minutes avant qu'il brûle. Ok, ça va, ça devrait retourner un double. Je ne suis pas sûr que ça va me donner une interview et être stupide. Non, ça semble être juste. Droit ? Faisons cette fonction pour calculer réellement l'heure de la bande. Cela est passé sur notre index de gravure, qui est un nombre réel, donc c'est assez pratique. Donc ce qu'on va faire ici, c'est simplement retourner le type de peau, l'indice de brûlure. Et que devons-nous faire pendant que nous devons le diviser par l'indice UV, ce que nous n'avons pas encore. Ce qu'on devrait faire, c'est passer l'indice UV ici. Donc virgule indice UV comme un double. D' accord. Et puis, parce que nous l'avons fait, nous avons deux options. Nous pouvons ensuite passer l'indice UV ici sous ces arguments, ou affaiblir g o d'une manière plus simple et dire que l'indice UV est égal à 10. Faisons en sorte que ce soit un double. Donc on va défoncer juste pour être pessimistes. Mais une fois que nous l'avons passé ici, nous pouvons définir notre variable de niveau de classe. Donc l'indice UV auto-point est égal à l'de l'indice. On le passe, on y va. Ça le transmet. Et puis ici, on peut utiliser cet indice UV pour le trouver par. Je vais juste me mettre soi-même. On n'a pas besoin de me mettre ici juste pour que ça soit clair pour nous. Indice UV auto-médecin. Andi, avant de le retourner, je pense que c'est en fait une bonne idée de dire d'abord, laisser brûler le temps égal à. Et puis on va juste imprimer ça avant de lui rendre le temps de combustion, plus de faire une chaîne à partir du temps de combustion, et ensuite on pourra revenir au moment de la combustion. Je suis donc il ne devrait pas y avoir d'erreurs qui apparaissent à partir de là. Ok, donc tu as tout ce qu'il nous faut là-bas. Revenons à notre contrôleur de vue. Et dans notre contrôleur de vue, nous voulons réellement la fonction créative quelque part. Fonction calcule le temps Ben. D' accord. Et ça va appeler, alors disons que le temps de combustion est égal à un temps de New Bern. Ne calcule pas le temps de brûlure et ils allaient passer dans notre type de peau, que nous devrions déjà avoir, vous savez, classe. Et bien sûr, l'indice UV. Ce que nous aurions dû encore. Mais nous avons un problème ici. Ceci est un entier, mais dans Tages ne sont pas un problème à lancer simplement dans un double. Si vous avez un interject, vous pouvez toujours frapper sur le bois, jeter dans un double, et probablement vice versa. En fait, on a notre temps de brûler. C' est très bien. On peut ignorer cet avertissement. Et une fois que nous aurons ce temps de brûlure, nous pouvons faire quelque chose avec notre Vous êtes si méchant. Tes yeux seront probablement étiquetés qui est-ce qu'on veut ? Eh bien, je vais vous dire ce qu'on veut, et je ne pense pas qu'on l'ait encore lié. Allons à notre tableau principal, Cliquez sur cette étiquette principale, sélectionnez nos points de vente, et il n'y a rien qui le fasse référence. Donc on doit ouvrir notre assistant rédacteur en chef et on va contrôler, cliquer et faire glisser le jazz habituel jusqu'ici, et on va mettre l'étiquette du temps de combustion comme une tenue. Nous pouvons fermer ça, revenir pour quelques manettes et ensuite à l'intérieur de calculer le temps de combustion. On peut mettre l'étiquette ici, mais je ne pense pas que ce soit une bonne idée, parce que nous voulons vraiment le mettre quelque part où nous prenons soin de nos problèmes de toi. Donc ce que je vais faire ici, c'est simplement retourner le temps de combustion et ensuite changer notre fonction. Bien sûr, il revient, il a doublé. Et puis on va aller à la mise à jour, n'est-ce pas ? Parce qu'ici, nous savons si nos données sont un succès, nous pouvons tomber jusqu'ici, et nous pouvons ensuite calculer nos éléments. Donc, nous allons brûler le temps égal pour calculer le temps de combustion, puis les travaux personnels. Et nous voulons notre étiquette de temps de combustion. Ne pas envoyer de texte pour être égal à une chaîne de l'heure de bande. Simple est cela et nous devons référencer cela a un auto-doc calculer le temps de combustion. Oui, tout est trié. Donc, si nous parvenons à vous mettre à jour, je vais alors et seulement alors nous allons réellement examiner le calcul de la durée de combustion et ensuite la mettre à jour dans notre étiquette. Ok, faisons ça sur notre simulateur, et j'espère que tout devrait bien se passer. On y va. Nous avons sur nos données UV. C' était très rapide, donc j'ai eu un type de lumière pâle, 6,7 minutes. Je vais déchirer là où je suis actuellement en place. Ce qui est, si vous vous souvenez, vous pouvez définir votre emplacement avec un emplacement personnalisé dans ceux-ci. Droit ? Donc, c'est bon. Assez soyeux. Ce que je ferais immédiatement, c'est que je changerais des choses. Je vais au storyboard du Maine, et j'ai vraiment monté cette taille de police à quelque chose comme, vous savez, 150. Et j'augmenterais la taille de l'étiquette elle-même à peut-être plus que 200. Oui. On y va. Et il y a une autre chose que je changerais au moment où il en a 10. Mais peut-être que j'ajouterais quelque chose comme un plus minutes à cela. Donc maintenant, il va réellement afficher les minutes à côté de lui. taille frontale est probablement trop grande pour le faire efficacement sur notre petit appareil. Mais hé. Hein ? Vous pouvez toujours créer une autre étiquette et la mettre en dessous ou à côté. Donc oui, bien bien trop grand. Bien trop grand. Et que se passe-t-il si je le fais pivoter ? Ce n'est pas mal. En fait, j'aime ça. Ça te dit ce qui se passe immédiatement, n'est-ce pas ? Mais bien sûr, si on le fait tourner en arrière. Ça a l'air un peu dépouillé. Je ne peux pas tout voir. Mais je veux dire, vous avez l'idée. Vous pouvez le prendre d'ici et vous pouvez gâcher avec ça. Vous pouvez voir si vous pouvez faire ça en forme. Vous pouvez mettre votre propre timbre de conception dessus si vous le souhaitez. Je veux dire, c'est ce que je ferais, c'est un développeur. Mais je ne perds pas ton temps en faisant ça. Je veux que tu ailles là-bas et que tu commences à Expo Pera avec ces trucs, vois ce qui ne marche pas et que tu le répares toi-même. Parce que c'est ce que vous êtes un développeur. Vous êtes juste un grand mécanicien de logiciels. Si vous faites de la randonnée, vous allez passer beaucoup de temps à résoudre les problèmes. Et si tu veux encore quelques problèmes à résoudre, eh bien, eh bien,tu y vas. Voilà un problème. Si je change mon type de peau en quelque chose, il ne met pas à jour mon UV. Il y a donc un problème d'interface utilisateur à résoudre. Et de même, si je sors, oui, et que je rentre, ça ne change toujours pas. Évidemment, si je transpire des vêtements, mon application y retourne, il le met réellement à jour. Donc, si je viens d'écrire Prenez que vous pouvez appuyer sur les flèches de commande pour le faire pivoter. Eh bien, 80 minutes ne rentrent pas là-dedans, mais c'est bon. Vous pouvez changer en entier pour verrouiller la virgule décimale parce que personne ne sera dehors pendant, vous savez, 80,0 minutes. Sortons 80 minutes. Probablement 100 20 et brûlé fin de celui-ci. Mais, hé, donc il y a certains de vous pourquoi les problèmes de convivialité que je voudrais vraiment que vous résouliez les gars. Je ne vais pas vous donner une solution pour ça, parce que je pense que vous pouvez vraiment gérer ça à partir de maintenant. Tout ce qu'il faut, c'est un peu penser à la logique que nous avons mise en place dans notre contrôleur de vue . Et, bien sûr, dans notre classe de temps de combustion que nous avons créée dans cette session particulière. Alors allez-y, essayez ça. Et bonne chance. Je te verrai à la prochaine conférence 93. M11 15 Créer des notifications d'utilisateurs localement: accord, donc on est presque à la fin. C' est la dernière conférence de travail, si vous le souhaitez, après avoir essayé d'embellir l'application et ce que nous allons faire ici, c'est que nous allons envoyer une notification locale ce qu'on appelle une notification utilisateur à notre utilisateur pour leur dire que ils vont brûler dans x nombre de minutes. Donc, je nous fournit un cadre agréable, pratique pour nous de faire cela appelé les Juifs et les notifications, comme vous pourriez l'imaginer. Et il ne nécessite pas de serveur. Tout est complètement sur l'appareil. Et vous pouvez planifier un orteil de notification apparaît après avoir dit, cliquez sur un bouton à l'intérieur de notre application qui dit quelque chose comme Rappelez-moi que l'utilisateur recevra une petite notification, notre buzz sonore et l'une de ces petites icônes qui apparaît sur le écran de verrouillage. Alors voyons exactement comment on exécute ça, accord. Comme vous pouvez le voir, j'ai apporté quelques modifications à ma version hors de l'APP. Ce que j'ai maintenant est quelque chose d'un peu plus gênant. Donc si je fais ça, tu verras que j'ai déménagé. L' activité indiquée sur l'affichage des nombres, et une fois qu'il obtient l'indice UV. Il disparaît et vous montre quelques minutes jusqu'à ce que vous brûliez. Je pense juste que c'est une légère amélioration par rapport à ce que j'avais avant, non ? Donc, évidemment, le tien ne ressemblera pas à ça. Ça ressemblera à votre style unique. C' est ce à quoi ressemblera pendant qu'il reçoit des objets. Il a cet indicateur d'activité, qui est assis exactement au-dessus de ce nombre, et cet indicateur d'activité, passant, a en fait un fond sombre. Donc, il bloque complètement le numéro. Et puis j'ai mis cette étiquette sur le dessus, et cette étiquette est en fait empilée sur le chargement de l'indicateur d'activité de l'étiquette tout. Donc, plus il est bas, plus il est visible, et plus c'est, euh, quel est le mot ? J' ai oublié le mot sur l'endroit où ça bloque les choses derrière. En gros. Donc, il est assis sur le dessus de la pile des éléments que nous avons à l'écran à ce moment-là. Ok, accord, faisons ce qu'on est là pour faire maintenant. On va mettre un petit bouton pour qu'on puisse déclencher une notification pour écrire l'utilisateur après le nombre de minutes X . Alors, cherchons le bouton habituel. Il est clic et glisser ou alternativement, en fait, nous pouvons copier cette commande de changement en bas, Voir dans les frais de commande, cliquez et faites glisser et c'est tout le chemin vers le bas ici. Il a disparu parce qu'il se cache maintenant derrière cet indicateur d'activité. Donc, ce que nous avons à faire est sélectionné dans notre liste d'articles. Faites glisser le vers le bas vers le bas. Voici un moyen et il apparaîtra sur le dessus. Ok, donc nous l'avons. Alignons ce festival. Allons l'aligner au centre. Alors allons-y horizontalement et conteneur. Cliquez et faites-la glisser pour que l'étiquette place un espacement vertical afin qu'elle sache où elle se trouve temps en temps. Peut-on aligner ça ? Oui, nous pouvons à l'horizontale tout se trouve bien au milieu. Encore une fois. Maintenant, nous allons simplement double-cliquer dessus et changer ce qu'il dit taper pour être rappelé. On y va. Maintenant, nous avons ça. Nous pouvons donner à cela une vue légèrement plus large. Appelons ça 200. Ok, Excellent. Donc c'est comme ça que le bouton est trié. Cliquez dessus et assurez-vous qu'il n'y a pas de points de vente en haut. Droit ? Avis. Si vous copiez sur, vous copiez réellement les points de vente qui vont avec elle. On ne veut pas ça. Nous voulons un clic X afin qu'il soit supprimé. Ensuite, ouvrez notre assistant éditeur Control. Cliquez et faites glisser à partir du bus et quelque part dans le contrôleur de vue dire, peut-être un peu vers le bas. Oui, en fait, je vais contrôler, Cliquer et faire glisser ça vers le bas et créer une nouvelle petite section à l'intérieur de notre contrôleur de vue . Donc, contrôlez, cliquez et faites glisser. Il est là. Changez ceci en inaction. Rappelle les clics de Boston simples. Comment nous pouvons fermer notre éditeur assistant. Retournez à notre contrôleur de vue et puis à l'intérieur d'ici nous consentons. Notre notification de la première chose que nous devons faire est d'importer la façon dont nous utilisons la classe de notifications . Donc, nous faisons cela directement dans les notifications des utilisateurs les plus importants et il est là. Ok, et puis ici, nous commençons à créer nos notifications réelles. Maintenant, l'idée de notifications est basée sur ce qu'on appelle le centre de notifications utilisateur, donc nous devons saisir cela de notre système IOS. Centrons à l'égal de vous et du centre de notification des utilisateurs, et nous allons récupérer l'instance actuelle hors qui a remarqué que c'est un Singleton. Il n'y en a qu'un. C' est ce que Singleton veut dire, c'est qu'il s'agit d'un seul, et qu'est-ce qu'on va faire avec ce centre. Voyons ce qu'on peut faire. Centre. Et tout d'abord, nous en fait de demander à notre utilisateur l'autorisation, Donc demander l'autorisation. Maintenant, nous pourrions le faire au début lorsque nous chargeons notre application pour la première fois. Mais c'est un peu dépouillé, parce que quelqu'un pourrait en fait culminer. Ils ne voient pas pourquoi ils devraient le faire maintenant. Curieusement, vous n'avez pas besoin d'une description pour cela. Dans votre liste info p. Cela vous permet simplement de demander l'autorisation par défaut. Euh, il dit qu'ils pourraient être quelque chose dans le dedans pour un pair qui me manque et qui a une autorisation par défaut associée à elle. Mais peu importe, nous n'avons pas à sauter à travers les cerceaux dont nous avions besoin pour la localisation. Ok, alors vous appuyez sur la réponse. Il remplit tout ce dont vous avez besoin. Et tout d'abord, il vous demande quelques options, qui est ce type spécial d'options d'autorisation. Alors, qu'est-ce qu'on veut ? Quelles options est en fait un tableau, et dans ce tableau, nous pouvons spécifier le type d'alertes que nous voulons. Donc le 1er 1 est une alerte de points. Donc tu veux qu'un petit ping-orteil arrive ? Nous pouvons également spécifier un badge. C' est le petit badge qui apparaît sur l'écran principal de votre appareil. Petit numéro rouge. Prochaine Europe. Et si nous le voulons, nous pouvons lui dire de jouer définitivement un son. Je ne suis pas sûr qu'il va jouer ce son. S' il est mis au silence, j'en doute. Je pense que ça ne fera que vibrer, mais de toute façon, c'est bon. Et nous avons un gestionnaire d'achèvement. Donc, une fois que nous avons ça, ça nous donne deux variables. L' un est booléen. L' un est une ère, et si vous appuyez sur Entrée, nous pouvons les nommer et ce sont normalement des noms accordés comme un taureau puis une ère. Si l'un existe alors, une fois que nous avons cela, nous pouvons commencer à faire des choses avec ce rappel afin que nous puissions une activer ou désactiver les fonctionnalités fonction de notre autorisation. Donc, tout d' abord, passons un peu de contenu pour ce que nous allons réellement montrer à notre utilisateur. C' est donc l'identification de l'utilisation, notification mutable, le contenu du contact. plutôt C' estplutôtle type que nous créons. Alors c'est assez simple. Nous pouvons définir un titre Doc de contenu. Allez, retournez finalement titre de toute façon. Maintenant, l'idée de notifications est basée sur ce qu'on appelle le centre de notifications utilisateur, donc nous devons saisir cela de notre système IOS. Centrons à l'égal de vous et du centre de notification des utilisateurs, et nous allons récupérer l'instance actuelle hors qui a remarqué que c'est un Singleton. Il n'y en a qu'un. C' est ce que Singleton veut dire, c'est un seul. Et qu'allons-nous faire de ce centre ? Voyons ce qu'on peut faire. Centre. Et tout d'abord, nous en fait de demander à notre utilisateur l'autorisation, Donc demander l'autorisation. Maintenant, nous pourrions le faire au début quand nous nous chargeons pour la première fois. Mais c'est un peu dépouillé, parce que quelqu'un pourrait en fait culminer. Ils ne voient pas pourquoi ils devraient le faire maintenant. Curieusement, vous n'avez pas besoin d'une description pour cela. À l'intérieur de votre liste d'infos. Cela vous permet simplement de demander l'autorisation par défaut. Euh, il dit qu'il pourrait y avoir quelque chose dans le dedans pour un incomparable qui me manque. Il a une autorisation par défaut associée, mais peu importe, mais peu importe, nous n'avons pas besoin de sauter à travers les cerceaux dont nous avions besoin pour l'emplacement. Ok, donc si vous appuyez sur la réponse, ça remplit tout ce dont vous avez besoin. Et tout d'abord, il vous demande quelques options, qui est ce type spécial d'options d'autorisation. Alors, qu'est-ce qu'on veut ? Quelles options est en fait un tableau, et dans ce tableau, nous pouvons spécifier quel type de let's nous voulons. Donc le 1er 1 est une alerte de points. Donc tu veux qu'un petit ping-orteil arrive ? Nous pouvons également spécifier un badge. C' est le petit badge qui apparaît sur l'écran principal de votre appareil. Petit numéro rouge, prochaine Europe. Et si nous le voulons, nous pouvons lui dire de jouer définitivement un son. Je ne suis pas sûr qu'il jouera ce son s'il est mis en silence. J' en doute. Je pense que ça ne fera que vibrer, mais de toute façon, c'est bon. Et nous avons un gestionnaire d'achèvement. Donc, une fois que nous avons ça, ça nous donne deux variables. L' un est booléen. L' un est une ère, et si vous appuyez sur Entrée, nous pouvons les nommer et ce sont normalement des noms accordés comme un taureau puis une ère. Si l'un existe bien, alors, une fois que nous avons cela, nous pouvons commencer à faire des choses avec ce rappel afin que nous puissions un activer ou désactiver les fonctionnalités fonction de notre autorisation. Donc, tout d'abord, passons un peu de contenu pour ce que nous allons réellement montrer à notre utilisateur. C' est donc l'identification de l'utilisation, notification mutable, le contenu du contact. plutôt C' estplutôtle type que nous créons. Alors c'est assez simple. Nous pouvons définir un titre de point de contenu. Allez, retournez en arrière Finalement. Titre. Ah, des scènes comme l'air là-bas. Nous devons rendre ça égal. Et puis nous aurons accès à notre titre, qui est une chaîne simple. Ceci est montré à l'utilisateur lorsque le pop-up apparaît, et c'est cool cette fois. Oh, excellent. Ensuite, nous pouvons donner à ce contenu un corps, donc c'est un peu comme un email fléchettes Body est égal à un autre morceau de chaîne. Un morceau de ficelle. Je le perds aujourd'hui. Vous commencez à brûler. Ours, s'il vous plaît entrer à l'ombre ou utiliser un bloc solaire solide et le couvrir. Ok, ce sont des sources. ce moment, nous pouvons régler le son qui va avec. Donc le contenu du point de son est égal à et nous pouvons simplement prendre une notification U. N. N. Qu' est-ce que je cherche ? Je cherche du son. Il y en a. Nous pouvons utiliser la version par défaut. Ok, donc nous avons mis en place une notification, et ce que nous devrions probablement faire ici, c'est vérifier qu'elle a été effectivement accordée. Donc, si ce n'est pas accordé, alors nous allons simplement revenir et ne pas le faire maintenant. Évidemment, vous ne produiriez pas une application comme celle-ci. Vous mettrez effectivement une boîte de message pour avertir votre utilisateur. Une boîte de message a été déplacée pour avertir votre utilisateur, et vous le mettez quelque part dedans, puis revenez et dites, Allez, vous devez cliquer sur Accorder si vous voulez des notifications. Mais de toute façon, c'est au bout, non ? Donc, une fois en bas, ce qu'on va faire, c'est créer le déclencheur. Alors déclenchons. Et ça va être basé sur le temps. Donc, vous et utilisez le temps de notification dans les votes. Déclencheur de notification C' est un sacré mot. Et ce qu'on va faire, c'est initialiser ça avec notre temps de vote et s' il se répète ou non . C' est l'intervalle de temps est défini en secondes. On va juste le tester maintenant à cinq secondes juste pour s'assurer que ça marche dans notre haut et ne se répète pas. Non, ce n'est pas le cas, parce que nous ne le faisons pas, ça va toutes les cinq secondes. Ok, donc on a Outrigger. Super. Maintenant, qu'est-ce qu'on va faire ? Eh bien, nous devons créer la demande réelle elle-même, Donc, laissez la demande est égale à une demande de notification U. N. N. , et cela prend sur l'identification. Et la raison pour laquelle il faut un identifiant est si plus tard, si vous voulez annuler ces notifications, nous le pouvons, car il ya identification weaken tag sur. Et normalement, vous stockeriez ça. Identifiez une chaîne quelque part dans votre classe. Donc tu y auras accès plus tard. Pour l'instant, on va appeler cette notification de 5 secondes. Oh, mais c'est un mauvais nom. C' est une mauvaise notification de brûlure de sol est un bien meilleur nom parce que ça va toujours prendre cinq secondes, n'est-ce pas ? Il est brûlé. La notification est ce qu'elle est. Ensuite, il veut le contenu, et nous l'avons déjà créé, et il veut déclencher, que et il veut déclencher, nous avons encore créé. Ok, maintenant nous devons envoyer ça au système. On a un poste. Donc, nous allons au centre et nous ajoutons une demande. Quelle est la demande ? Eh bien, c'est la demande que nous venons de créer. Et à la fin, on ne fera absolument rien. Asseyez-vous et attendez. Droit ? Donc ce que je vais faire en fait va augmenter cet intervalle de temps à 10 secondes nous donne le temps tester des trucs, et ça va se déclencher quand on a cliqué. Bouton de rappel. Donc c'est tout ce qu'Arrieta va jouer. Allons à notre Sim. Ah, on dirait une erreur là. Nous devons rendre ça égal. Et puis nous aurons accès à notre titre, qui est une chaîne simple. Ceci est montré à l'utilisateur lorsque le pop-up apparaît, et c'est cool ces fois. Excellent. Ensuite, nous pouvons donner à ce contenu un corps. Donc, c'est un peu comme un email top body est égal à un autre morceau de ficelle. Un morceau de ficelle. Je le perds aujourd'hui. Vous commencez à brûler l'ours, et s'il vous plaît pénètre dans le bateau d'ombre utilisé bloc solaire solide et le couvrir. Ok, ce sont des sources. ce moment, nous pouvons régler le son qui va avec. Donc le contenu du point de son est égal à et nous pouvons simplement prendre une notification U. N. N. Qu' est-ce que je cherche ? Je cherche du son. Il y en a. Nous pouvons utiliser la version par défaut. Ok, donc nous avons mis en place une notification et ce que nous devrions probablement faire ici est de vérifier qu'elle a été effectivement accordée, donc si elle n'est pas accordée, alors nous allons simplement revenir et ne pas le faire maintenant. Évidemment, vous ne produiriez pas une application comme celle-ci. Vous mettrez effectivement une boîte de message pour avertir votre utilisateur. Une boîte de message a été déplacée pour avertir votre utilisateur, et vous le mettez quelque part dedans, puis revenez et dites, Allez, vous devez cliquer sur Accorder si vous voulez des notifications. Mais de toute façon, c'est au bout, non ? Donc, une fois en bas, ce qu'on va faire, c'est créer le déclencheur. Alors déclenchons. Et ça va être basé sur le temps. Donc, vous et utilisez le déclencheur de notification d'intervalle de temps de notification. C' est un sacré mot. Et puis ce que nous allons faire est initialisé avec notre temps de vote et si oui ou non l'intervalle de temps est défini en secondes. On va juste le tester maintenant à cinq secondes juste pour s'assurer que ça marche dans notre haut. Ça ne se répète pas. Non, ce n'est pas le cas, parce que nous ne le faisons pas. Ça s'éteint toutes les cinq secondes. Ok, donc on a Outrigger. Super. Maintenant, qu'est-ce qu'on va faire ? Eh bien, nous devons créer la demande elle-même. Donc, laissez la demande est égale à une demande de notification U. N. N. , et cela prend sur l'identification et la raison pour laquelle il prend un identifiant est donc plus tard, si vous voulez annuler ces notifications, nous pouvons, parce qu'il y a identifier la balise affaiblie sur. Et normalement, vous stockeriez ça. Identifiez une chaîne quelque part dans votre classe. Donc tu y auras accès plus tard. Pour l'instant, on va appeler cette notification de 5 secondes. Oh, mais c'est un mauvais nom. C' est une mauvaise notification de brûlure de sol est un bien meilleur nom parce que ça va toujours prendre cinq secondes, n'est-ce pas ? Il est brûlé. La notification est ce qu'elle est. Ensuite, il veut le contenu, et nous l'avons déjà créé. Et il veut déclencher, que nous avons encore créé. Ok, maintenant nous devons envoyer ça au système. On a un poste. Donc, nous allons au centre et nous ajoutons une demande. Quelle est la demande ? Eh bien, c'est la demande que nous venons de créer. Et à la fin, on ne fera absolument rien. Asseyez-vous et attendez. Droit ? Donc ce que je vais faire en fait va augmenter cet intervalle de temps à 10 secondes nous donne le temps de tester certaines choses. Et ça va se déclencher quand on cliquera sur le bouton Rappel. Donc c'est tout ce qu'il y a. Je vais jouer. Passons à notre carte SIM et cliquons pour être rappelé. Il nous demande ce que vous voulez. Notifications. Si vous cliquez, n'autorisez pas, ça ira à l'itinéraire de retour que nous avons créé, donc il va cliquer sur Autoriser. Je vais sortir de l'application quelque part et attendre. On y va, on y va. Eh bien, je brûle. Et si vous cliquez sur, la notification vous ramène directement à l'APP, et la notification apparaîtra ici. Si votre appareil est éteint, il est donc essayer de taper pour être rappelé. Éteignez l'appareil et c'est attendre ces quelques secondes précieuses. On y va. Et bien sûr, nous pouvons cliquer sur cet élément et cela nous ramènerait. Ou si vous avez le contact, j'ai activé. Il vous demandera de mettre votre empreinte digitale. Donc c'est comme ça qu'on le règle. Maintenant, vous devez être prudent ici parce que si je clique sur taper pour re rappelé et tapé pour être rappelé, eh bien, attendons juste et voyons ce qui se passe. Je cliquerai deux fois à peu près une seconde. Numéro un et rien. Donc, je ne sais pas cela avec certitude, parce que je ne coderais jamais d'une manière qui permettrait aux gens d'appuyer deux fois sur les choses s'ils ne devraient pas appuyer deux fois sur les choses. Mais ce que je soupçonne, c'est que si vous donnez la même chose, identifiez-le à votre demande. IOS remplacera ou tout simplement pas la peine de mettre le 2ème 1 dans parce qu'il dit que c'est la même chose selon vous de toute façon, pourrait être un contenu différent, mais c'est la même notification. Identifiez-le. Et donc je vais annuler un de ceux-là, pas vrai ? Donc la dernière chose que nous avons à faire est de savoir que ça marche sans temps, Interval. Ce qu'on doit faire, c'est qu'on a besoin du temps qu'on va brûler. Donc si vous vous souvenez de votre mise à jour, j'ai appelé le temps de brûler est ce qu'on va faire, c'est avoir du temps brûlé. Alors enlevons. Laisse ici et on va dire brûler secondes. On va copier ça. On va le mettre comme une variable de classe en haut ici. Donc encore une fois, je dis temps de combustion loin, secondes comme un entier, et nous allons faire cela égal à une valeur par défaut de 60 secondes. C' est absolument bien. Puis quand on descend à l'endroit où on brûle le temps, secondes. Nous devrons donc nous mettre ici, bien sûr, et nous devrons coller ça ici. Nous avons maintenant les secondes de temps de combustion disponibles pour nous parce qu'il est réglé ici, et ce que nous devons faire est en fait, ce n'est pas une deuxième visite. C' est une minute maintenant que je suis venu y réfléchir. Alors réfléchissons à ça. Appelons ce procès-verbal. Je pense que c'est une chose plus sûre à faire après le rouleau. C' était une différence d'unités, pouces et de centimètres qui a fait exploser cette navette spatiale dans les années 80. Je pense que c'est l'importance de bien faire vos unités. Mesdames et messieurs, assurez-vous que c'est juste. Temps de combustion en minutes afin qu'ils le modifient à une valeur par défaut de cinq minutes. Pourquoi, non. Ok, alors on a nos minutes quelque part pour qu'on puisse calculer les secondes à partir de ça. Et où voulez-vous le calculer ? Eh bien, par ici, dans notre gâchette. Donc l'intervalle de temps va être brûlé. Temps minutes, fois 60. Maintenant, cela pourrait nous donner une légère erreur parce qu'il va retourner un double. Mais nous n'avons pas inclus Jessa corrigé et X codes correctifs pour mettre un intervalle de temps dessus. Non, je ne sais pas ce que ça veut dire. Donc je pense que ce que nous devrions faire, c'est en fait dire entier Macon enterré. Tu es hors de ça. Alors, quel est le problème maintenant ? Oh, je ne sais pas. Eh bien, qu'est-ce que u n dans U N déclencheur de notification d'intervalle de temps veulent de nous ? Qu' est-ce que tu veux de moi ? Bon sang, voyons sa copie. C' est à une ligne vide. Il veut un intervalle de temps. Donc, je suppose que l'intervalle de temps de la première option est un certain nombre de secondes. C' est une double chose étrange à faire de toute façon, donc ça va faire du temps de brûler, temps de 60 minutes, ce qui nous donnera un double, et on recevra une notification de ça. Quelle est l'ère maintenant elle-même ? Bien sûr. C' est ma faute stupide. Donc c'est cette ligne complète. Laissez le déclencheur égal, etcetera. Donc ça va nous faire perdre l'intervalle de temps d'affectation, temps de brûlage en minutes fois 60 secondes par minute, et ensuite on devrait être triés. Donc on a une légère erreur ici. On a besoin d'être sur ça. C' est bon, non ? Donc maintenant, si nous exécutons notre application et que je ne vais pas vous faire rester assis pendant 60 minutes ou aussi longtemps qu'il me faut pour brûler pour comprendre que nous avons mis en place une notification pour cela, mais vous pouvez vous sentir libre de tester cela. Dis que tu pourrais parler pour que tu te rappelles. Et dans six minutes cet iPhone simulé, il va apparaître et me rappeler que je dois sortir de ce fils. C' est ainsi que nous faisons des notifications d'utilisateurs locaux sans service ni aucune de ces ordures et comment nous les planifions à l'avenir pour apparaître dans notre acte. Maintenant, il est intéressant de noter qu'ils apparaîtront effectivement, même si vous ne courez peut-être pas, parce que le centre de notification est une chose IOS et qu'il n'appartient pas à l'Europe. Vous lui avez déjà envoyé le message. Vous avez envoyé la demande afin que votre application n'ait pas besoin de faire quoi que ce soit. Votre application se rechargera lorsque quelqu'un clique sur le bouton et lui montrera l'interface que vous souhaitez afficher. Ok, donc c'est tout trié, et c'est le dernier morceau de code que vous devez faire pour Will I burn 94. Résumé de Will ai-je Burn: C' est ça. Mesdames et messieurs, nous en avons fini avec Will I burn. Et j'ai cassé quelques choses pour vous ici principalement. Nous avons enlevé ces définitions horribles de l'architecture reposante, que vous ne liriez jamais. Je n'ai jamais lu ce paragraphe de Wikipédia. Je l'ai juste mis là pour vous faire peur, toi et moi, et je l'ai cassé. Et j'ai dit, Tout ce que c'est un client qui veut contacter un serveur. Il envoie une requête. Le service envoie une réponse. La réponse a été de données, et ces données ont un format. Ça pourrait être n'importe quoi de ce format. Il se trouve que Jason est utilisé dans la plupart des formats ces jours-ci Et où regardent comment passer cela à l'intérieur de ce module. Ensuite, nous avons regardé comment trouver un temps un B I. Donc, nous avons cherché un couple de l'Internet. Nous en voulons un avec un indice UV dedans. Nous avons appris les paramètres dont nous avons besoin pour nous connecter. Et puis nous avons également examiné les différents Jason et les formats de données qui en ressortent. Maintenant. Tout est très compliqué à regarder, mais en réalité, c'est assez simple parce que ou nous devons faire est d'installer un module en utilisant des gousses de cacao qui est fait par quelqu'un qui a déjà eu ce problème d'obtenir les yeux AP de l' incident. On n'a pas besoin de réinventer la roue si on ne veut pas. Nous avons appris à installer Alamo Final, qui était une partie qui nous permet de faire toutes sortes de choses http, et nous avons utilisé. C' est seulement une fonction très basique. Il a beaucoup plus de fonctions. C' est une fonction très basique, qui était d'obtenir ces données d'un A p I. Et il l'a fait en utilisant un appel asynchrone, donc il n'a pas bloqué notre application pour être utilisée pendant que cela se passait. Nous avons aussi appris à propos de vous. Je parle, et si nous revenons d'un appel de puits, nous devons nous assurer que tous les changements que nous pouvons venir à vous, je thread sont en fait appelés sur le rouge américain. Si elle est appelée sur un fil différent sur le processus, euh alors nous allons avoir un très gros problème. Puis, enfin, nous avons examiné les notifications locales. Comment pouvons-nous les configurer et les programmer à l'avance pour qu'ils disent à notre utilisateur quand ils doivent sortir du soleil et cesser de brûler. C' était donc le résultat final de notre application. Et je ne pense pas que cette application semble trop mauvaise. Si vous me demandez si je cherchais une application météo ou une application de gravure UV sur l'APP Store, cela attirerait vraiment mon attention. Parce que beaucoup de développeurs essaient très hards. Ils seront très pleins de couleurs pleines de choses de fantaisie et que ces choses de fantaisie et les couleurs ne se distinguent pas sur les listes de l'APP Store. C' est en fait des trucs comme ce monochromatique ou avec un thème de couleur cohérent qui vous font envie de malade. Cliquez dessus pour que ce soit quelque chose à garder à l'esprit, non ? Bien fait pour compléter ce module a été assez épique. Vous avez beaucoup appris et vous êtes en train de devenir un développeur assez avancé. Maintenant, une fois que vous commencez à comprendre ce truc, comme d'habitude ici, quelques feux d'artifice pour y mettre fin 95. M12 1 à la présentation de Cha A Clone Whatsapp: une des choses les plus importantes allaient faire lorsque vous créez une APP est en fait quelque chose que vos utilisateurs ne voient jamais réellement. Et c'est de créer le back-end de l'APP avec le serveur ou tout ce qu'il fournit les données à votre application. Donc, l'une des façons les plus populaires de le faire est d'utiliser un service Google appelé Fire Base . Et c'était une entreprise que je crois qu'ils ont achetée il y a quelques années, et ils l'ont quelque peu améliorée, et c'est une excellente option ces jours-ci. Nous allons donc commencer à comprendre comment utiliser quelque chose comme la base de feu en créant un clone WHATS APP très simple. Fondamentalement, c'est un chat interconnecté afin que vous puissiez discuter avec d'autres utilisateurs. On va faire plein de trucs fantaisistes avec ça, mais on ne va pas rendre ça trop compliqué. Juste pour que tu aies l'idée de la base de feu. Non, Évidemment ce que l'application est une application très populaire. Vous ne dépasserez probablement jamais sa base de clients, qui est, je crois, plus de 1 000 000 000 000 personnes à ce stade. Mais ce que je te donne, c'est la graine pour créer quelque chose de semblable à toi. Ce n'est pas forcément ce qu'il y a, ça pourrait être, tu sais, un chat de pêche, un passe-temps de cueillette de pommes. Et vous pouvez utiliser Fire Base pour créer une application de chat très rapidement et facilement. Maintenant, des trucs comme le son est réellement alimenté par ce qu'on appelle une base de données cloud. Et c'est juste une nouvelle terminologie de fantaisie pour quelque chose qui est en fait assez vieux. Donc, nous avons notre enveloppe, nous avons Internet, et nous avons une base de données assis quelque part sur Internet. Maintenant, quand les gens disent que la technologie cloud, tout ce qu'ils veulent dire est une base de données quelque part là-bas qui stocke vos données et les livre à votre maintenant, bien sûr, nous pourrions utiliser notre propre serveur à ces fins est parfaitement raisonnable. Vous pouvez le programmer et à peu près n'importe quelle langue que vous aimez. PHP serait la version classique de cela, mais nous pouvons réellement développer un raccourci ISIL, et nous pouvons utiliser Google Fire Base donc c'est un backend entier en tant que service, et vous pouvez rechercher le backend comme un service pour votre pomme, votre application de bureau ou tout ce qu'il est en tapant simplement l'acronyme B. A s dans Google, et vous pouvez voir n'importe quel backend que les services sont là-bas et la raison pour laquelle ils sont populaires est parce que des trucs comme la base de feu a fondamentalement créé le backend de la base de données pour vous, et il a créé la fiabilité réseau dont votre application a besoin. Alors que si vous lancez votre propre base de données, vous pourriez avoir des problèmes de fiabilité. Ok, donc dans cette section, nous allons regarder à nouveau les gousses de cacao, installer du STK pour que nous puissions utiliser firebase dans notre application. Bien sûr, nous allons examiner comment utiliser Fire Base va également créer un système d'enregistrement des utilisateurs qui s'intègre parfaitement avec la base de feu et envoie également aux utilisateurs des trucs comme des e-mails de mot de passe oubliés ou changer de mot de passe ou des e-mails de confirmation. Il fait tout cela automatiquement. On n'a pas à y penser. Nous allons également voir comment nous recevons des mises à jour en direct de la base de feu de ce que nous pouvons faire dans l'application est de s'abonner lorsque quelque chose change dans la base de feu et nous recevrons une notification lorsque cette chose a changé et nous pouvons le montrer à nos utilisateurs afin que nous n'ayons pas à faire ce qu'on appelle les sondages. Nous n'avons pas besoin d'aller demander au serveur. Il y a quelque chose que vous nous dites simplement quand quelque chose de nouveau se révèle et bien sûr, il y a beaucoup plus entre tout ça. Donc si vous êtes prêt, allons-y. 96. M12 2 Comment configurer Firebase sur le Web: La première chose que nous allons examiner est comment mettre en place une base de pompiers pour une utilisation. C' est assez simple. Nous avons juste besoin d'un navigateur et d'un compte Google pour le faire. Mais tout d'abord, je vais juste te présenter un truc appelé Pass. Maintenant passé était la même idée rece firebase. Et c'est il y a quelques années qu'il a décidé de se détendre. Maintenant, si vous êtes déjà familier avec fire base et que votre application est en quelque sorte de mise à l'échelle assez bien, vous pourriez vouloir réellement regarder les pars parce que je crois qu'ils ont leur code open source que vous pouvez exécuter votre propre version sur un serveur de pars. C' est juste quelque chose à noter. Mais en attendant, on va regarder la base de pompiers maintenant. La raison pour laquelle l'autre raison que je fais sortir à côté de la base de pompiers est qu'ils sont en fait assez similaires systèmes. Ils font le même genre de fonctions. Je vous fais juste prendre conscience de ce qui est là-bas et du fait que cette partie est open source et donc pratiquement gratuite. Alors que les bases de pompiers paient comme vous allez. Ok, ouvrons un navigateur et obtenez la base de feu mis en place la toute première étape est d'aller à firebase dot google. Ne viens pas maintenant. Si vous disposez déjà d'un compte Google, vous pouvez simplement utiliser le signe et le lien en haut à droite ou lorsque vous cliquez sur Se connecter. Vous pouvez également enregistrer un nouveau compte si vous sortez. Alors essayons ça. Allons de l'avant pour vous connecter et créer ou signer avec un compte Google. Je vais me connecter avec mon compte et vous voir dans quelques secondes, accord. Une fois que vous avez fait cela, tout ce que vous avez à faire est d'aller à la console en haut et il va vous emmener à l' interface principale . Ce qui commence en face pour la base de feu. Maintenant, tout ce que vous avez à faire est de deviner est de cliquer sur un projet. Il vous demande un nom afin que nous puissions appeler cela le nom de l'application réelle que nous avons. Vous pouvez sélectionner un pays ou une région, ce qui peut avoir des implications sur la facturation ainsi que des données d'analyse. Vous voudrez peut-être rechercher dans quel pays ou région vous voulez mettre cela. Ok, après que vous avez fait cela juste appuyez sur create project et cela va configurer le backend complet firebase pour vous maintenant, le back-end de la base fire est en fait dans aucune base de données SQL. Donc, il y a une base de données sans aucune structure ainsi qu'une foule d'autres éléments et vous pouvez les voir tous sur le côté gauche. Analytics, vous avez l'authentification pour que vous puissiez désactiver. Vous utilisez le stockage de base de données, hébergeant seulement des tonnes et des tonnes d'éléments. Si vous faites défiler vers le haut et vers le bas, il s'intègre également avec ajouter mob Assez bien, OK, donc clairement si nous regardons l'interface principale, nous avons IOS, nous avons Android et nous avons application web et nous faisons une application IOS. Donc tout ce que nous avons à faire est d'ajouter à notre sève de l'Iowa. Donc, si nous cliquons sur ceci, voyons ce qui se passe. Il nous demande notre bundle, I d. Donc nous n'avons pas encore créé cela et nous reviendrons à créer cela et ensuite vous avez d'autres articles que vous pouvez y mettre. Et si vous regardez en haut, nous avons un registre. Nous avons télécharger des fichiers de conflit. Cela vous donnera un fichier de conflit. Il vous dira également comment ajouter le sdk firebase à votre application, puis ajouter du code d'initialisation pour vous assurer que tout fonctionne. Donc, c'est assez pratique dans la façon dont il vous aide à accélérer les choses. Donc on ne va pas faire ça. Pour l'instant. Ça va l'annuler. Pour l'instant. Nous allons cliquer sur l'authentification maintenant. Cela vous permet de configurer une méthode de connexion ou d'enregistrement pour nos utilisateurs. Et si vous regardez en haut, nous avons des utilisateurs et la méthode de signature Click Sign in méthode et vous remarquerez que tout est réellement désactivé. Et c'est par défaut pour des raisons de sécurité. Évidemment, vous ne voulez pas que quelqu'un puisse entrer en Europe tout en le développant, mais plus tard, vous le ferez. Nous allons donc activer le mot de passe e-mail. Si nous cliquons sur cette petite icône de crayon sur le côté droit, nous pouvons cliquer, Activer et enregistrer et nous dirons qu'il est activé. Maintenant, nous pouvons également autoriser les utilisations à enregistrer par téléphone, Google, Facebook et tout autre compte que nous avons. Vous pouvez aussi avoir anonyme, mais soyez prudent avec cela. Il est préférable de le laisser sur le mot de passe e-mail. y Ilya aussi une tonne d'autres informations ici, mais le plus pertinent est un compte par adresse e-mail et vous pouvez changer ça. Si vous le souhaitez, vous pouvez avoir la création de plusieurs comptes avec la même adresse. Mais ne fais pas ça. Je conseille d'avoir un compte par e-mail afin que les utilisateurs ne puissent pas le faire. Créez des tonnes de comptes et de spam votre serveur car vous paierez pour cela. Trois Feu de base et enfin, ici, nous avons réussi à signer le quota. Cela empêche les attaques par déni de service A ou non actif. Plus comme il empêche plusieurs enregistrements de comptes à partir de la même adresse i p. Donc, il ne permet que 15 par heure totalement à vous. Si vous voulez changer cela complètement à vous de décider, je trouve que la valeur par défaut est bien jusqu'à ce que vous ayez des problèmes, non ? Donc votre mot de passe e-mail configuré, nous sommes prêts à réellement commencer à créer un rap et à y ajouter une base de feu. 97. M12 3 Setting de l'application et d'installation de Firebase avec Cocoapods: OK, on va juste mettre en place notre application très simple. Et nous ne allons pas changer quoi que ce soit dans l'APP encore parce que l'objectif de cette section est installer Firebase en utilisant des pièces de coca et de s'assurer que tout fonctionne base Fire configurée, il peut se connecter à Internet avant de commencer à changer dans notre application. C' est une méthode que je vous conseille d'utiliser assez souvent est que si vous avez un orteil de chose complexe, ajoutez votre application, essayez de le faire au début afin que vous supprimiez toutes les erreurs potentielles que d'autres éléments peuvent réellement avoir. Ainsi, vous pouvez dépanner, par exemple, firebase si quelque chose ne va pas. Alors ouvrons le code X et voyons ce que nous devrions faire. Droits. Créons un tout nouveau projet X Code. Cliquez simplement sur le lien. Pour l'instant, nous allons avoir une seule vue. APP frappe. Suivant. Appelons ça quelque chose d'évident, comme le chat. Laissez votre organisation et vos identités tels qu'ils sont, comme vous voulez qu'ils soient touchés ensuite. Et ce qui ferait est juste de dire que sur votre bureau ou quelque part pratique de sorte que notre application principale sera créée maintenant que c'est fait, nous voulons réellement copier sur notre bundle. Identifiez-le. Retournons à la base de feu. Allons à notre vue d'ensemble de l'application et cliquez sur Ajouter firebase à votre IOS. Maintenant, remarquez qu'il veut votre paquet. Identifiez l'air ici. Alors, qui va accélérer ça ? Donc, si vous changez cela à l'avenir, vous devrez changer. C' est ça. Voilà bien, nous allons laisser notre surnom sur notre APP Store. En fait, on pourrait changer notre surnom pour le nom réel. En fait, Le juste C'est pour votre propre identification. Nous n'avons pas d'app store, je d. Donc, ça n'a pas d'importance. Hit, inscrivez-vous à. Et ce qu'il fera, c'est de vous donner une info, sans égal. Et si vous vous souvenez, la liste représente la liste des propriétés est juste un fichier contient des données de texte que nous pouvons lire. Donc, cliquez sur télécharger Google Service info dot liste p et qui va aller de l'avant et télécharger et remarqué qu'il vous dit d'installer cela dans votre application. droite. Alors passons à notre application. Allez sur le chat, cliquez avec le bouton droit de la souris. Et si nous regardons, nous pouvons ajouter des fichiers Teoh ici, et nous pouvons aller à nos téléchargements et nous pouvons sélectionner notre service Google en face, et cela nous dit que nous avons une erreur bizarre. Qui sait ce que ça voulait dire ? Allons frapper, d'accord ? Télécharge le véhicule. Sept cm Folk n'aime pas les droits. Tu sais ce qu'on va faire ? Nous allons réellement vous créer. Trouver une fenêtre, ira aux téléchargements, va monter la liste et nous allons le déposer dans. Et quand vous faites cela, il apparaîtra avec une petite boîte de dialogue, et vous avez juste besoin de cliquer sur copier les éléments si nécessaire. Hit Finish et nous l'avons là. Et si vous cliquez sur la liste P, il vous montre exactement ce qu'il y a à l'intérieur. Il y a notre bundle comme D. Voici tout le Project I DS, et c'est juste un tas de données qui nous permettent de nous connecter à notre compte Firebase , non ? Revenons donc à l'application Web. On l'a là. Nous pouvons cliquer, continuer, et il nous dit que tout ce que je vous ai dit avant est les instructions pour installer Coco Bonds et créer un fichier de pièce. Il y a ce lien en haut vers les parties de cacao. Vous pouvez cliquer sur cela si vous le souhaitez, et Il vous emmène juste sur le site principal des gousses de cacao afin qu'ils puissent fermer cela. Et Dan, maintenant tout ce qu'on a à faire est de créer le fichier Arpad. Revenons donc à notre projet. Ouvrons un terminal. Tapons CD, espace, bureau. Ou plutôt, nous pouvons effectivement juste avoir c d Nous pouvons ouvrir une trouver une fenêtre, et ce que nous pouvons faire est d'aller à notre bureau, obtenir votre chat, et nous pouvons cliquer et faire glisser dans le terminal et il remplit automatiquement pour nous. Frappez, entrez et nous y sommes. Et pour nous assurer que nous sommes dans le bon dossier, nous pouvons cliquer sur ls pour lister tout sur tant qu'il correspond à tout ce qu'il fait ici. Nous sommes OK, donc nous allons initialiser le fichier Arpad. Mais avant que nous fassions ça, fermons. Commande de code X mignon et partie dedans. Euh, hein. J' ai l'air de ne pas avoir de rôle. Je viens de mettre à jour Mac OS X , donc j'allais réparer ça. se voit dans une seconde. Maintenant que je l'ai fait, nous pouvons y jouer notre rôle et nous pouvons regarder tous les fichiers créés, ce qui équivaut à un fichier entier. Alors allons-y. Cliquez sur ce bouton. Ouvrons-le avec Allons à d'autres et cherchons du code X. C' était une bonne idée de les ouvrir avec du code X plutôt qu'un éditeur de texte brut. Ok, donc, hards pour bavardage. De quoi avons-nous besoin ici ? Eh bien, festival. On a besoin de la partie froide. Et comment ça s'appelle ? Eh bien, si vous arrivez 12 navigateur, il s'appelle ce noyau Firebase. On peut juste copier ça et le déposer ici, accord ? Mais ce n'est pas tout ce dont nous avons besoin sur une nouvelle ligne. Nous avons besoin d'une autre partie, qui est la base de données slash firebase, et ensuite nous pouvons enregistrer cela. Assurez-vous que nos frameworks d'utilisation sont allumés. Oui, nous sommes triés. OK, alors vérifiez juste ce que ça dit. Nous y sommes. On peut installer des trucs pour y retourner. On peut sauver ça et on peut l'abandonner. Ensuite, nous pouvons exécuter notre part dans la commande de magasin et cela va aller de l'avant et chercher nos articles de base de feu . Forints. Alors vérifions deux fois. Oh, je vois que ça va prendre un moment, donc je te vois dans quelques secondes. d' accord. Une fois que cela est fait, tout devrait être installé dans Cela prend probablement un certain temps, selon votre système. Ouvrons donc notre fichier XY workspace. Maintenant, rappelez-vous, n'ouvrez pas le projet de code X, mais le fichier d'espace de travail À partir de maintenant, si vous ouvrez ce projet s'est produit, vous pouvez en fait gâcher quelques choses à faire avec des pods de cacao . Donc, évidemment, vous ne voulez pas passer par ça maintenant. Nous avons notre chance. Nous avons nos capsules. Ouvrons notre projet principal. Laissons tout indexer donc à la barre supérieure ici, nous pouvons voir qu'il fait ce qu'il doit faire. Et notre prochaine étape est d'initialiser notre pot de coca à base de feu. Donc, si nous revenons à notre navigateur et nous frappons continuer, nous arrivons à notre code d'initialisation d'annonce et il vous donne un C. rapide ou objectif Donc, cela nous dit que nous devons connecter firebase lorsque l'application démarre et le code innit. Sh Nous devrions mettre dans la classe de délégué de l'application. Donc, tout ce que nous avons à faire est d'importer firebase, puis de mettre cette ligne dedans. Donc, regardons en fait ce point délégué d'application Swift Donc, c'est le fichier avec un peu de code, si vous voulez. Cela se charge lorsque notre application est chargée pour la première fois, donc vous remarquerez qu'à l'intérieur de cette classe appelée délégué APP, nous avons quelques fonctions, comme l'application l'a fait. Terminez le lancement avec des options, et l'application démissionnera active. Et si vous lisez ces commentaires ici, ils vous disent ce que toutes ces choses signifient. L' application est entrée dans les arrière-plans. Ce sont des crochets sur lesquels ou dans lesquels vous pouvez placer votre propre code afin,par exemple, par exemple, enregistrer certaines données. Si votre application passe en arrière-plan, puis rapportez les données. Si l'Europe revient au premier plan, il en sera ainsi. premier plan est un exemple, ou il est devenu actif. Mais c'est aussi l'endroit où nous pouvons initialiser des choses avant que la femme GE, si vous aimez hors de notre application est réellement chargée. Et, bien sûr, la première chose que nous voulons réellement initialiser ici est d'importer firebase et vous remarquerez que nous avons tous les éléments dont nous avons besoin là-dedans. Importons la base de feu. Revenons ici et c'est exactement ce dont nous avons besoin. Et puis à l'intérieur qui a fini de lancer avec des options. Nous avons besoin de firebase app dot configure. Donc ici, c'est avant le retour. Vrai. Nous allons le mettre là, donc avons l'application Firebase. Ne configurez pas, Vous savez, juste il y a en fait deux configurations que vous pouvez avoir. Laissez-moi juste prendre cela contre cela apparaît pour nous où vous pouvez réellement mettre vos options de base de feu , ou vous pouvez donner le nom de configuration et ajouter les options à, mais quand vous avez juste configure simple, il sait pour aller chercher cette liste de points p d'informations sur le service Google afin que nous n'ayons pas à ajouter d'autres options. Donc, évidemment, il y a des façons de le faire. Donc si ça marche, on va le sauver. On va aller au produit et à la construction, et on va juste vérifier. Ça va s'appuyer sur notre base de pompiers. La partie cacao fonctionne en fait, et nous avons un projet de loi a échoué. Qui sait pourquoi la première chose à vérifier est de le nettoyer. Et une fois qu'on l'aura nettoyé, on pourra le reconstruire. Et ce que je vais faire, c'est exécuter ça sur le simulateur. L' iPhone s e. Alors frappez le jeu et chargez-le maintenant il est en train de construire à ce stade ou de compiler si vous voulez, et j'espère que cela va compiler avec succès. Si ce n'est pas le cas, eh bien, nous pouvons le réparer parce que nous sommes des développeurs après tout, ne construisons pas ? Réussi. Voilà, tu y vas. Donc, si jamais vous rencontrez des problèmes, nettoyez toujours et reconstruisez votre application. Donc, quand cela se charge réellement sur le simulateur, nous allons savoir si cette application Firebase est réellement configurée correctement et saurons cela parce que nous n'aurons aucune erreur à afficher. Et nous l'avons là. Nous avons notre belle vierge est arrivé. Si nous allons sur notre console et simplement déplacer cela autour d'une touche, nous pouvons réellement complètement étendre. Mais j'aime l'avoir à moitié là-haut. Nous avons un tas de messages qui nous disent avoir échoué, enregistrés pour quelque chose qui n'a rien à voir avec la base de pompiers. Mais si vous regardez ici, nous avons quelques messages à voir avec les analyses Firebase activées sur tout un tas d'autres éléments de la base incendie . Alors continuons. C' est assez difficile d'agir pour les séparer. J' aimerais qu'ils mettent un saut de ligne en eux, mais cela ne me dérange pas de toute façon, tant que vous avez quelques messages réussis Firebase, alors fire base est en fait prêt à être utilisé dans votre application. Et tant que vous n'avez pas d'erreurs majeures autour de cela, vous êtes prêt à partir pour que nous puissions arrêter cela sur notre simulateur et notre base cinq est prête à l'emploi. 98. M12 4 Enregistrement de et de composants de connexion pour la connexion à l'engrenement: Maintenant, on va regarder en train de déclencher notre code de base de feu. Donc ce qu'on va faire, c'est concevoir l'écran de connexion et on va coder l'arrière-plan en une seule conférence. Maintenant, c'est une leçon assez longue, mais vous devriez être habitué à ça maintenant. J' aime vous présenter lentement des leçons plus longues et plus longues pour vous donner une idée de ce que c'est être un codeur parce que vous codez le meilleur code quand vous êtes réellement en flux et ne sautez pas de cinq minutes ou cinq minutes, sections par heure ou Deux et vous pouvez produire de très bonnes choses, est-ce pas ? Je ne l'ai pas dit. Passons à la façon dont nous gérons des choses comme l'inscription et la connexion. Eh bien, la première façon de le gérer est comme ça. Nous pouvons charger notre application. Nous pouvons dire à notre utilisateur de s'inscrire, puis ils peuvent utiliser le M. Mais il y a un problème avec cette conception dans le fait que si votre utilisateur vient de télécharger l'application, vérifiez-le. Ils ne veulent pas nécessairement vous donner les détails. Ils ne veulent pas l'enregistrer parce qu'ils savent investi encore, sorte que cela pourrait effectivement être un cas de conception assez mauvais en fonction entièrement de regarder votre application est à propos de Vous pouvez avoir besoin de les enregistrer, comme vous pouvez avoir besoin de les enregistrer dans un chat en haut, évidemment. Donc, l'autre alternative est de charger l'APP, permet à l'utilisateur de l'utiliser, puis de lui demander de s'enregistrer quand ils essaient d'effectuer une certaine fonction. droite. Donc on va faire une de ces deux façons dans ces conférences. Et ce n'est pas important de quelle façon nous le faisons maintenant parce que nous essayons juste de comprendre comment fonctionne cette connexion et l'enregistrement. Mais c'est à vous de penser un peu plus tard. Ron, quand vous créez votre propre APS, comment gérez-vous cette utilisation du registre ou utiliser le genre de scénario de registre. Ok, alors ouvrons le code X et commençons à concevoir notre écran de connexion, non ? Ouvrons notre planche principale et nous allons déposer un journal dans quelques Controller ici pour qu'on puisse juste se débarrasser de ces barres latérales ou juste l'un d'entre eux, et on peut déposer un autre contrôle de vue. Et rappelez-vous, nous pouvons les sélectionner en utilisant le filtre d'objet, et si vous obtenez les mauvais éléments, c'est probablement parce que ces icônes en haut sont incorrectes. Sélectionnez donc l'élément objet et vous aurez votre contrôleur à votre disposition. C' est vrai ? Alors cliquez et faites glisser ça n'importe où, est-ce pas ? Nous avons un contrôleur de vue pour vous connecter. Donnons donc à ce contrôleur de vue et je l'ai sélectionné et plus dans les attributs. Inspecteur, nous pouvons donner un titre si nous le voulons. Et aussi dans la classe. Inspecteur, on peut lui donner un storyboard. Il est évident que nous avons besoin de ça. Appelons cela peut-être se connecter en vue contrôle hit enter et il sera appliqué. Donc, c'est la chaîne que nous allons utiliser afin de trouver quel contrôleur de vue ouvrir si nous voulons l'ouvrir par programmation à droite, Donnons à cette vue un arrière-plan alors cliquez simplement sur la vue elle-même. Donc, sur la gauche, vous pouvez effectivement sélectionné dans le contrôleur de vue Modifions ses attributs sur Changer la couleur d'arrière-plan En cliquant sur l'icône d'arrière-plan à une couleur personnalisée, vous pouvez sélectionner ces trois curseurs aller à RVB même aussi faire couleur hexadécimale. Je vais faire la couleur hexadécimale et je vais donner un 96 d B 37. Ceci est juste une couleur de sélectionné. Auparavant, si vous aviez entré, il sera difficile, donc il nous donne une belle couleur verte. Et cela est en fait sortir regardant un peu différent sur l'APP elle-même, parce que quand vous l'avez sélectionné, il rend un peu plus sombre. Et si vous avez sélectionné, cela devrait être la couleur. Il sort maintenant maintenant, nous allons montrer ce contrôleur de vue sur notre application, donc nous avons besoin d'un moyen de naviguer vers elle. Et cela signifie que quelque part dans notre contrôleur de vue principal, nous avons réellement besoin d'un contrôleur de knave. Donc, sélectionnons ce contrôle de vue principale et nous savons que c'est le 1er 1 parce que nous avons cette flèche qui nous dit que, et ce que nous faisons est d'aller à l'éditeur et de literie un contrôleur de navigation. Maintenant, on peut juste expédier ça, et maintenant on a assez de contrôleur. Donc, si nous passons de ce contrôleur à celui-ci, nous avons un contrôleur de navigation en arrière-plan qui fait le levage pour nous en termes navigation hors navigation. ce moment, nous pouvons revenir à nous-mêmes. Nous pouvons faire défiler et revenir à notre contrôleur de vue d'enregistrement Donc, évidemment, la première chose dont nous avons besoin est une sorte de zone de texte d'entrée. Donc il suffit de taper le texte et le champ de texte est créditable, donc nous allons faire glisser l'un de ceux dans. Nous allons donner à cela peut-être une largeur et n'hésitez pas à créer votre propre version de cette application. Vous n'avez pas forcément à copier exactement ce que je fais. Donc ça fait 140. Faites la hauteur 44. Et à ces contraintes, et puis je pense que je vais envoyer à ce horizontalement dans la connexion de conteneur. Rendez cela un peu plus large, je pense que vous donner l'utilisation de quelque chose de beau et grand à utiliser. C' est un 200 et les esprits nous font 54. Elle n'a pas encore changé la largeur, mais elle le fera. Et puis nous allons aligner miss verticalement dans le conteneur. D' accord. Je pense que c'est un peu trop haut, c'est ça. Alors, ramenons-le à 40. Ok, je vais juste changer ça un peu. Voyons si je me souviens si c'est moins 100. Oui, c'est le cas. Ok, donc nous avons notre champ de texte, et ça va contenir l'adresse e-mail, mais nous avons besoin que notre utilisateur le sache pour qu'on puisse simplement sélectionner le champ de texte. Passez aux attributs, inspecteur. Défilons vers le bas et voyons si nous pouvons mettre une sorte d'espace réservé. Là, nous l'avons. Texte de l'espace réservé. Donc, nous allons faire entrer l'adresse e-mail dans leur. Il nous faut une autre boîte pour les mots de passe. Alors frappons commande vu sur cette boîte Commande V et collez-le parfait. Nous pouvons changer notre espace réservé en mot de passe, et nous y consentons les uns aux autres. Donc maintenez le contrôle, cliquez et faites glisser et nous allons centrer. Voyons voir, nous pourrions faire le bord d'attaque qui est bien et affaiblir. Centrer l'un à l'autre avec un espacement vertical, et cela devrait être tout centré. Donc, le centrage de ces éléments est en fait autour de cette boîte d'adresse e-mail. Si nous déplaçons la boîte d'adresse e-mail vers le bas, alors vous pouvez clairement voir que tout le reste va aussi être déroulé vers le bas. L' adresse e-mail et le mot de passe allaient étayer cet e-mail. Enlevez ces trois points. Je ne pense pas que ça ait l'air si génial. Ok, donc nous avons trié cela maintenant avec cette zone de saisie de texte pour l'adresse e-mail, faisons défiler nos propriétés et passons à l'heure du contenu. Il est regarder voir si nous avons une adresse e-mail, et ce faisant, cela devrait nous donner un clavier qui correspond à une adresse e-mail afin qu'il donne la touche à ou met l'AKI à la portée de l'utilisateur. Puis sans Pa Sweat Box. Nous ne voulons pas vraiment que les gens voient ce qui se passe, donc notre type de contenu peut être un mot de passe. Maintenant, cela devrait réellement mettre des astérisques sur le mot de passe afin que les gens puissent facilement le voir quand il est tapé dans votre mot de passe d'adresse e-mail. Vous remarquerez également, avec ces deux options, la capitalisation est désactivée, ce que vous pouvez attendre pour un e-mail ou un mot de passe. Ok, maintenant avec le mot de passe. Oh, il y a encore une chose. En fait, vous devez sélectionner une entrée de texte sécurisée afin de mettre les astérisques dessus, ou les points ou n'importe quelle version d'IOS utilise des écritures. On a sorti deux boîtes. Maintenant, nous avons besoin d'un bouton, évidemment, pour se connecter, alors allons en trouver un, mais en cliquant et faites-le glisser dessus. Changeons ce style de bouton parce que nous en avons besoin pour correspondre à notre représentant. Je vais choisir une couleur blanche pour ça, et je vais monter à l'avant. Vous pouvez mettre un front personnalisé, si vous le souhaitez. Je vais juste augmenter cette taille double clic et appelons cette connexion. Ensuite, donnons à ce bouton une largeur et une hauteur. Maintenant, la hauteur devrait techniquement être de 44 au minimum, parce que c'est ce que je nous ou Apple préférerais que les choses soient. Donc, je fais 44. C' est une bonne idée. Contrôle. Cliquez et faites glisser mettre un peu d'espacement vertical et nous pouvons également envoyer à cela horizontalement. Donc, tout se fente joliment. On a notre bouton de verrouillage. On peut copier ça. On peut le coller. Nous pouvons double-cliquer dessus, nous pouvons frapper registre. Et nous pouvons également copier cela, le coller ou tout simplement coller à nouveau. Et c'est pour mot de passe oublié. Désolé pour ça. C' était très drôle. Mot de passe oublié et entrez et le mot de passe oublié un. Je vais le rendre un peu plus petit dans le département. Et peut-être que les minuscules pourraient être d'accord. Donc, nous avons nos trois boutons oublié mot de passe. Ce que nous pouvons faire, c'est les aligner les uns sur les autres. Donc, nous allons aligner les verticalement. Laissons-le au milieu et oublions le mot de passe. Quelque part ici au cas où. Oui, nous voulons le rendre distinct et séparé pour pouvoir contrôler l'espacement vertical et son habituel horizontalement. Donc c'est vraiment à vous de décider comment vous espacez ces choses. Changeons ça avec 1 50. Non, j'ai oublié mon épée. 1 90 mot de passe oublié. Parfait. Ok, donc c'est à peu près notre écran de connexion trié. Maintenant, nous pouvons réellement mettre une étiquette sur le dessus, donc faisons ça pour donner un peu de sensation sur la sensation que j'ai besoin de lui donner une sorte de logo. Vous pouvez déposer une vue d'image ici si vous le souhaitez. C' est tout à fait à vous de décider. Linus va changer la couleur de l'orteil blanc et je vais sélectionner un fonds personnalisé . Voyons ce qu'on a ici. C' est quoi ce G de pro ? Pas de Damas Et nous voulons bien, idéalement, je pense que je veux quelque chose qui est que je donne aux vieux livres italiques. Ce n'est pas dommage que nous puissions augmenter cette taille. Bien sûr. Voyez à quoi ressemble 60. Ouais, ça a l'air sympa. Bien sûr vérifié. Bien sûr que c'est à vous de décider. Tout ce que vous voulez utiliser cas que nous pouvons envoyer à cela comme d'habitude horizontalement, et je vais envoyer à cet espacement vertical, aussi. Donc nous avons notre spectacle, Chet. Peut-être devrions-nous nous donner une largeur pour nous assurer qu'elle ne soit pas coupée à aucun moment . Donc jusqu'à 50, je pense qu'on va le faire. Ok, c'est un joli, soigné, simple écran de connexion. C' est évident ce qu'il fait maintenant. Nous avons besoin d'une classe de contrôleur de vue pour cette longue dans l'écran, alors nous allons cliquer. Ajouter un nouveau fichier, Allez à la classe cacao Touch et recherchez pour vous. Je vois le contrôleur, et il devrait être rempli pour vous et ce qu'on va froidir dentelle. Nous pouvons appeler ceci en fait oule contrôleur de vue pour abrégé pour l'authentification parce que journalisation ou l'enregistrement, il fait les deux. Nous ne voulons pas écrire les deux parce que c'est beaucoup à écrire, alors créons cela en tant que contrôleur hors vue. Revenons à notre tableau principal. C' est sélectionner notre contrôleur de vue. Et appliquons ça dans la classe là-bas. Nous avons un contrôleur hors vue, et ce que je vais faire, en fait, c'est que je vais changer ce contrôleur de vue de connexion en contrôleur de vue Ortho, pas contrôleur de bordure hors vue. On y va. Donc juste une légère modification là pour que tout soit aligné correctement, non ? Donc on a ça. Commençons par laisser ouvrir notre éditeur assistant, icône en haut à droite et qui arrêtent de glisser des choses. C' est un festival où nous avons notre boîte d'adresse e-mail sur ce champ est connu comme un champ de texte U I, donc nous devrions appeler ce champ de texte e-mail Donc nous savons quel genre de chose il dit sans pastorat. Lecture de passe, champ de texte. Et puis nous voulons nos boutons de journalisation et d'enregistrement. Alors laissons tomber ça quelque part ici. Oups. C' est une puanteur. Commandes qui contrôlent le clic et le glissement. Nous allons avoir en action des clics dans le journal. Nous allons avoir la même chose pour enregistrer comme un registre d'action, clinked et enfin oublié mot de passe collecter oublié passé à collectionner comme une action et se connecter droit de sorte que nous avons toutes les connexions dont nous avons besoin pour tous nos éléments de texte. Donc, quoi qu'il se passe à l'écran, nous pouvons réellement faire quelque chose avec notre connexion slash registre mot de passe oublié. Alors nous allons fermer. Assistant éditeur sur DWI devrait être bon pour aller. La façon dont nous testons c'est en allant au produit a échoué. Et si tout se connecte bien, nous sommes à plus de 50% sur le chemin. Accident. Maintenant, j'ai dit que j'allais faire du code dans cette conférence particulière, mais je pense que nous allons le laisser au design et passer au code dans la prochaine conférence. 99. M12 5 Inscription de Firebase et de code de connexion pour la connexion à la carte de: Maintenant que nous avons créé notre écran d'enregistrement et de journalisation de la base incendie, nous pouvons réellement attaquer le code de connexion. Maintenant, ce sera votre code utile si vous utilisez firebase à l'avenir, parce que évidemment vous allez avoir un modèle que vous pouvez juste plus ou moins copier et coller dans n'importe quel autre APS où vous en avez besoin. Alors allons-y et voyons comment le verrouiller est fait. Maintenant, comme nous n'avons pas encore construit de système d'enregistrement, ça arrive. Ce que nous avons réellement besoin de faire est de nous diriger vers notre console de cinq jours, d'authentification par clic pour notre chat d'église APP, et nous devons ajouter un utilisateur ici. Il suffit de cliquer. Ajouter l'utilisateur à n'importe quel ancien e-mail comme test à venir et tout ancien mot de passe. Je vais juste utiliser le mot de passe classique Andi Cliquez sur Ajouter un utilisateur. Maintenant, il vaut la peine de noter que vous contactez. Modifiez le mot de passe dans cette interface sans cliquer sur Réinitialiser le mot de passe, et il enverra un mot de passe e-mail de réinitialisation à cette adresse e-mail particulière. Donc, si vous voulez faire cela, assurez-vous que vous possédez réellement cette adresse. Mais de toute façon, nous comment nous avons maintenant un utilisateur temporaire ou un utilisateur permanent mis en place pour notre. Donc si on retourne à l'ex Croat et que je me laisse remettre ces barres latérales, allons-y vers notre ou le contrôleur de vue Swift et c'est à l'intérieur d'ici, évidemment qu'on va essayer de s'enfermer maintenant. La première chose dont nous avons besoin quand nous fermons, c'est d'avoir les importations correctes pour notre base de pompiers et l'une de ces importations ressemble à, Eh bien, ces importations sont en fait une coupure de base de feu. Et si vous vous souvenez, si nous ouvrons le Finder et nous ouvrons le fichier Arpad Et bien sûr, pour ce faire, nous devons fermer le code X, juste pour être sûr. Alors ouvrez, le fichier Arpad avec le code X lui-même. Si vous vous souvenez dans notre fichier de pot, nous n'avions pas réellement inclus de dents ou de la carte. Nous avons le noyau et la base de données. Donc, ce que nous devons faire est d'avoir une seule citation, Firebase fraîche. Mais toutes ces choses sont disponibles en tant que documentation dans la documentation Firebase. Il vous dira quoi faire. Donc maintenant, nous pouvons dire que nous pouvons quitter le code X. On peut ouvrir un terminal. Nous pouvons voir ne pas manger dans notre projet comme nous l'avons fait avant d'entrer et de participer à Stoke. Et ça devrait aller chercher notre base de pompiers ou pour nous. Alors on y va. Il est en train d'installer notre Firebase. D' accord ? Nous pouvons nettoyer le terminal et ouvrir notre espace de travail à nouveau. Il est donc très facile d'utiliser des pièces de cacao pour installer les choses comme nous en avons besoin, directement dans notre vue Ortho Controller Don't Swift. Allons avoir une variable de niveau de classe quelque part près du sommet et nous allons appeler ça de verrouillage. Et ça va être un booléen. Donc on va dire vrai pour commencer. Ok, dis ça. Et cela va garder une trace de savoir si nous nous connectons ou non. Nous verrons exactement comment il garde une trace de ça dans un peu. Ok, Maintenant, nous avons besoin d'une fonction de connexion Firebase quelque part. Alors revenons au fond. On peut en fait enlever. Cela a bien reçu. Nous pouvons en fait déplacer les bits de navigation juste pour tout rendre un peu Tidier. Pourquoi ne pas taper notre propre fonction ? Cette fonction va être verrouillée ou nous pourrions le manchon comme connectez-vous réellement ouvrir les crochets fermées ouvrir et fermer nos accolades. Droit. Donc, la première chose que nous allons faire quand nous nous connectons, c'est que nous allons nous assurer qu'il y a effectivement une adresse e-mail qui est entrée, et nous allons nous assurer qu'il y a un mot de passe qui est supérieur à X nombre de caractères. Donc on peut avoir si et on peut l'avoir. Snow étiquette son champ de texte e-mail, champ de texte ne texte pas. Et c'est facultatif. Donc le point d'interrogation ne le fait pas et nous voulons le numéro éteint. Les personnages ne comptent pas. Cela renvoie le nombre de caractères. Et si c'est le cas, disons moins de cinq, alors les pièces ouvertes sont des accolades. On peut faire quelque chose. Comme la guerre maintenant, utilisateur. Ok, avec quoi on a un problème ici ? Oh, je pense que ça compte. Oui. On doit le dire comme ça. Ok, parce que nous le déballons, mais nous savons que cela existe réellement sur le texte qu'il contient devrait exister. Eh bien, nous verrons si ça se bloque. Ok, donc nous avons tout ça maintenant, si c'est moins de cinq, nous voulons dire à l'utilisateur que ce qu'ils font est mal. Alors quoi ? Nous pouvons réellement faire est de changer la couleur d'arrière-plan hors du champ de texte de l'e-mail. Donc, la couleur de fond de point est égale à vous. La couleur des yeux n'est pas ou nous pouvons réellement définir une couleur u I que nous pouvons choisir l'un de ces éléments, peut-être un rouge vert bleu. C' est celui sans inondations de CG. Et nous pouvons aussi lui donner une Alfa. Donc, ce que nous voulons faire est de faire ce genre sur une couleur rouge afin que nous ayons un nombre élevé pour Red Weaken tapé vert. On peut avoir un nombre inférieur. Un tel 0,1. Je ne suis pas sûr que ça va ressembler à 0,1, et on peut le faire voir presque à 0,2. Donc ça va être rouge. Vous pouvez l'ajuster au goût si vous le souhaitez. Alors, si c'est le cas, nous reviendrons. Donc ça va sortir de toute cette fonction. Si ce n'est pas correct, si c'est trop court, nous l'avons vérifié maintenant, s'ils le changent à l'avenir, nous devons changer cette couleur. Donc ce que je vais mettre ici est un autre, et je vais juste copier cette couleur de fond et je vais la réinitialiser à sa couleur des yeux ne blanc pas, et ça devrait le remettre là où il doit être correct. Donc nous tomberons ici maintenant nous devons vérifier les champs de mot de passe. Donc, si le champ de texte du mot de passe ne contient pas de réservoirs et encore une fois nous allons compter les caractères pour celui-ci. Et si c'est moins de cinq, nous allons faire quelque chose à ce sujet. Encore une fois, déballons ça. Et qu'est-ce qu'on va faire ? Ce que nous allons faire quelque chose de semblable à tout le reste. Donc, nous pouvons en fait peut-être nous avons balayé le comte point Yadi yada. J' ai mis mon support au mauvais endroit. Excusez-moi ? David a donné. C' est moins de cinq, non ? Alors, qu'est-ce qu'on va faire ? Eh bien, nous allons juste copier cette ligne de texte e-mail où nous la modifions pour la lire. Nous allons le changer dans le champ de texte du mot passé. Donc ça changera ça pour lire. Au lieu de cela, allons supprimer cette exclamation et puis nous n'aurons pas d'autre pour ce cas est, Eh bien, mot de passe, texte, champ, couleur d' arrière-plan. C' est le cas ? Ça devrait régler tout ce que nous devons faire en ce sens, non ? En supposant que nous puissions passer par là, nous pouvons réellement appeler la fonction de connexion. Donc, prenons le mail let est égal au texte du point de champ de texte de l'e-mail, et c'est un optionnel, mais nous pouvons effectivement sur l'envelopper. Laissez notre mot de passe laisser égal aux champs de texte de mot de passe point texte déballer. Maintenant, nous pouvons commencer l'autorisation de la base de pompiers. Alors quoi ? Nous devons importer le festival bien en avant. C' est l'importation sur la base de feu de type juste, et il devrait être évident que nous avons besoin de firebase off pour cela. Maintenant, faisons défiler vers le bas et commençons à regarder dans le quatrième point Orth et Auth vient de cette base de feu off. Donc, c'est la classe, et cela va être l'instance de celui-ci, puis point et tapez simplement signe, et cela vous donne tout un tas d'options pour vous connecter, vous déconnecter etc. Donc, parce qu'ils sont liés aux informations d'identification pour l'autorisation maintenant, si vous avez quoi si vous voulez faire Google ou Thor Facebook off, il y a des étapes légèrement différentes que vous devrez aller à la documentation pour comprendre cela. Mais dans notre cas, nous voulons simplement nous connecter avec e-mail parce que c'est ce que nous avons. Donc, tout d'abord notre email est cet email que nous avons créé. Le pastorat est le rouge passé que nous avons pris dans le champ de texte, et à la fin, nous pouvons évidemment faire quelque chose avec ça. Donc, à la fin, il retourne sur l'utilisateur optionnel une ère optionnelle, puis exécute du code, donc affaiblir. Appelez cet utilisateur simple, et l'ère est juste une nera. Maintenant, dans le code, nous pouvons vérifier ces éléments pour voir si notre Sinan Waas a réussi. Donc, si ce n'était pas le cas, alors nous allons avoir une erreur renvoyée. Donc, si l'erreur let est égale à l'ère et tout ce qui fait est de vérifier. Si quelque chose existe dans cette ère optionnelle et que Teoh le rend moins confus, on peut l'appeler E R R. Que pouvons-nous faire ? Eh bien, pour l'instant, nous allons juste l'imprimer ce qui est imprimé à nous-mêmes, quelque chose en dehors de l'époque. Et puis nous pouvons nous donner une description localisée point d'erreur. Andi va rendre cela plus évident pour nous Aris qui nous connecte. Il y a donc une erreur. En tant que développeurs, nous le savons , et évidemment , si vous êtes ici, vous ne voulez pas essayer autre chose que vous allez simplement revenir. D' accord ? excellent. Sinon, si cela fonctionne, nous pouvons simplement imprimer des fouets signés. Non à signé signé. Et nous pouvons ajouter notre utilisateur. Maintenant, c'est facultatif. Donc point d'interrogation et nous pouvons avoir un nom d'affichage et le nom d'affichage de l'e-mail. Je ne suis pas sûr de ce que cela sortira car il pourrait effectivement sortir comme l'e-mail. Si vous ne l'avez pas vraiment défini, nous allons juste mettre des e-mails. Donc, cela nous montrera que nous avons réellement retourné à l'article correct. Alors envoyez un e-mail et corrigeons simplement cela. Donc, il a besoin de tout déballer. Maintenant, il y a un potentiel pour une zone ici, donc je serais prudent avec ça, mais pour l'instant, on y va. Mais pour l'instant, nous allons laisser ça tel quel. Et si nous nous écrasons bien, je suis presque sûr que nous savons tous que c'est quelque chose à voir avec ça. OK, donc c'est notre écran de connexion, n'est-ce pas ? Mais on n'a pas encore de moyen de le montrer. Donc, à l'intérieur de nos contrôleurs de vue principaux, c'est celui qui se charge de vous contrôler l'économie de point. Quand nous démarrons, nous pouvons réellement importer la base de feu sur. Nous pouvons également importer firebase off. Vous remarquerez qu'il y a une grève dessus. Et c'est parce qu'il est probablement importé en tant que partie de cette base de pompiers. Vous pouvez importer bit par bit ou la totalité d'entre eux. Mais ce que nous allons faire est juste d'importer firebase off, garder notre application agréable et se pencher dans cette partie. Maintenant, tu sais, euh, View s'est chargé. Nous pouvons vérifier si un utilisateur est déjà connecté, car évidemment nous ne voulons pas afficher l'écran de connexion s'il n'est pas connecté. Donc, nous allons avoir une fonction pour vérifier l'utilisation actuelle de quelque chose comme ça ouvrir et fermer nos accolades Maintenant à l'intérieur d'ici. Nous allons dire si notre ou le point ou le ne font pas et nous pouvons demander l'utilisateur actuel Si cela est égal à Neil, voyons si cela fonctionne parce que cinq base a un peu changé. Alors on peut faire quelque chose à ce sujet. Et qu'allons-nous faire ? Eh bien, nous allons présenter à notre utilisateur ce verrou en vue. Contrôleur, Laissez le contrôleur de vue égal à maintenant. Comment obtenir le contrôleur de vue de notre planche principale ? Si vous vous souvenez que c'est celui-ci et il a ce que je d. Eh bien, c'est en fait assez facile pour revenir à vous le contrôler Laisse-moi voir égal aux points de moi et nous pouvons réellement tirer le storyboard sur lequel nous sommes actuellement assis et une fois que nous avons cela, nous pouvons essayer d'inst Et elle a mangé un contrôleur de vue avec un identifiant Et si vous êtes appelé c'est exactement ce que nous avons Donc c'est une chaîne et ce waas outhe ont vous contrôleur et c'est toujours une bonne idée de vérifier que parce que c'est un endroit où votre application pourrait réellement planter si vous vous trompez. Ok, donc on a notre adorable contrôleur de vue. Tout ce que nous avons maintenant à faire est le contrôleur de navigation auto-point, et ce contrôleur de navigation est celui que nous avons intégré dans notre Donc cette section ici. Donc, nous travaillons actuellement dans cette classe de contrôleurs de vue et quand nous disons que le contrôleur auto-point maintenant était en train de tirer vers le haut ce contrôleur maintenant et nous mettons ce contrôleur de vue sur le dessus comme une pile. Donc c'est garder une trace de tout ce qu'on fait. Si vous contrôlez lui-même point maintenant contrôleur et c'est tout à fait un point d'interrogation car il est facultatif. Ne le faites pas et nous allons vous présenter quelques manettes. Donc, ce sera cette option ici parce que vous devez lui donner une sauvegarde que vous contrôlez pour présenter. C' est la redevance C Animée. Oui, s'il vous plaît. Et à la fin, on ne veut rien faire. Donc on peut juste faire en sorte que Neil soit prêt pour ça. Donc, vous pouvez dire cela et puis nous pouvons avoir vérifier l'utilisateur actuel déclenché, à notre avis, a chargé Donc, nous pouvons dire que. Et cela va superposer notre contrôleur de vue de connexion. Droit ? Excellent. Essayons ça sur notre iPhone S e droite. C' est un excellent moyen de programmer cela. C' est réactif. Il vérifie si nous sommes connectés. Et j'ai fait une erreur stupide de savoir ce que c'est. Il l'est. Les quelques manettes sont facultatives. Donc, ce que nous pouvons faire ici est de dire, si le contrôleur de vue est ceci, alors nous pouvons charger cela maintenant. Contrôleur. Monsieur, permettez-moi de confirmer que pour que vous les retiriez sur les sites, vous pouvez voir les lignes simples, n'est-ce pas ? Donc, ce que j'ai fait ici dire si nous pouvons obtenir un contrôleur de vue hors de cela, alors essayez de le charger correctement. Alors remettez ces côtés et chargeons-le dans notre iPhone. Oui, j'aime bien. Je disais, C'est un excellent outil de conception pour vous de vérifier quelque chose et ensuite déclencher quelque chose sans l'utilisateur appuie sur des boutons, comme se connecter ou déjà connecté ou quelque chose. Donc, nous avons notre contrôleur de navigation brillant qui montre notre écran, et vous remarquerez qu'il n'y a pas de retour ou quoi que ce soit ici. Ce qui est génial parce que vous n'avez pas l'utilisateur de sortir d'ici à moins qu'ils ne se verrouillent ou s'inscrivent. Maintenant, remarquez. Si je clique sur verrouiller. Rien ne se passe. Si je vais à l'adresse e-mail et cliquez sur notre cliquez sur Connectez-vous. Rien ne se passe, et plus gênant, lorsque je clique sur l'arrière-plan. Ce clavier ne disparaît pas, même si je clique sur retour. Mais les fonctions de mot de passe grande connexion actuelle. Toujours revenir. Rien ne se passe, non ? Revenons ici et arrêtons ça de courir. Réparons ce petit problème de clavier où nous ne pouvons pas appuyer en dehors de celui-ci et rejeter le clavier. Tout d'abord, maintenant, la façon dont cela fonctionne est d'abord, nous devons créer ce qu'on appelle un geste de robinet. Reconnaître er, sorte que notre application peut reconnaître quand nous tapons quelque part sur l'écran. Ce n'est pas une de ces vues. Donc en haut, sur notre fait, nous voulons le faire évidemment dans ou peu contrôleur. Donc, en haut, nous allons dire laisser pourboire et ce robinet va être hors type vous. J' appuie sur geste. Reconnaître er est égal à un nouveau U I tap. Juste vous la reconnaissez et cela va vous avoir une cible et, bien sûr, une action. Alors, quelle est la cible ? Eh bien, lui-même est le contrôleur de vue actuel dans lequel nous sommes et l'action elle-même. Qu' est-ce que tu fais ? Ce sélecteur d'auto Maintenant, l'action est la méthode ou la chose que nous allons réellement tirer . Donc, la façon dont nous pouvons spécifier ceci est en tapant le sélecteur de hachage sur expert pourrait me corriger légèrement sur cela parce que je crois que cela a changé l'ouverture de nos accolades et ensuite nous spécifions ce contrôleur de vue actuel. Donc Ortho vue contrôleur fléchettes rejeter le clavier, et nous n'avons pas encore créé le clavier de rejet, Mais nous allons, comme une fonction d'accord, dit que je savais qu'il y aurait un léger Erin, c'est cliquer dessus. Pas de dismiss clavier. Ça arrive. Ne vous inquiétez pas. D' accord ? Ce que je vais faire, en fait, c'est me laisser penser à ça. Je vais couper ça et je vais coller ça dans la vue. chargé comme la première chose que nous faisons parce qu'il y a un peu de code de plus que nous devons ajouter à cela. Et c'est d'ajouter ce geste à notre vue actuelle, vous sauver et vous pouvez taper doute de soi, vue ou juste vue sur cette vue est la vue d'arrière-plan que nous pouvons voir dans notre storyboard principal . Donc cet article Donc une fois que vous avez obtenu cela, nous pouvons vous sauver des quais, ajouter un geste , reconnaître er, et nous pouvons le nourrir juste pour reconnaître un type que nous venons de créer. Maintenant, nous allons créer cette fonction de clavier de rejet, funk, rejeter le tableau, et alors c'est vraiment simple à faire. On vous sauve le point et le montage et on va le forcer. Trigg. Donc, nous disons fin à tout le montage, qui va laisser tomber le clavier pour nous. Je vais dire que je vais le faire dans la sim. Et maintenant, quand nous tapons dehors de la même chose, nous devrions tous être triés et le clavier devrait effectivement disparaître pour nous finalement. Ma construction a échoué. Je savais que je le savais vite. Petite icône. Argument off sélecteur fait référence à l'instance Method rejeter clavier qui n'est pas exposé à objectif C. Je vais cliquer sur correctif, mais je ne suis pas sûr que cela va faire ce dont nous avons besoin. Ok, donc ce que je fais ici, c'est que j'utilise la terminologie objective C pour déclencher ça, donc ne t'inquiète pas pour ça. Pour l'instant, c'est quelque chose que vous aurez rarement à faire à part lorsque vous avez une application plus complexe . Mais à mesure que nous devenons plus mûrs avec Swift, vous n'aurez pas à vous en soucier. Droit. Donc je vais cliquer sur mon adresse e-mail, taper quelque chose quelque part en dehors de lui, et le clavier disparaît. Même si le mot de passe passe passe à l'extérieur, il disparaît. Cela fonctionne-t-il si nous cliquons sur un bouton ? Non, ça ne le fait pas. Donc, dans ce cas, le bouton attrape le robinet. Mais pas à la vue. Cliquez sur la vue ou l'étiquette ou autre chose. Et le clavier. Il s'en va. Ok, donc on a réglé ce petit problème là-bas. Maintenant, nous devons faire est de se connecter lorsque nous cliquons sur connexion clics. Donc tout ce qu'on a à faire est de taper assez simple. Maintenant, allons frapper le jeu et nous allons utiliser notre journal de test dans l'adresse e-mail, adresse, plutôt régler chargé. Allons avec le test aux tests dot com. Tapons notre mot de passe et cliquez sur Connectez-vous et rien ne se passe. Rien n'est rejeté. C' est très bien. On est toujours en train de tester, mais vous remarquerez ici. Nous obtenons cette impression qui dit qu'ils ont été signés comme test et qui vient de cette ligne. Maintenant, si nous arrêtons de courir et que nous recommençons, puis nous retournons à notre carte SIM. En théorie, notre application devrait garder ce jeton de connexion à partir de Fire Base, et elle dira que nous sommes déjà connectés, et il ne va donc pas apparaître cet écran. Alors, voilà. Ça ne fait rien pour nous enfermer. C' est très bien. Notre logique dans notre code en vue. Controller dot swift on check L'utilisateur actuel fonctionne réellement, donc il vient à cette ligne. Nous avons un utilisateur actuel, donc il nous garde déconnecté ou connecté plutôt et ne nous montre pas vraiment là ou peu contrôleur, ce qui est parfait. C' est ce qu'on veut maintenant. Je ne suis pas sûr de firebase, mais je crois qu'il y a un temps d'arrêt ou f vie utile hors des jetons de connexion off. Je ne sais pas ce que c'est, mais appelons-le sept jours pour l'amour de la dispute. Après sept jours, votre application peut se déconnecter de votre utilisateur et devra se connecter à nouveau. Ou les jetons pourraient être un temps infini, et je ne suis pas sûr que vous puissiez changer ça, mais c'est quelque chose pour vous d'être conscient, non ? Donc, chaque fois que Gap se ferme, l'utilisateur ne se fait pas virer en termes d'inscription ou de connexion ou simplement le verrouiller en ce moment pendant que nous testons, ce que nous aimerions faire est d'avoir une fonction de test qui nous déconnecte à chaque fois. Donc, fonction, regarde dehors. Et le but d'avoir ceci est que pendant que nous construisons, connectons et nous enregistrons, nous ne voulons pas avoir à révoquer le jeton de connexion, plus dans notre tableau de bord Firebase, nous voulons juste que cela se produise automatiquement dans l'application afin que nous puissions continuer à le tester. Une fois que nous avons dépassé cette partie, alors nous pouvons supprimer la fonction de verrouillage, donc j'appellerais normalement ce test de regard pour me rappeler de supprimer cela plus tard. D' accord, donc tout d'abord, on va signer notre si maîtresse comme une autre façon de faire ça. Laisser f ou tirer sur la base, égal à off. Donc, je veux que vous voyez que vous pouvez réellement avoir ceci comme ses propres objets séparés, si c'est la façon dont vous voulez un code totalement à vous. Maintenant, ce qu'on va essayer de faire, c'est de déconnecter. Mais lorsque vous vous déconnectez, il peut y avoir une erreur car vous ne savez peut-être pas qu'il n'est pas connecté. Donc on va attraper cette flèche, va utiliser ce qu'on appelle une déclaration de capture. On va faire quelque chose, et ensuite on va attraper les erreurs qui sortent, et ça va être appelé comme tu veux les appeler. Alors laissez déconnecter l'ère, et c'est un type hors de l'ère Ennis. Ok, donc tout ce que ça fait, c'est essayer ce qui va être ici ? Et s'il y a une ère, ça va venir ici et nous donner une ère, et nous sommes juste en train de saisir l'ère et nous disions que ça va être un genre hors de l'ère Ennis. Ok, c'est juste une sorte de syntaxe standard pour ce bit. Donc à l'intérieur. Doit-on dire à notre système qu'il pourrait s'agir d'une erreur ? Donc on va dire, on veut que tu essaies quelque chose, Trump moi, dégage notre base de pompiers maintenant je crois que Firebase éteint. Est-ce facultatif ? Non, ce n'est pas le cas. Ne vous déconnectez pas et regardez ça. Il y a un lancer, mot clé là et lancer va de pair avec essayer et ce qu'il fait. Il essaie de le faire. Et si ça jette une ère, alors cette section attrape cette époque pour que vous puissiez voir ce qu'ils ont fait avec la langue nomme leur Vous jetez quelque chose, vous l'attrapez bien ? Donc, quand cela génère une erreur, ce bit va attraper cette erreur particulière. Donc, ce serait pratique si nous pouvions imprimer ça à nous-mêmes. Un rat se déconnecte. Et puis nous allons nous donner cette ère de signe. Droit ? Donc ça devrait imprimer un noir. Avons-nous une chaîne de description localisée ? On y va. Cela nous donnerait ça maintenant. Évidemment, nous voulons nous déconnecter avant de vérifier l'utilisateur, donc déconnecter test. Sauvegardez-le et exécutons-le. Passons à notre application. Et maintenant, il devrait nous verrouiller afin qu'il affiche l'écran d'inscription à chaque fois. Juste pendant qu'on y travaille. On y va. Donc nous sommes déconnectés. Les droits ont été verrouillés. Arrêtons de courir. Allons frapper jouer. Revenons à notre application. Donc, il est actuellement verrouillé. Voyons si jamais dans notre consul nous avons des erreurs liées à cette époque de déconnexion afin que vous puissiez réellement filtrer cette console, descendre à la boîte de filtre juste en bas et à l'ère serrée. Et non, nous n'avons pas d'erreurs. Ok, c'est bon. Dites arrêtez maintenant. n'y a pas d'erreurs, mais nous n'étions pas aimés, donc vous vous attendiez peut-être à ce coup de feu à cette époque. Mais ça n'a pas vraiment fait ça parce que, eh bien, qui sait ? C' est juste la façon dont Google des entraîneurs. Je sais qu'auparavant, ils auraient été une erreur, mais Google l'ont toujours codé défensivement pour lancer une erreur. Et vous pourriez vous demander, Pourquoi est-ce ? Eh bien, c'est parce que ça va sortir sur Internet, vrai ou en fait ce que ça fait ? Je crois que c'est juste supprimer un jeton sur l'appareil. Donc, je ne sais pas vraiment pourquoi vous devez vérifier une erreur ici. Je veux dire, si tu sais mieux que s'il te plaît faire bien dans la conférence, pose une question et dis-moi ce qui se passe. Mais je m'attends à ce que cinq jours changent ça à un moment donné. Bref, c'est par le brillant. Nous avons maintenant une connexion bien fonctionnant système a encore besoin de polissage, mais nous y arriverons à la fin. 100. M12 6 Enregistrement de et de code d'identification de données pour l'enregistrement d'un nouvel utilisateur: d' accord. Jusqu' à présent, nous avons un composant de connexion sur l'un de nos écrans, qui ressemble à quelque chose comme ça. Maintenant, vous avez peut-être remarqué que nous avons effectivement un beurre enregistré, et c'est pour un utilisateur qui n'a pas de compte pour s'inscrire dans notre APS. Ils fourniront une adresse e-mail et un mot de passe, et ce que nous allons examiner est le flotteur d'inscription pour cette application et comment nous enregistrons réellement un utilisateur en utilisant une adresse e-mail et un mot de passe via firebase. Donc, plutôt que de réinventer réellement la roue et d'avoir un écran d'inscription séparé, nous allons réutiliser l'adresse e-mail et le mot de passe. Mais au lieu de cela, quand ils, au lieu de cliquer sur l'utilisation de connexion, va réellement cliquer sur s'inscrire. Et quand ils le feront, nous allons lui donner un pop-up qui dit, S'il vous plaît confirmer votre mot de passe parce que c'est toujours une bonne idée. Lorsque vous enregistrez quelqu'un, assurez-vous qu'il a le bon mot de passe, et une fois qu'il a confirmé ce mot de passe, le mot de passe est correct, il sera enregistré. Alors allons jeter un oeil à la façon dont cela est fait. Maintenant, nous sommes dans notre ou le contrôleur de vue, et quand j'utilise opprime le bouton de clic enregistré, nous voulons réellement vérifier. Ils ont entré un e-mail et un mot de passe d'un compte de personnage supérieur à cinq. Il y a d'autres vérifications que vous pouvez faire, mais c'est juste la base que nous avons. Maintenant, nous l'avons déjà fait dans notre clic de connexion. Donc s'il obtient la fonction de connexion, nous avons tout ce dont nous avons besoin ici. Droit ? Donc, ce que nous devons faire, plutôt que de recréer tout ce code, c'est simplement couper ce code Commande X. Créons une fonction ici appelée quelque chose comme l'entrée de vérification, puis collez notre code dans. Ok, maintenant, en fait, on revient juste de tout ça. Et si nous appelons cette fonction, vérifiez l'entrée à l'intérieur de notre log in shakin mettre. Ça devrait marcher. Oui, ça va passer par cette fonction. Ça va aller ici, et ça va revenir. Et puis ça va continuer à passer par ici, ce qui n'est pas bon. Donc, nous avons réellement besoin d'un moyen de vérifier la sortie de cette fonction. Donc, ce que nous devrions faire à l'intérieur de la fonction elle-même est de retourner un booléen d' une sorte de là. Deux épées concordent. Donc, vérifiez l'entrée. Si c'est ça. Ensuite, nous allons retourner chercher des appartements. Faux. Excusez-moi. J' ai un nouveau clavier ici. Texas un peu de s'habituer. Ok, donc ça reviendra. Faux. Et puis aussi cette section ici. Nous pouvons également retourner faux vraiment contact aujourd'hui. Retour. Faux. Donc, si le mot de passe ou l'e-mail est incorrect, nous allons retourner faux. Et puis à venir ici, nous pouvons le vérifier en disant, si l'entrée de contrôle est fausse. Donc vous avez mis une exclamation avant lui. Ensuite, nous pouvons retourner ou donner un message à l'utilisateur, selon la façon dont nous l'enrobons. Super. Donc, en entrée de vérification. On y va. Si c'est faux, c'est faux, et ça revient autrement. Ça changera la couleur de l'orteil blanc. Donc, si c'est le cas, c'est bon. S' il ne passe pas par la vérification du champ de texte du mot de passe, il va dans le champ de texte du mot de passe, cochez ici et modifiez-le Toe white. C' est très bien. Donc, en supposant que tout le code tombe à travers tout, alors nous pouvons aller de l'avant et revenir. Vrai. Alors on y va. Notre ère s'est bien déroulée. Donc vous remarquez ce que j'ai fait là-bas plutôt que de retourner vrai ici, ce qui créerait un autre genre de cauchemar de code spaghetti. J' ai juste utilisé la logique et pensé à Si ça tombe où tout, tout doit être correct. C' est une technique de programmation pratique pour noter que, laissez votre code plein trois. Et si elle tombe à travers, vous pouvez supposer que c'est correct ou incorrect, selon la façon dont vous avez codé la chose. C' est donc une technique pratique pour faire une note. Vous prenez des notes, bien sûr. Tu ne l'es pas ? Droit ? Donc on a cette petite entrée de chèque et on peut copier ça. Vérifiez l'entrée ici et nous pouvons le mettre dans une nouvelle fonction appelée Register and Coller en haut ici. Donc maintenant, nous avons nos entrées de contrôle triées. Voyons si on peut mettre tout ça sur une seule ligne. Cela pourrait être très utile. Alors ramenons ça là-haut. Je pense que cela devrait être faisable. J' ai déjà vu des trucs comme ça. Oui, cela rend juste notre code un peu nita, et c'est assez évident ce que font ces fonctions, non ? Donc, nous avons notre fonction de registre prêt à faire Maintenant, nous avons besoin d'un peu de code pour montrer à l'utilisateur un pop-up afin qu'il puisse réellement confirmer son mot de passe pour se rappeler qu'il ne peut entrer qu'une seule fois le moment. Donc, pour ce faire, nous allons utiliser sur un permis qui, si vous vous souvenez, si vous vous souvenez, est un type de contrôleur et la façon dont nous au lieu de cela, elle en a mangé un est vantante en vous ? J' alerte contrôleur, et nous voulons juste un message de titre très simple et un style pour cela. Donc, le titre peut être tout ce que vous voulez inscrire et le message peut être heureux. Confirmez le mot de passe et le style peut être sur élection. Donc, vous presque Ceci est affiché mode tôt pour l'application. Cela signifie qu'il est affiché au-dessus de votre contrôleur de vue actuel comme son propre contrôleur de vue. ce moment, Ence moment, la beauté des alertes est que nous n'avons pas à simplement coller avec des boutons et des messages nous pouvons ajouter certains que vous Pourquoi des éléments à eux ? Donc, alerte commence et il suffit de taper une annonce. Vous verrez ce que vous pouvez faire à l'action dans le champ de texte à la commande clé. Ok, nous voulons un champ de texte, évidemment, et cela nous permettra d'entrer des lettres ou du texte ou quoi que ce soit. Donc, si nous appuyons simplement sur Entrée, il remplira tout ce dont nous avons besoin à la structure de codage, et nous donnons juste à ce champ de texte un nom et la raison pour laquelle nous l'avons passé ici afin que nous puissions y accéder à l'intérieur de ce bloc de code. D' accord. Notre week-end. Donnez à ce champ de texte un porte-emplacement. Le texte est égal à passer mouillé. Maintenant, vous remarquerez que c'est peut-être une question que vous avez. espace réservé est un optionnel, est-ce pas ? Donc, il pourrait ou ne pas contenir la force. Mais parce que nous signons une chaîne à elle, nous n'avons pas besoin d'avoir une vérification de l'option ou non parce que nous mettons réellement quelque chose à l'intérieur. Ok, donc une fois que nous avons besoin d'un bouton, qui est une action publicitaire, et cela nécessite une nouvelle action U. I. I. Alerte comme frapper, ouvrez vos crochets, frapper, entrer, et il vous dira tout ce dont vous avez besoin. Vous avez besoin d'un titre, évidemment, et cela va permettre à l'utilisateur d'annuler cet élément particulier. Le style sera par défaut, mais n'hésitez pas à expérimenter avec les styles. Et à la fin, on n'aura rien. Ou quand tu seras sur le bouton, rien ne se passera. Donc, c'est évidemment que le nom implique un bouton d'annulation. C' est que l'utilisation peut en sortir. Ensuite, nous avons besoin d'une autre action de rechute, qui, comme vous l'avez deviné, sera l'action qui confirme et enregistre réellement le mot de passe et l'utilisateur. Donc le titre va être OK. Le style est des fouets à points. Pas une chaîne, évidemment, mais les fléchettes par défaut et le gestionnaire lui-même. On a vraiment besoin d'un gestionnaire pour ça ? Oui, nous le faisons. Allons frapper, entrer et taper. L' action était quelque chose comme ça. Débarrassez-vous de ces code Astuce. Maintenant, nous avons besoin de la confirmation de mot de passe qui vient de ce champ de texte. Alors, comment pouvons-nous vraiment obtenir ça ? Eh bien, nous disons que nous allons passer, ce qui a confirmé est égal à l'alerte que nous sommes actuellement en point Maintenant, nous ne pouvons pas simplement accéder à ce champ de texte. Vous remarquerez que vous obtenez réellement sur l'option d'avoir des champs de texte, qui est un tableau hors champ de texte. Et cela signifie que nous devons en fait parcourir tous les champs de texte. Maintenant, nous savons qu'il n'y en a qu'une seule qui est ici. Ça va être à l'indice zéro. Tu te souviens ? Tout est que l'index zéro maintenant, les champs de texte, si je le tape à nouveau, sont facultatifs car ils pourraient ne pas être dans. Donc je vais forcer Rapid parce que je sais qu'il est définitivement là. Et nous allons prendre le 1er 1 dans ce tableau. Qu' est-ce que c'est ? Indice zéro. Je saurai si vous avez ajouté des champs de texte. Exactement. Voici où vous auriez un accident. Lorsque votre application est en cours d'exécution, l'utilisateur appuie sur ce beurre. Ok, donc, ouais, l'idée, quoi que tu dises et je vais juste vérifier parce que je sais dans l'ancienne version de ce code que tu devais lancer ça, mais je n'ai pas pense que nous le faisons maintenant. Et par coût, je veux dire, vous devez dire, comme un champ de texte u I, mais je ne pense pas que nous devions le faire maintenant. Nous le découvrirons bientôt. D' accord. L' étape suivante consiste à comparer ce mot croisé à celui que l'utilisateur a entré précédemment, n' est-ce pas ? Alors si les poss le feraient, qu'est-ce qu'on a ici ? Mot de passe, notes, mot de passe, confort. J' y ai mis une majuscule. C' est pour ça que je me confond les mots passés. Je ne sais pas pourquoi cela ne le montre pas, mais de toute façon, si le confort du mot de passe maintenant, vous pourriez penser que vous auriez des égaux mais il y a en fait une meilleure façon de le faire dans le texte. Dans un rapide Plutôt est trop merdique je voudrais texte point est égal. C' est donc égal. Ce n'est pas montrer, mais ce qui est égal à ce que le vieux pasteur Il est si moi. Le champ de texte Ne pas mot de passe ne contient pas de texte. Et c'est une option aussi. Donc on va déballer ça. Donc, si ces choses sont égales, alors on peut faire quelque chose que l'on évite tout ça. Le site est que vous pouvez voir et nous allons vérifier deux fois. On y va. Tout est parti. Donc, si ce mot de passe confirmé est égal au passé, ce que nous avons déjà, alors nous sommes prêts à partir. C' est juste mettre une inscription commune ici commence ou quelque chose comme ça. Donc tu sais ce qui se passe maintenant ? Nous pouvons saisir l'e-mail et le mot de passe lui-même. Et comment pouvons-nous faire ça ? Nous ne pouvons pas simplement copier cette ligne de verrouiller ces deux lignes. Et bien sûr, nous aurions pu avoir cela juste au début de la fonction de registre après l' entrée de vérification totalement à vous où vous voulez les mettre. Nous avons nos articles. Maintenant, tout ce que nous avons à faire est d'obtenir notre autorisation auf instance. Et puis, comme vous pouvez le deviner, commencez à taper. Oh, pas vous inscrire. Ce serait un mauvais invité. Innoyant, ce n'est pas de s'inscrire, mais plutôt de créer un utilisateur avec un mot de passe e-mail, puis un rappel. Alors, quel est l'email ? Eh bien, c'est l'e-mail qu'on vient de tirer en haut, qui a actuellement une ère. C' est parce que ça nécessite la même chose ici, juste pour confirmer pour vous les gars. Cela nécessite de soi, car pour le moment cette action publicitaire se produit dans son propre gestionnaire. Nous devons donc nous référer explicitement à cette classe en utilisant soi-même, donc c'est un processus un peu compliqué. Mais hé, et puis tout est possible. J' avais facilité le mot de passe de la chaîne, et à la fin, nous pouvons réellement faire quelque chose afin que nous puissions dire à notre utilisateur s'il y avait une erreur. Donc, si nous double-cliquez sur ce rappel, c'est le même code que vous reconnaissez probablement de Logan, donc vous aurez un objet utilisateur passé, et vous aurez un objet d'erreur passé et les deux sont facultatifs, non ? Et parce qu'ils sont facultatifs, nous allons les vérifier. Si Era qui l'air est égal à l'ère, alors qu'est-ce qu'on va faire ? Eh bien, nous pourrions montrer à l'utilisateur et une année de location. Mais pour l'instant, nous allons juste revenir. Je vais vous laisser faire le permis dans la section des devoirs. Sinon, s'il n'y a pas d'époque et nous avons un utilisateur que nous pouvons imprimer à nous-mêmes, que développer est quelque chose comme un nouvel utilisateur et nous pouvons avoir utilisateur, mais nous devrions probablement vérifier si nous allons IG Let dit que vous aviez un nouveau clavier. Si l'utilisateur de tapis est égal à l'utilisateur, alors nous pouvons imprimer l'e-mail de l'utilisateur, par exemple, comme nous l'avons fait avec le verrouillage, si vous vous souvenez. Ok, donc on a tout ça en cours d'exécution, on aurait froid, et on doit déballer cet e-mail. D' accord. Maintenant, qu'est-ce qu'on a à faire d'autre ici ? Je pense juste à ça. On est sortis. Rappelle notre arrêt. On va tomber à travers. On va vérifier l'utilisateur. L' époque. Je pense que ce que nous allons faire ici si nous obtenons ceci si nous l'obtenons réellement, utilisateur, alors ce que nous pouvons faire ici, c'est que nous pouvons maintenant rejeter ce contrôleur de vue comme dans le contrôleur de vue de connexion . Alors, qu'est-ce que je veux dire par là ? Eh bien, je veux dire, dans notre à ce est chargé vers le haut. Nous venons d'enregistrer un utilisateur. Alors, quelle est l'étape logique dans le Nord ? Peu de contrôleurs. Eh bien, c'est pour le rejeter parce qu'on n'en a plus besoin. Donc affaiblir les points de soi rejettent, et nous pouvons animer cela. Et à la fin, nous n'avons pas besoin de faire quoi que ce soit. Donc, ce que cela va faire est de prendre quelques contrôleurs, le ou quelques contrôleurs hors du haut de la pile et de le jeter et de nous ramener à la vue d'origine. Droits du contrôleur. C' est comme ça que l'alerte a fait. Il se passe beaucoup de choses dans l'action, n' est-ce pas ? Et nous avons une autre chose que nous devons faire, et qui est en fait montrer le A laisser si point auto présent et se rappeler, dans les allégations un peu contrôleur, donc un latte animé et à la fin Non, qui Ok, sur. Nous avons un léger avertissement ici, alors nous allons imprimer quelque chose à nous-mêmes. Nous allons avoir riche échoué plus description localisée point de l'ère. Ok, donc on a une tonne de trucs qui se passent ici, ce qui est très bien. Allons frapper le jeu et voyons si nous pouvons enregistrer un nouvel utilisateur. J' espère donc rappelle-toi, notre déconnecte automatiquement. Donc, nous allons avoir n'importe quelle adresse mail. Harry Hotmail dot com Et j'ai juste utilisé mot de passe et puis je vais cliquer sur registre et nous n'avons rien. Et je pense que c'est parce qu'arrête ça de courir. J' ai effectivement oublié orteil effectivement appeler registre dans le registre cliqué. C' est toujours le truc simple dans la vie. C' est comme ma faiblesse en tant que coda. Je fais toutes les fonctions faire tout magnifiquement, et j'oublie juste de les appeler. C' est fou les choses que tu peux te tromper. Bon, essayons encore une fois. Harry agit femme médecin calme. Et si vous appuyez sur l'onglet sur votre clé physique, mais il vous emmènera à mot de passe. Enregistrer le mot de passe, veuillez confirmer le mot de passe Mot de passe Maintenant, vous pouvez réellement changer cette propriété de champ de texte pour qu'elle soit cachée afin que nous puissions réellement le faire pendant qu'elle est toujours en cours d'exécution. La prochaine fois que tu l'exécuteras, ça ira. Si nous regardons notre champ d'ajout de texte, nous pouvons avoir un champ de texte. Ne le fais pas et je dois juste me rappeler que c'était du genre, n'est-ce pas ? Oh, sont. C' était quelque chose comme la vie privée. Je pense que je vais devoir chercher ça si on va à notre storyboard, on l'a confiné. Désolé de partir sur une tangente, mais c'est bon de réparer ces choses. Allez dans mot de passe, allez dans ses propriétés. Le type de contenu est un mot de passe et sécurisé. C' était ce que je cherchais. Dr est entrée de texte sécurisée parce que true et make it type de mot de passe type de contenu texte est égal à dumps. C' était un mot de passe ? Revenons à notre storyboard. Ouais, Mot de passe. Donc le contenu le plus. Pas celui-là, c'est sûr. Ce n'est pas celle-là. Je suis sûr que c'est le 1er 1 est égal à fléchette. Allez, Swift. Une semaine. Je pense que je vais devoir trouver ça quelque part. Alors, tu sais quoi ? Je vais juste laisser ce mot de passe pour l'instant, alors on va le laisser, accord. Et nous reviendrons sur notre application et nous continuerons là où nous allions frapper. D' accord. Et cela devrait enregistrer un utilisateur et se débarrasser de cet écran. Donc c'est passé par ici. Il est enregistré avec succès. Nous avons un nouvel utilisateur, donc il est rejeté l'écran, et il nous dit dans notre conseil, nous avons un nouvel utilisateur maintenant. Évidemment, on peut arrêter ça, et on peut vraiment aller vérifier Rat dans notre console Google Firebase, n'est-ce pas ? Alors allez à notre navigateur, Govert, notre consul et cliquez sur l'authentification. Nous pouvons voir dans notre liste d'utilisateurs que nous avons harry à hotmail dot com. Nous qui avons un utilisateur unique I d. Maintenant, je crois que cet utilisateur unique je d est en fait unique sur tout Firebase. Ne me cite pas là-dessus. Vous devriez vérifier, mais je crois que c'est, ou certainement assez long pour être unique. C' est ainsi que nous créons nos utilisateurs et les enregistrons dans notre application Now. Évidemment, notre application est un peu en deçà de l'expérience utilisateur en ce moment parce que l'utilisateur n'a aucun moyen de savoir ce qui ne va pas avec l'inscription ou la connexion. Donc, dans la prochaine conférence, je vais vous mettre un peu de devoirs, qui est basé sur des alertes et un peu de logique, juste dire à l'utilisateur ce qui se passe et quand ça se passe. Alors je te verrai dans la prochaine 101. M12 7 Enregistrement de l'entreprise et d'une solution d'une connexion et de travaux et de solutions de: déjà. Il est temps de faire vos premiers devoirs dans ce module, et il y a quelques choses qui ne vont pas dans notre application, principalement dans l'écran de connexion et d'inscription. Et je veux sectionner trois tâches pour réparer ces éléments. Maintenant, le premier élément réussi à corriger est de créer une alerte générique, peut-être une classe d'utilitaires, comme nous l'avons déjà, où vous pouvez alimenter un titre, un message et un titre de bouton, peut-être à une alerte, juste pour faire savoir à l'utilisateur qu'il a échoué un noggin. Ou il y a une inscription incorrecte. Ils ont saisi leur mot de passe de manière incorrecte. Quelque chose comme ça, juste une façon générique que l'utilisateur peut savoir que quelque chose a mal tourné est que votre première tâche. Votre deuxième tâche consiste à permettre à l'utilisateur de réinitialiser ses mots de passe. Donc, si vous vous souvenez, nous avons un bouton de mot de passe oublié dans notre rap, et lorsque l'utilisateur tape que vous voulez les envoyer d'un e-mail et firebase le fait automatiquement. C' est donc assez simple, mais vous devrez peut-être rechercher la documentation Firebase ou simplement chercher sur Google pour voir comment le faire. Ce n'est pas trop difficile. Et enfin, une fois que tu as fait ça. Il suffit de donner à l'utilisateur un pop-up, lui demandant de vérifier son e-mail pour la réinitialisation Big sur qui renvoie au point numéro un ou la tâche numéro un. Vous allez juste utiliser ce pop-up générique à nouveau dans votre classe d'utilitaires. Alors pause la vidéo ici et bonne chance. Vas-y vraiment bien avant de revenir. Bienvenue de retour. J' espère que vous avez une très bonne fille pour résoudre ces problèmes. Je t'ai dit, voici un petit rappel. Avant de vous montrer ma solution, je vous ai demandé de créer un pop-up pour les enregistrements de connexion échoués. Peu importe. C' était juste un pop up générique. En outre, pour permettre à l'utilisateur de réinitialiser ses mots de passe, vous devez regarder un peu de documentation Firebase pour le faire, puis, enfin, utiliser la fenêtre contextuelle que vous avez créée pour demander à l'utilisateur de vérifier son e-mail une fois qu'il a envoyé au réinitialiser le mot de passe. Alors ouvrez votre code ex et voyons comment je résoudrais ce problème. La toute première chose que je ferais est de créer un nouvel utilitaire File Corp ou quelque chose de similaire à cela. C' est la façon dont je programme. Ce n'est pas une méthode standard de programmation. n'y a pas de poids standard, vraiment ? Donc, vous pouvez créer n'importe quel fichier nommé que vous vouliez, mais il se trouve que c'est comme ça que je l'ai toujours fait. Aide et ignorer cette auto, compléter leur ouvrir et fermer nos accolades. En ce moment, nous avons besoin d'une fonction ici, qui va montrer en alerte. Maintenant, ça va prendre un titre, qui est une chaîne qui va être le titre des élus. Ça va avoir un message. Aussi, c'est de la ficelle. Et puis il aura encore une chose dont il a besoin. Comment montrez-vous dans un Let pendant que vous le présentez et vous présentez dans le Carême sur le dessus d'un contrôleur de vue . Donc, vous devez réellement passer le contrôleur de vue sur lui-même. Vous, je vois le contrôleur. Et pour ce faire, vous allez devoir vous importer. Je l'ai kit. Donc, il sait ce que vous je vois contrôleur est tout au sujet. Et puis nous sommes prêts à aller avec notre fonction. C' est vrai ? Donc c'est probablement un peu qui t'a attrapé quand tu essayais de le faire. Juste cette petite section. ce moment, nous pouvons simplement créer une alerte simple qui est égale à et vous votre je laisse contrôleur et vous savez comment cela se passe. À présent, nous avons un titre. Donc on va lui donner le titre qu'on passe. Nous allons lui donner le message que nous passons et nous devons donner un style, Ne pas élire. Et puis nous allons nous donner une action, qui est un simple bouton alertes point action action ad hit. Entrez et vous pouvez créer votre nouvelle action avec un titre de style et de gestionnaire. Donc le titre va tout simplement aller bien. Le style est des valeurs par défaut par point et le gestionnaire est nul. Maintenant, juste un peu de travail. Quelque chose d'important ici. Au lieu de la valeur par défaut, vous pouvez en fait d'autres éléments annuler et destructeur. Si destructeur vous donnera un fond rouge. Si je me souviens correctement ou quelque chose de similaire, cela implique que vous allez supprimer certaines données. Dans ce cas, nous ne sommes pas seulement dans le let que la valeur par défaut est bien. Annuler. Il lui donne une saveur d'annulation donc rien ne sera changé. Par défaut, c'est bien pour nous. Juste pour que vous sachiez, parce que l'utilisateur, c'est assez souvent dans la programmation IOS en ce moment. Nous devons montrer aux élus. Donc, nous obtenons ce contrôleur de vue que nous avons passé et nous présentons l'alerte elle-même. Alors laissez animés. Et à la fin, il n'y a rien parce que c'est juste un message à dire à l'utilisateur. Ainsi, vous pouvez enregistrer ce fichier d'utilitaires et nous pouvons revenir à notre ou au contrôleur de vue parce que l'alerte est maintenant prête à être affichée. Maintenant, regardons les endroits où nous insérerions réellement cette alerte. Donc, nous avons tous les bits et les pièces que nous avons journal dans le registre et à la fois dans la journalisation et dans l'enregistrement . Nous vérifions l'entrée, et si l'entrée est incorrecte, je e. ici, alors nous pouvons faire quelque chose à ce sujet. Donc, dans ce cas, si le champ de texte de l'e-mail est incorrect, nous pouvons réellement créer de nouveaux utilitaires. Ne montrez pas cela et nous pouvons dire que le courrier électronique a mal formaté quelque chose comme ça. Ou en fait, nous allons couper la commande X et nous allons juste dire Era et nous allons le mettre comme un message à la place et nous le passerons. Un peu de vous nous contrôlez. C' est juste moi, parce que tout ou peu de contrôleur hérite de vous notre contrôleur de vue. Donc, le soi est ce qu'il est, n' est-ce pas ? Donc, nous pouvons copier cela et nous pouvons le mettre dans notre mot de passe texte, champ, souffle, mot de passe, deux shorts et il reviendra. Cela prend soin de cette entrée lorsque nous vérifions l'entrée réelle. Alors maintenant, allons-y funk. Concentrons-nous sur cette fonction de connexion. Donc, nous avons vérifié notre entrée. Tout est bon. On a essayé de se connecter. S' il y a une époque, alors nous devrions probablement rythmé dans notre spectacle, laissez ici et dire époque. Et puis le message. Eh bien, ça pourrait être tout ce que vous voulez, mais vous devez vous rappeler, Vince, la description localisée nous dira réellement quelle est l'erreur, donc vous pouvez montrer que dans le message à l'utilisateur maintenant, cela dépend si vous voulez réellement montrer cela, parce que parfois ces descriptions qui viennent de la base de feu et d'autres fournisseurs de base de données cloud assez technique, et vous ne voulez pas à la moyenne quotidienne Joe pour voir cela, parce que cela implique un niveau de raffinement si vous voulez. Ce n'est même pas un mot, je sais, mais cela implique que vous n'avez pas fait un effort pour affiner votre application. bases de pompiers sont compatibles avec leurs descriptions, elles sont un peu plus lisibles donc nous pouvons laisser ceci tel qu'il est maintenant, nous pouvons copier ceci, et si nous le voulions une fois que les utilisateurs se sont connectés, nous pourrions lui donner une notification. Mais c'est en quelque sorte implicite qu'une fois qu'ils se sont connectés à cette vue, contrôleur descend et ils seront en mesure d'utiliser l'application. Donc je ne pense pas que ce soit vraiment un besoin de le faire à ce stade. Donc on va laisser ça tel qu'il est, non ? Alors maintenant, allons à notre section de registre, où nous avons fait un client laisser sans champs de texte pour confirmer le mot de passe. Et ce qu'on a fait, c'est quand on a appuyé sur le bouton. Ok, on a vérifié. Si le texte du mot passé était égal à cela, alors nous avons commencé l'enregistrement. Ou si ce n'est pas vraiment égal ? Eh bien, nous devrions avoir une autre déclaration où nous disons l'utilisation de ça. Donc, c'est une astuce pratique dans le code X. Si vous allez à une accolade ou une parenthèse et que vous vous déplacez d'avant en arrière, vous remarquerez que c'est fini en haut ici, où j'ai sélectionné cette ligne, elle met en évidence son homologue, donc où elle s'ouvre et se ferme. Donc, juste en allant et en arrière, vous pouvez dire où vous êtes. Donc, nous savons que c'est le bon endroit pour placer et autre, et ensuite nous pouvons dire à l'utilisateur qu'ils ont réellement tort afin que nous puissions coller l'ère. Et qu'est-ce qu'on va faire ? Eh bien, notre description, notre message n'est pas le suivant. Évidemment, ça va être quelque chose comme, pensons que les mots de passe d'erreur ne correspondent pas, ok ? Et puis cela devrait juste sortir de lui et leur donner une chance de cliquer à nouveau s'inscrire. Mais on peut vérifier ça dans un peu. C' est vrai ? Donc, la prochaine ère qui sera rencontrée est si l'enregistrement a échoué. Donc, nous pouvons simplement coller cela dans et nous pouvons le laisser comme une description localisée, parce que encore une fois, c'est une époque. Maintenant, si l'utilisateur s'inscrit, nous obtenons un nouvel utilisateur, puis nous rejetons le contrôleur de vue. Encore une fois, nous pourrions mettre une alerte ici, mais nous devons être très, très prudents quand nous faisons ça. Si on met en alerte ici, ça montrerait l'inerte, mais une alerte est synchrone. Ainsi, l'alerte s'affiche sur le code en arrière-plan continue d'être en cours d'exécution. Cela signifie qu'il va passer à cette ligne suivante et il va rejeter le contrôleur de vue sur lequel l'alerte est réellement affichée. Maintenant c'est Ah, tout un sac de vers. Boîte entière de vers qui attendent d'être ouverts. Généralement, vous voulez rester loin de ça. Donc, ce que vous feriez si vous voulez vraiment montrer une alerte ici et je ne pense pas que ce soit nécessaire est de créer votre propre alerte personnalisée. Et quand l'utilisateur appuie sur le bouton OK, action, alors et seulement alors vous rejetterez le contrôleur de vue réel. Donc je ne vais pas le faire ici parce que c'est assez pour que l'utilisateur sache si l'écran disparaît qu'ils sont réellement enregistrés, est-ce pas ? Donc, nous pouvons dire que nous pouvons jouer et nous pouvons vérifier que toutes ces alertes et ce qui ne fonctionne pas réellement correctement. Ok, donc je vais juste mettre une adresse e-mail trop courte et cliquer sur verrouiller l'e-mail, mal formaté. Super. Alors, faites le long. Je sais que ce n'est pas encore une adresse e-mail. Je vais cliquer sur Verrouiller trop court, Logan. Et cela les adresses e-mail mal formatées, revient de la base de feu. C' est l'air adopter la description localisée. Donc c'est génial. Donc ce que nous allons faire ici, c'est que nous allons mettre et dire, Hotmail dot com et nous allons verrouiller. n'y a pas d'utilisation, un enregistrement correspondant à cette identification l'utilisateur peut avoir été supprimé. Et cela, vous pouvez voir ce que je veux dire quand je dis que ces services ont parfois. C' est une sorte de mauvaises descriptions. Ils sont super pour nous, est les développeurs. Ils nous disent exactement ce qui se passe. Mais pour un utilisateur que vous aimez, Eh bien, qu'est-ce que cela signifie ? Ai-je été supprimé ? Non, cela signifie juste que l'utilisation du nom et l'e-mail est incorrect. C' est tout ce que ça veut dire. Donc c'est un peu frustrant. Mais hé, essayons Harry à Hotmail dot com et ça a capitalisé ça. Donc c'est la chose qu'on devrait réparer aussi. On peut se connecter avec ça. Le mot de passe n'est pas valide ou l'utilisateur n'a pas de mot de passe. Et cela amène également un autre point que nous avons deux erreurs différentes ici, la fois pour une adresse e-mail. Et si j'étais un hacker, je regarderais ça et je dirais juste pour que la première adresse email n'existe pas. Mais ce 2ème 1 existe en fait parce que l'ère est différente. Les pâtes c'est la même chose, mais l'air est différent, non ? Et c'est un indice que vous ne voulez pas laisser derrière les pirates, est-ce pas ? Vous voulez juste donner un journal de domaine aérien générique à Aaron, s'il vous plaît vérifier les détails. C' est tout ce que tu veux faire. Donc c'est à vous de décider comment vous faites ça. On ne va pas faire ça maintenant. C' est un peu au-delà de la portée de tout ça, mais de toute façon, changeons ça à Harry. Sommes-nous besoin d'éteindre automatiquement Correct sur ce, c'est sûr. Ou Harry est à Hotmail dot com. On peut l'enregistrer. Mettez le mauvais mot de passe dans les mots de passe. Ne correspond pas. Excellent, non ? Essayons donc d'enregistrer Harry avec le pastorat standard du registre pastorat pacifié. Ok, et nous sommes enregistrés comme Harry chez Hotmail Dot Com. Donc, il semble que notre logique et le flux d'impression des erreurs et de montrer les alertes utilisateur fonctionne réellement. Maintenant, nous allons passer à la prochaine date des devoirs, qui était de permettre à l'utilisateur de réinitialiser ses mots de passe. Si vous vous souvenez dans la console basée sur le feu, nous pouvons cliquer à côté d'un utilisateur et nous pouvons réinitialiser le mot de passe, qui enverra une réinitialisation. Vous pouvez également modifier vos modèles d'e-mail. Donc, si vous cliquez sur changer le modèle d'e-mail, il vous dira ce que vous conduisez ce juste par défaut de Google et vous pouvez simplement cliquer sur une petite icône de stylo et vous pouvez avoir tous ces éléments modifiés. Ok, mais nous voulons le faire par programme parce que évidemment manuel va être douloureux. Vous avez 1 000 000 utilisateurs et 100 d'entre eux oublient ça, peut-être tous les jours. Donc, dans notre ou les quelques contrôleurs sous oublié collecte passée, nous pouvons réellement le faire. Donc, disons que nous allons créer une fonction ici quelque part. Une fonction qui est cool. Ce mot de passe de réinitialisation, puis appelons cette fonction afin que je ne l'oublie pas. Cette fois dans le passé oublié a cliqué sur un bouton clic. OK, alors réinitialisez le mot de passe. Quelle est la première chose qu'on doit faire ? Eh bien, nous ne voulons pas vérifier l'entrée parce qu'ils ont oublié leur mot de passe, et évidemment nous ne pouvons pas vérifier le mot de passe. Donc tout ce qu'on va faire ici, c'est dire si et on va vérifier que quelque chose est vide. Donc, disons si ah, oublions ce qu'on appelait le champ de texte de l'e-mail. Le point de texte n'est pas vide. C' est un booléen. Donc si c'est vide et qu'est-ce qu'on va faire ? On va le dire à l'utilisateur. Tout d'abord, disons que c'est réglé pour qu'on sache comment faire ça. Maintenant, nous avons une belle utilitaires dot montrer beaucoup, et nous avons une ère de titre. Nous avons un message. S' il vous plaît entrer votre adresse e-mail et nous avons le contrôleur de vue, qui est auto. Et puis après cela, nous allons juste revenir hors de cette fonction pour leur permettre de corriger cela. Ok, mais si tout est vieux bien, on peut prendre l'email, ce qui est égal aux autochiens. E-mail, champ de texte ne joue pas. Oups. Ok, et tu peux le mettre si on le laisse là. Mais on vient de vérifier s'il est vide, donc ce n'est pas vraiment nécessaire pour le moment. Voici les trucs Firebase parce que nous avons seulement besoin d'une adresse e-mail pour réinitialiser un mot de passe. Nous allons arrêter Dobbs, et vous pouvez simplement commencer à taper des choses que vous pourriez penser que c'est, telles que Réinitialiser. Nous avons vérifié le code de réinitialisation du mot de passe Envoyer réinitialiser le mot de passe Ça ressemble à ça. Essayons ça. Il demande un e-mail, donc nous l'avons déjà, et à la fin, et à la fin, nous avons ce qu'on appelle un type de rappel de réinitialisation de mot de passe d'envoi. Alors juste frappé. Entrez, et il remplira automatiquement la structure pour vous. Cela renvoie une erreur. Et cela, je crois, n' est pas facultatif en fait, je pense qu'il l'est. Donc, si j'appuie sur Commande a dit oui, c'est facultatif. Je vois des choses aujourd'hui. Donc encore une fois, comme tout le reste avec la base de feu, nous pouvons vérifier cette erreur. Donc, si let era est égal à erreur, Ensuite, nous pouvons montrer à l'utilisateur l'erreur afin que les utilitaires ne montrent pas l'ère de l'alliance. C' est quoi la ficelle ? Eh bien, nous pouvons leur donner la description localisée et passer sur ce contrôleur de vue. D' accord. Et bien sûr, si nous avons une époque, nous ne voulons pas continuer, donc nous allons revenir, non ? Donc, si nous n'avons pas une ère, alors nous pouvons réellement montrer à l'utilisateur un message. Et c'était la troisième partie des devoirs pour leur faire savoir que la réinitialisation a été envoyée. Donc les services publics ne montrent pas que je suppose quelque chose comme le succès. Veuillez vérifier votre boîte de réception pour un coût. Serait passé le rayon d'épée lien défini et le contrôle de vue, bien sûr, est auto. Donc, cela devrait prendre soin de toute la logique de réinitialisation du mot de passe. Mais comme toujours, vérifions ça. Allons à notre simulateur. Commençons par cliquer. Oublié. Veuillez saisir un e-mail. Très bien. Et mettons un mauvais e-mail dedans d'abord et peu importe ce que ça n'a pas d'importance. C' est clic oublié. On y va. L' utilisateur peut avoir été supprimé, donc nous obtenons la même erreur que nous avions avant lorsque nous essayions de nous connecter avec les mauvais utilisateurs. Encore une fois, c'est un bon indice pour un hacker. S' ils voulaient emballer vos affaires, voyons ce qui se passerait si on mettait son nom Harry. Et oublions son mot de passe. Succès. Veuillez vérifier avec votre boîte postale pour obtenir un mot de passe. Réinitialiser le lien. Maintenant, quand vous allez sur Hotmail de Harry's, vous devriez pouvoir voir un lien de réinitialisation de mot de passe. Maintenant, ce serait drôle si c'était Hotmail du Prince Harry parce qu'il était le premier fonds là-bas et il continue à obtenir ces liens de réinitialisation de mot de passe Firebase encore plus drôle. S' il suivait ce cours parce qu'il veut changer de carrière de toute façon, arrêtons de courir. Donc, notre logique fonctionne plus ou moins pour ces éléments. Maintenant. Pour le moment, ça semble presque tout droit. Mais comme vous continuez à utiliser l'application, vous trouverez des petits morceaux où vous voulez changer un peu la logique. C' est parfaitement bien. À ce stade où je t'enseigne, tu devrais penser à des pensées comme ça. Comme si j'avais aimé ça comme ça et pas comme Grant le faisait. Parce que nous sommes tous différents. Vous avez vos préférences et ils ne sont pas nécessairement les mêmes est la mienne. Donc, si vous voulez qu'il mélange les choses autour, s'il vous plaît n'hésitez pas. Quoi qu'il en soit, ce sont les devoirs et la solution triés. 102. M12 8 Visage de table pour afficher des données de messages de fondes: Donc, nous avons une connexion, Nous avons une inscription. Maintenant, tout ce que nous avons à faire est d'envoyer et de recevoir des données textuelles. Quelques messages, si tu veux. Donc, nous allons mettre en place juste une vieille vue de table, vous savez, une fois que vous aurez reçu et montré ces données à nos utilisateurs. Alors ouvrez votre projet et c'est en créer un. Maintenant, Auparavant, nous avons réellement créé un vous un contrôleur de vue de table, qui disposait tout le code de modèle pour nous. Cette fois, nous allons faire les choses un peu différemment. On va aller à notre storyboard, et on va voir notre contrôleur de vue principal. Donc, nous ne sommes plus intéressés par l'enregistrement et le verrouillage, et c'est à l'intérieur d'ici que nous allons déposer dans une vue de table, alors venez simplement à notre filtre en bas, à droite dans la table de type. Et auparavant, nous en avions un, mais maintenant nous allons avoir juste une vue de table ancienne. Et la raison pour laquelle nous faisons ça c'est pour qu'on puisse ajouter d'autres éléments dans notre si besoin est quelqu'un pour cliquer et faire glisser ça ici, et ensuite je vais juste positionner ça sur les côtés. Je vais supprimer ces marges et je vais lui donner des zéros tout autour et vous appuyez sur Tab. Si vous appuyez sur ces éléments et alors il devrait avoir des annonces pour les contraintes en bas. Lorsque vous faites cela, il remplira notre vue principale. Ok, donc nous avons nos vues de table standard. Je vais le dire, et je vais passer à un autre fichier et y revenir. Donc, il se développe Parfois est un problème graphique que la vue de table ne montre pas réellement. Maintenant, vous remarquerez que cette vue de tableau en contraste brutal avec le contrôleur de vue de table ne vient pas réellement avec une cellule. Donc je vais juste te montrer ce que je veux dire par là. Si je dépose un contrôleur de vue de table ici, que nous pouvons supprimer, il vient avec une cellule. La table pour vous la cassette de vous vendre. Où est l'autre ? Il a juste une vue de table. Supprimons ça. suffit de le sélectionner Hit backspace. Ça revient à notre vue de table d'origine. Donc, nous devons déposer dans une cellule et vous remarquerez dans notre Explorateur d'objets nous avons une table de cellule disponible pour vous-même. Donc, nous allons cliquer et faire glisser cela, et il devrait le déposer dans le haut. Et maintenant, il ressemble à lorsque vous faites glisser dans un contrôleur de vue de table lui-même. Nous avons une cassette de vous vendez, et nous avons le contenu de vous. C' est moi. Donc, cliquez sur la cellule et rappelez-vous, nous devons définir une réutilisation identifier dans le haut. Droit ? Alors qu'est-ce que nous appelons ceci, Peut-être la vue de la table de messages. Donc d'accord. Et rappelez-vous, c'est cette chaîne d'identification que nous utilisons pour recycler et créer de nouvelles cellules pour notre application pendant que nous défilons. Ok, donc j'allais copier ça pour l'instant, et on va l'utiliser dans un petit moment. Une fois que nous avons créé les morceaux dont nous avons besoin en ce moment, nous devons réellement sortir ceci. Nous devons référencer la table, voir elle-même à notre classe de contrôleur de vue. Alors ouvrez l'éditeur assistant et puis contrôlez simplement. Cliquez et faites glisser la vue Tableau, non la cellule. Assurez-vous qu'il s'agit de la vue tabulaire sélectionnée. Vous pouvez contrôler, cliquer et faire glisser à partir de la table. Voir lui-même sur cette liste sur le côté gauche pour être sûr. Et nous pouvons déposer cela quelque part dans notre classe et nous pouvons simplement laisser cela comme un point de vente, et nous pouvons appeler cela peut-être la vue de table des messages. Ou on pourrait simplement l'appeler vue de table. Maintenant. Je ne l'ai pas spécifiquement nommé parce que dans IOS ou Android pour ce téléphone Windows Master, il est recommandé d'avoir une seule vue de table dans un écran. Si vous en avez plusieurs, les choses peuvent devenir déroutantes, surtout quand il s'agit de mises en page, de défilement et de défilement latéral. Certaines choses pourraient être un cauchemar. Il est donc recommandé d'avoir une vue de table sur écran de presse, donc vous pouvez simplement l'appeler vue de table. Tu n'as pas à dire une cassette de messages de toi, est-ce pas ? Donc nous avons fait ça. Nous avons mis notre i D. Nous avons nous-mêmes. On l'a sortie. Super. Nous pouvons revenir à l'édition et aller à notre point de contrôleur de vue Swift Now, en théorie, nous devrions changer cela pour le contrôleur de vue des messages, mais nous pouvons partir. C' est le contrôleur de vue de l'écran principal de Justus pour l' instant, non ? Nous avons notre vue de table là-dedans. Maintenant, il y a quelques choses dont une bande a besoin d'abord, elle a besoin d'une source de données. Donc, notre classe doit hériter de vous I Table view source de données. Toi, je table de toi. Source de données. C' est là. Il a aussi besoin d'un délégué. Donc, il sait quoi faire lorsque vous appuyez sur des choses ou glissez des choses sur la table ou, en fait, faites défiler la table. Donc cela vient de vous, je table vue délégué. Maintenant, Swift va nous donner quelques erreurs et dire que vous n'avez pas toutes les méthodes requises dont vous avez besoin. Donc, si vous voyez quelque chose comme ça n'est pas conforme au protocole, cela signifie que Vance Swift a dit que vous devez avoir certaines fonctions disponibles pour capturer la source de données définira la source de données et ou Teoh déclenchera les délégués, et nous ne les avons pas encore mis en œuvre. Mais nous le ferons, non ? Pour l'instant, nous devons créer un orteil variable tenant tous nos messages qui reviennent de la base de feu jusqu' à présent, des messages et ça va être hors d'un certain type maintenant. Auparavant, nous avons créé un vous un contrôleur de vue de table qui disposait tout le code de modèle pour nous. Cette fois, nous allons faire les choses un peu différemment. On va aller à notre storyboard, et on va voir notre contrôleur de vue principal. Donc, nous ne sommes plus intéressés par l'enregistrement et le verrouillage, et c'est à l'intérieur d'ici que nous allons déposer dans une vue de table, alors venez simplement à notre filtre en bas, à droite dans la table de type. Et auparavant, nous en avions un, mais maintenant nous allons avoir juste une vue de table ancienne. Et la raison pour laquelle nous faisons cela est pour que nous puissions ajouter d'autres éléments dans notre application si nécessaire, quelqu'un clique et glisse ça ici, et puis je vais juste positionner ça sur les côtés. Je vais supprimer ces marges, et je vais lui donner des zéros tout autour. Et vous appuyez sur Tab après avoir appuyé sur ces éléments, puis il devrait avoir des annonces pour les contraintes en bas. Lorsque vous faites cela, il remplira notre vue principale. Ok, donc nous avons notre vue de table standard, quelque chose de plus sûr, et il va passer à un autre fichier et y revenir. Donc, il se développe parfois est un problème graphique que la vue de table ne montre pas réellement. Maintenant, vous remarquerez que cette vue de table en contraste brutal avec le contrôleur de vue de table ne vient pas réellement avec une cellule, donc je vais juste vous montrer ce que je veux dire par là. Si je dépose un contrôleur de vue de table ici, que nous pouvons supprimer, il vient avec une cellule. C' est une table pour toi. Une cassette de toi-même. Où est l'autre ? Il a juste une table pour vous. Supprimons ça. Il suffit de le sélectionner. Frappez le backspace. Ça revient à notre vue de table d'origine. Donc, nous devons déposer dans une cellule et vous remarquerez dans notre Explorateur d'objets, nous avons une table de cellule disponible pour vous-même. Donc on va cliquer et faire glisser ça, et ça devrait le déposer en haut. Et maintenant, il ressemble à quand vous faites glisser dans une table de vous le contrôler lui-même. Nous avons une cassette de vous vendre et nous avons le contenu de vous. C' est moi. Alors cliquez sur la cellule et rappelez-vous, nous devons définir une réutilisation, l' identifier en haut. Droit ? Alors qu'est-ce que nous appelons ceci, Peut-être la vue de la table de messages. Donc d'accord. Et rappelez-vous, c'est cette chaîne d'identification que nous utilisons pour recycler et créer de nouvelles cellules pour notre application pendant que nous défilons. Ok, donc j'allais copier ça pour l'instant, et on va l'utiliser dans un moment, une fois qu'on aura créé les morceaux dont on a besoin. ce moment, on doit vraiment sortir ça. Nous devons référencer la table, voir elle-même à notre classe de contrôleur de vue. Alors ouvrez l'éditeur assistant et puis contrôlez simplement. Cliquez et faites glisser la vue Tableau, non la cellule. Assurez-vous qu'il s'agit de la vue de table sélectionnée. Vous pouvez contrôler, cliquer et faire glisser à partir de la table. Se voir sur cette liste sur le côté gauche, pour être sûr, et nous pouvons déposer cela quelque part dans notre classe, et nous pouvons simplement laisser cela comme une sortie, et nous pouvons appeler ceci peut-être vue de table de messages. Ou on pourrait juste l'appeler vue de table maintenant. Je ne l'ai pas spécifiquement nommé parce que dans IOS ou Android, d'ailleurs, un téléphone Windows. Il est recommandé d'avoir une seule vue de tableau dans un écran. Si vous en avez plusieurs, les choses peuvent devenir déroutantes, surtout quand il s'agit de mises en page, de défilement et de défilement latéral. Certaines choses peuvent être un cauchemar, il est donc recommandé d'avoir une vue de table par écran, donc vous pouvez simplement l'appeler vue de table. Tu n'as pas à dire des messages. Une cassette de toi. Droit ? Donc nous avons fait ça. Nous avons mis notre I D nous avons nous-mêmes. Nous l'avons dépassée. Super. Nous pouvons revenir à l'édition et aller à notre point de contrôleur de vue Swift. Maintenant, en théorie, nous devrions changer cela pour le contrôleur de vue des messages, mais nous pouvons partir. C' est le contrôleur de vue de l'écran principal Justus pour l'instant. Droit ? Nous avons notre vue de table là-dedans. Maintenant, il y a quelques choses dont une bande de vous a besoin d'abord, elle a besoin d'une source de données, donc notre classe doit hériter de vous. I tableau source de données. Toi, je table de toi. Source de données. C' est là. Il a aussi besoin d'un délégué. Il sait donc quoi faire lorsque vous appuyez sur des choses ou faites glisser des choses sur la table. Ou bien, faites défiler la table. Donc, cela vient de vous je délégué de vue de table. Maintenant, Swift va nous donner quelques erreurs et dire que vous n'avez pas toutes les méthodes requises dont vous avez besoin. Donc, si vous voyez quelque chose comme ça n'est pas conforme au protocole, cela signifie que c'est Swift. A dit que vous avez besoin d'avoir certaines fonctions disponibles pour capturer la source de données définira la source de données et ou Teoh déclencher les délégués. Et nous ne les avons pas encore mis en œuvre. Mais nous le ferons, non ? Pour l'instant, nous devons créer un orteil variable tenant tous nos messages qui reviennent de la base de feu jusqu' présent, des messages. Et ça va être hors d'un certain type, qui viendra de Firebase elle-même. Donc en haut, nous importons Teoh juste jouer vieille base de feu. Maintenant, nos messages seront hors type de données. Snap, tiré. Maintenant, ce sera probablement et une course d'instantanés. Cela dépend de la façon dont nous allons réellement programmer cela. Donc, ce que je vais faire est simplement de créer un tableau de snapshots qui est vide pour l'instant, comme ça. Donc nous avons un tableau vide de ces instantanés de données basés sur le feu, et nous allons les ajouter ou les écraser. En effet, lorsque nous avons quelques nouvelles données qui vient réellement dans le droit, Donc maintenant, nous devons mettre en œuvre ces deux éléments. La première chose que nous allons implémenter est la vue de table elle-même. Donc nous avons notre test de verrouillage et ce que nous pouvons faire, en fait, en moment, c'est juste supprimer ce test de verrouillage. On n'en a pas besoin. Notre inscription fonctionne parfaitement bien. Vous pouvez également supprimer ce bit si vous le souhaitez, je ne vais pas le supprimer. Je vais juste le déplacer vers le bas. Donc c'est hors de notre chemin en ce moment. A l'intérieur d'ici. Revenons à notre vue de table. La première chose qu'une bande de vous a besoin de neige est le nombre de lignes dans la section. Donc, numérotez bien, en fait besoin de connaître le nombre de sections, tout d' abord, donc c'est retourné une section. Ensuite, il a besoin de savoir nombre off rose dans la section. Et si vous commencez à taper ces code rapide ou ex, plutôt va commander tout ce dont vous avez besoin. Alors, combien de lignes avons-nous besoin ? Où allons-nous retourner ? Les messages ne comptent pas. Donc juste compter le nombre dans ce que Ray, et cela nous donnera le bon nombre sur rose. Ok, la prochaine chose que nous devons faire est de trouver la cellule pour notre vue de table. Tu n'as pas encore réglé ça, donc c'est moi pour Row à, non ? Donc cela nous permettra d'avoir une cellule. Alors vendons, ce qui est hors type vous. Je dépose que vous vendez. Je suis juste en utilisant la vieille cellule simple qui vient installé automatiquement, et nous allons prendre cela à partir de la bande de vous ne de que cellule réutilisable avec et identifier . Et vous remarquez également que vous pouvez également de que une cellule à partir d'un chemin d'index spécifique. Si vous voulez faire ça, c'est un cas très spécial. Il est peu probable que vous vouliez le faire avec un identifiant et je l'ai complètement oublié et par-dessus dans mon presse-papiers. Alors sélectionnons notre cellule à nouveau et il y en a qui sont identifiés. Retourne et dépose-le là, OK, fais juste de la place. Vous pouvez voir ce qui se passe ici maintenant. D curies de cellule réutilisable. Je crois que c'est facultatif. Je vais arranger ça parce qu'on sait que c'est correct. Quoi ? Nous devrions savoir que maintenant nous devons sortir le message. Alors laissez le message, et cela va provenir de notre tableau hors messages, donc les messages index chemin haut en rouge. Ok, assez simple. Et le message devrait avoir désactivé. C' est un instantané de données. Ça ne se montre pas quand je survole, mais alors ? Ok, maintenant chaque instantané qui va finalement revenir de Firebase est en fait un dictionnaire. Si tu te souviens, c'est Jason qu'on a fait. On a déjà traité avec Jason. C' est pareil dans la base de feu. Vous en obtenez, vous obtenez plus ou moins de dictionnaires. Vous obtenez des clés et vous obtenez des valeurs dans notre cas qu'il sera une chaîne et la valeur sera une force. Alors attrapons le message réel. Le contenu est égal au message lui-même, quelle est la date ? Un instantané. Nous allons en retirer la valeur et vous remarquerez que cela revient comme n'importe quel. qui signifie qu'il pourrait être hors de n'importe quel type, et nous devons les convertir en exclamation. Donc, nous disons qu'il y a certainement une valeur et nous sommes certainement en train de parler, et cela fonctionnera certainement comme une force de coma de chaîne de dictionnaire. Maintenant, je sais que la conversion à la dépendance de la ficelle et de la ficelle va travailler les orteils. dollars. Vous firebase est revenu et il ne pouvait pas réellement convertir en une chaîne, ce qui est assez peu probable, pour être honnête. Ensuite, nous aurions un crash ici parce que nous essayons de forcer à déballer quelque chose qui n'existe pas réellement en tant qu'objet. On dit que c'est un type de désaccord, non ? Donc, si votre APS se bloque. C' est un excellent endroit pour commencer à vérifier des choses pour peut-être commencer à introduire si, allons-y et ce genre de choses. Mais tant que vous êtes étroitement spécifié sur votre mise en page de base de données ne devrait pas avoir de plantage. Ça ne devrait pas être le mot magique. En ce moment, on va prendre le texte de notre base de pompiers. Alors nous allons envoyer un texto. Et voici le texte du message. La réaction dans un spectacle est égale au contenu du message. Et qu'est-ce qu'on va passer ici ? Normalement, on va passer une chaîne. C' est la clé de la valeur que nous voulons de nos données Jason. Et puis nous allons coûter ça comme une force. Droit ? Donc nous devons forcer à déballer ça comme rue. D' accord. Et encore une fois, vous pouvez en faire si vous laissez vérifier ici ou quelques gardes, déclarations, garde d'autre, ce genre de choses. ce moment, la question est dans le contenu du message. Est-ce que je veux juste dire quelles que soient mes constantes sont sur ce site,par exemple, par exemple, cela pourrait être un message hors tension constant ou quelque chose comme ça. Eh bien, je l'ai déjà signalé. C' est dangereux, parce que si vous changez ça à un endroit, ça ne changera pas à d'autres endroits. Donc ce que nous devrions faire avant de continuer ici, c'est créer un fichier de constance, et ce fichier de Constance contiendra toutes ces structures pour nous. Donc encore une fois, c'est une façon standard que je fais certains de ces trucs quand je démarre le fichier de constantes, puis je vais créer une structure appelée Constantes. Et à l'intérieur de cette structure, vous pouvez créer d'autres structures. Et comment je vais appeler ça ? C' est cool. Ce message champs Educ environ cinq. Basé sur ça, si tu veux faire ça, ok. Et quel genre de choses allons-nous avoir ici ? Eh bien, nous aurons en fait un statique, et nous aurons quelque chose appelé une date Heure et cette clé sera l'heure de la date. Onda statique laisser et nous aurons un texte et cette clé sera texte. Donc, c'est le texte du message. C' est la date ou l'heure à laquelle nous associons quand cela a été envoyé parce que nous allions les écrire. Donc juste pour être clair, ce seront les clés des données de Jason qui reviennent de notre base de pompiers sur. Nous les mettons juste dans une structure pour les avoir dans un endroit fixe et nous savons où les changer. Si notre structure de données change dans les droits futurs, nous l'avons maintenant, en fait, laissez-moi juste dire que si le code x l'a confiné. Et maintenant, nous pouvons l'utiliser dans cette section comme clé. Donc on peut dire Constance, les champs de message ne font pas de SMS. Alors maintenant, il sait quoi aller et y substituer pour chercher la clé. Maintenant, je sais que c'est la même chose, mais c'est juste pour vous habituer à la bonne pratique. Vous pouvez imaginer que si vous aviez un développeur qui l'appelait quelque chose comme ça, ce serait une bonne douleur d'écrire partout. C' est pour ça qu'on fait ce genre de choses. Alors défaites et sauvez et retournez en arrière. Ok, donc on a notre texto. Nous pouvons maintenant nous attraper. Nous pouvons obtenir l'étiquette de texte, nous pouvons déposer dans le texte que nous avons est égal au texte. Et enfin, nous pouvons rendre ce portable bien. Et ce chéri rapide s'en va et tous les avertissements devraient plus ou moins disparaître. Quatre cicatrices de chaîne à chaîne ne décrochent que les options. On va voir si c'est un problème. En fait, j'ai besoin de lire ça correctement. coulage forcé de la chaîne optionnelle à la chaîne normale ne dévoile que l'option. Est-ce que je voulais utiliser l'homme d'exclamation ? Ces monsieur de l'air sont difficiles à lire. Parfois, ils sont difficiles que je veux dire d'utiliser Exclamation. Ah, ce que ça veut dire, c'est que ça a le même effet que ça. Je le crois. Qui sait pourquoi l'a fait dans l'autre sens ? On y va. On va le déballer. Cela devrait être bien parce que cela sortira à la fin comme une chaîne. Ok, donc on peut dire que ça a été trié. Maintenant, la dernière chose que nous avons à faire est en vue, a chargé après avoir vérifié l'utilisateur actuel est que nous allons définir la vue de la table. Ne pas déléguer est égal à soi, pas Delph lui-même. Et c'est parce que nous l'avons vraiment dit. C' est ça et nous allons avoir la vue de table à laquelle je ne fais pas La source de données est égale et vous l'avez deviné si bien, donc nous avons fait beaucoup de choses là-bas. Laissons ça dans notre simulateur. Il suffit de vérifier que tout fonctionne. Oh, je n'ai pas ma carte SIM en arrière-plan. Ok, eh bien, c'est construit. Il s'est construit lui-même. Donc on devrait aller bien. On devrait être enfermés de quelque façon que ce soit sur la même chose. On devrait être bon d'y aller. Droit ? Donc juste pendant que ça se charge en arrière-plan, nous allons juste passer à la deuxième partie de cette section. C' est très court. Et ça revient à notre storyboard. Nous allons créer un champ de texte ici, juste en bas de la vue de tableau qui nous permet d'entrer un message. Alors juste avant que nous fassions ça, faisons juste ce qu'il s'appelait. Harry et Hotmail dot com passe connexion rouge ont été connectés sur ce qui s'est passé. Nous avons une erreur. Oh, ma chère. Oh chéri. Donc clairement, il ne tire pas. Donc, en fait, il faut aller réparer ça avant de passer à autre chose. Revenons à notre contrôleur ou à quelques contrôleurs et ce que nous voulons faire. Où sommes-nous ? Époque dans l'ère ? Oh, on a oublié d'ajouter notre code de sortie à l'intérieur d'ici juste en dessous où on m'imprime idiot pour qu'on puisse le faire maintenant. Cherchons juste la commande F rejetée. Là. Non, c'est cette Copie qui descend dans notre serrure et la dépose là-bas et ça devrait résoudre ce problème. Ok, je vais juste jouer ça à nouveau et vérifier que ça marche. Eh bien, nous aimerions être signés maintenant de toute façon. Oui, ont été signés. Donc ça devrait marcher. On va juste ignorer ça pour l'instant. C' est ce que je veux dire à propos de déboguer la moitié de ta vie passée à le faire. Donc nous avons notre table. Il fait défiler. Il n'y a rien dedans. Très bien. Donc on peut arrêter ça. Nous savons que notre code de table fonctionne plus ou moins dans notre section principale quelques contrôleurs. Droit ? Donc, revenons à notre plateau principal, passons à cette vue de table. Juste une touche. Supprimons cette contrainte en bas. Juste sélectionné hit backspace. Et puis laissons tomber dans un champ de texte et nous pouvons avoir ce champ de texte s'étirer sur l'ensemble de l'écran inférieur parce que c'est fouet sur la mauvaise chose. Leur ordre dit, le commande. Je l'ai mis dans une pile pour vous par accident pour qu'on puisse avoir cette vue de texte s'étirer de zéro ici, 20 ici qui devrait passer à travers tout le bas de l'écran et ensuite qu'est-ce qu'on va dio  ? Ou nous pouvons lui donner une position par rapport au fond pour pouvoir revenir à ça et avoir un zéro ici. Et puis nous pouvons aligner la vue de tableau sur le texte réel que vous afin que nous ne voulons pas vraiment fouets. Maintenez enfoncé. Contrôle, cliquez et faites glisser. Avoir un espacement vertical. Peut-être environ 10. Donc tu ne veux pas qu'ils se touchent et s'affaiblissent. Viens le jazz un peu plus tard. Mais nous avons notre champ de texte. Droit ? Ouvrons. L' assistant rédacteur en chef. Allons à partir de notre texte. Contrôle du champ clic et fait glisser une sortie, fouets contrôlés, fuites et buvés. Et comment devrions-nous appeler ce message ? Champ de texte en tant que sortie. On a ce contrôle idiot des erreurs. Cliquez et faites glisser, peut-être ici. Droite, triée. D' accord. Revenons donc à notre point de vue. Contrôleur. Nous avons notre champ de texte trié, et c'est simplement pour entrer du texte. Maintenant, les champs de texte ont cette propriété spéciale, et c'est ce qu'on appelle un délégué. Et vous avez déjà vu un délégué pour la vue de table. Donc, lorsque vous faites quelque chose sur la vue de table, il sait venir regarder dans cette instance actuelle de classe qui est fondamentalement tout ce code et il va trouver les choses qu'il doit faire. Champ de texte peut réellement avoir la même idée afin que nous puissions avoir le champ de texte de message, Ne pas déléguer égal à Donc maintenant cela signifie que quand quelque chose se passe dans le champ de texte comme nous appuyons sur retour, alors nous pouvons trier quelque chose avec elle. Donc, pour le moment, nous devons réellement ajouter ceci à notre liste d'éléments dans l'héritage du contrôleur de vue. Donc ce que nous avons besoin d'ajouter C'est vous I champ de texte délicate, et puis à l'intérieur d'ici nous pouvons avoir ce qu'on appelle le champ de texte devrait retourner. C' est celui que nous voulons, mais vous remarquerez qu'il y a des tonnes d'autres que vous pouvez utiliser ici devraient revenir. Donc, quand j'appuie sur retour sur mon clavier, il va faire quelque chose qui est très pratique parce que vous entrez votre texte, vous appuyez sur retour et il va nous envoyer le message maintenant. Évidemment, nous n'avons pas encore de plomberie pour l'envoi de la base de feu à l'intérieur de notre application, donc tout ce que nous allons faire ici c'est imprimer un message, non ? Chant s'est terminé. est juste pour nous que les développeurs ne me dérange pas. Peut-être que cette orthographe encore une fois. Donc on l'imprime, et ensuite on doit dire à notre clavier de s'en aller. Donc, l'édition de point de vue auto point point de vue et nous pouvons forcer cela à être vrai. Et puis ce champ de texte devrait revenir. Il faut retourner un vrai juste pour l'instant. Ok, alors Era devrait vraiment disparaître. Droit ? Donc nous sommes prêts à partir maintenant. Nous avons une table, Nous avons un champ de texte. Nous avons quelque chose qui se passe lorsque nous cliquons sur le bouton retour. Alors allons jouer et vérifions que maintenant je sais ce qui va se passer ici et ensuite si vous savez, mais vous êtes sur le point de savoir maintenant que nous avons notre champ de texte en bas. Ce n'est pas une bonne mise en page. On ne voit pas vraiment ce qui se passe. Notre clavier n'a pas vraiment éclaté. Je ne sais pas pourquoi c'est une époque que nous avons parfois avec ces choses. Donc ça va arrêter cette course, puis réessayer. Et le clavier devrait réellement apparaître à nouveau. C' est un peu ennuyeux de travailler sur la SIM. Parfois, le clavier ne s'affiche pas, donc je n'ai rien ici. D' accord, je vais juste arranger ce problème. J' ai peut-être besoin d'utiliser un vrai appareil juste pour le vérifier. Je te vois dans quelques secondes. J' ai découvert ce qu'il est si vous allez au matériel parce que vous avez probablement ce problème, vous allez au clavier. C' est sous le menu du simulateur. Connectez le matériel, le clavier. Quand vous l'avez allumé, parfois il ne montre pas le clavier, même si c'était avant pour nous. Alors va au clavier. Éteignez ça, qui est le gâteau de commande de décalage. Et maintenant, lorsque vous cliquez dans la boîte, vous avez un clavier avec lequel écrire, sorte que vous pouvez écrire des choses. Quoi qu'il en soit, vous pouvez retourner, et notre code de retour fonctionne parfaitement maintenant. Évidemment, ce n'est pas parfait parce que nous bloquons notre point de vue réel. Donc, c'est quelque chose qui va passer à la prochaine leçon. Comment empêcher ça de se produire. Mais juste comme une petite révision, expliquez juste ce que nous avons fait ici. Juste une dernière fois. Nous avons d'abord mis en place une vue de table. Nous en avons laissé un dans notre contrôleur de vue. On a laissé tomber une cellule là-dedans. Nous avons ensuite hérité de la source de données de vue de table, de la table, de quelques délégués. Nous les avons mis en place dans le contrôleur de vue, et nous avons mis en place les éléments de vue de table ici puisque ces trois fonctions nombre de sections, nombre de lignes dans la section et auto une ligne à et puis en ce moment nous sommes en théorie sortir des choses notre gamme de données basées sur le feu. Mais il n'y a rien là-bas, donc il n'y a rien sur notre table. C' est très bien. Donc ça va marquer la vue de la table de marque arrêtée. Donc, quand vous regardez ce code source, vous pouvez réellement voir ce qui se passe ici. Vue de table, fin droite. Super. Maintenant, nous avions cet article. Le champ de texte devrait revenir, et cela vient de vous. Je délégué champ texte. Et quand nous définissons notre délégué de champ de texte de message, qui était la boîte de message, le fond comme moi. Lorsque nous appuyons ensuite sur le bouton de retour de votre clavier, le visage se déclenche automatiquement. Et la beauté de cela, c'est que nous n'avons plus besoin d'avoir un bouton séparé pour envoyer un message. On peut juste appuyer sur le retour. Le message sera envoyé automatiquement. Je suis sûr que vous avez fait la même chasse Facebook ou vous appuyez sur Entrée. Il envoie un message que vous ne vouliez pas envoyer ou que vous n'avez pas encore terminé de modifier . Eh bien, nous allons avoir la même fonctionnalité ici. Donc, c'est à vous de décider si vous voulez le vérifier avant de l'envoyer ou non. Vous pouvez toujours donner à l'utilisateur un pop-up si vous le souhaitez. Mais de toute façon, c'est l'idée de base de ce que nous avons fait dans cette section. Nous sommes tous configurés pour recevoir des données et envoyer des données. Nous avons mis en place notre interface utilisateur. Maintenant, tout ce que nous avons à faire est de le coder. Mais avant de le coder dans la section suivante, je vais vous montrer comment résoudre un problème très commun, qui consiste à déplacer une vue vers le haut ou vers le bas lorsqu'un clavier est affiché afin que notre champ de texte ne disparaisse pas réellement. 103. M12 9 Déplacer un regard vers le haut ou bas lorsqu'un clavier est montré: à droite. Il est temps de ranger un peu avant d'entrer dans le code de base du feu . Ce que nous allons faire, c'est déplacer notre vue, notre vue principale vers le haut ou vers le bas, selon que notre clavier s'affiche ou non. Donc, si vous êtes un appel tel qu'il est actuellement, le clavier apparaît pour notre écran principal, envoyez des messages et nous ne pouvons plus voir les manuels, ce qui n'est pas de bons enfants. On peut voir ce qu'on écrit. Donc on va voir comment résoudre ça. Et nous allons le résoudre d'une manière beaucoup plus intelligente que la façon dont vous pourriez rencontrer sur Internet. Nous allons le résoudre en utilisant des contraintes sur un fichier swift de classe de contraintes personnalisées que nous allons réellement créer. Alors ouvrez le code X et suivez. droite. Donc, je suis dans notre planche principale, et si vous appelez ma vue principale, nous avons une vue de table et nous avons ce petit champ de texte. Maintenant ce champ de texte, ce champ de texte de message a quelques contraintes. Et si nous allons sur le côté droit et que nous cliquons sur l'icône de la règle, nous pouvons faire défiler vers le bas, et nous pouvons voir les quatre de ces contraintes Maintenant. Ce que nous aimerions faire, idéalement, idéalement, c'est changer le guide de mise en page du bas en un guide plus fluide. Donc, celui qui se déplace de haut en bas selon qu'un clavier est réellement affiché ou non. Et la façon dont nous allons le faire est de lui donner une classe personnalisée que nous allons programmer . C' est un peu plus une façon avancée de programmer, mais vous en aurez le coup assez bientôt. Si nous double-cliquez sur cette contrainte, nous pouvons alors sélectionner l'inspecteur de classe et nous pouvons changer la classe à laquelle il appartient. Donc, pour le moment, c'est une mise en page standard et droite, mais nous sommes sur le point de créer notre propre contrainte personnalisée pour s'adapter à cela. Alors faisons ça maintenant. Cliquez avec le bouton droit de la souris sur notre nouveau fichier de projet Suivant, et appelons cela une contrainte de disposition du clavier. Ok, maintenant, parce que c'est une chose de mise en page, c'est à voir avec notre interface utilisateur. Nous devons d'abord importer u kit. Nous avons donc accès à toutes ces classes, méthodes et éléments, etc. Ça va être une classe publique, et on va l'appeler exactement le nom du clavier de fichier. Que faire si je l'appelle contrainte de mise en page et que cela va hériter de la contrainte de mise en page Ennis  ? Et vous le savez parce que dans votre Story Board, lorsque vous cliquez sur cette contrainte dans la classe en haut, à droite, elle vous montre la contrainte de mise en page Ennis, C'est pourquoi cela doit en hériter. Ok, donc on a notre classe de base. Maintenant nous avons besoin de quelques variables et la 1ère 1 on va garder une trace. C' est le décalage de la vue ou du clavier. Donc ça va être un décalage loin, et ça va être hors de type C G. Flint. Maintenant, ce n'est pas seulement un flotteur, c'est un flotteur de CD parce que c'est quelque chose à voir avec le noyau. graphismes et les graphismes principaux ont quelque chose à voir avec l'écran que nous montrons, donc c'est quelque chose que vous devez surveiller. Occasionnel. Vous pouvez convertir entre flotteur et flotteur CG, mais c'est le type standard que nous voulons. Donc on va commencer par zéro. Nous n'avons pas de compensation. Ensuite, nous devons garder une trace de la hauteur de nos claviers jusqu'à présent, hauteur visible du clavier et encore une fois, c'est un flotteur C G, et ça va être zéro pour commencer, parce que notre clavier ne s'affiche pas réellement à la stat. Eh bien, quelle est la prochaine ? Eh bien, nous allons en fait remplacer quelque chose à l'intérieur de cette classe, et ça s'appelle éveillé de Nick maintenant. En fait, si je viens de revenir ici et que je tape cela afin que vous puissiez voir la description prépare le récepteur pour le service après est chargé à partir d'une archive du constructeur d'interface ou d'un fichier ned. En gros, tout cela signifie que tout est chargé, nous sommes prêts à partir. On peut accéder aux variables, non ? Donc la première chose que vous devez faire quand vous faites ça, c'est que vous devez dire, super fléchette éveillée de nouveau. Donc, cela va d'abord exécuter le réveil standard à partir des fonctions voisines. Et puis après cela, nous pouvons mettre nos grottes de code personnalisé. La première partie de notre code personnalisé est offset. C' est égal à une constante. Maintenant, il y a un moyen de faire répondre notre code ou plutôt, laissez-moi reformuler que ce que nous devons faire est que nous devons nous inscrire lorsque le clavier apparaît et disparaît. Et la façon dont nous le faisons est d'appeler un centre de notification et nous saisissons l'instance par défaut . C' est donc celui auquel nous avons actuellement accès, et nous allons ajouter un observateur à cela. Et cet observateur va se déclencher chaque fois que cette notification est appelée. Donc, si ça semble un peu déroutant, ne vous inquiétez pas à ce sujet. On va le traverser petit à petit. L' observateur est cette classe actuelle, puis notre sélecteur. Je pense que tu l'as déjà vu. Je vous l'ai déjà montré. Est la méthode réelle qui va montrer lorsque notre notification est appelée. Donc, en fait, c'est mieux si je tape tout ça et que je t'explique ce qui se passe. Donc on va taper le sélecteur et de quoi avons-nous besoin après ça ? Eh bien, ce sélecteur, nous devons spécifier entre parenthèses et ce que nous voulons. Nous voulons une contrainte de disposition du clavier. Donc c'est cette classe actuelle, et puis nous allons appeler le clavier montrera qu'il y aura une erreur ici parce que nous n'avons pas encore créé cela. Ok, maintenant cela a besoin d'un nom qui, je crois, est une chaîne pour juste planer ici. Ça devrait nous le dire. Non, ce n'était pas le cas. Mais je crois que c'est une chaîne, et nous pouvons lui donner une notification de nom par défaut N. Ne nommez pas les fléchettes et nous vous voulons. Je vais montrer le clavier. Donc, cela lui donne juste une balise standard si vous le souhaitez, donc nous savons comment le référencer. Et puis l'objet est clou. Donc, ne nous inquiétons pas pour l'instant. Droit ? Donc, tout ce qui a fait ici est que j'ai dit que je me suis abonné au centre de notification à l'intérieur de cette classe partout où cette classe est effectivement appliquée ou que l'objet créerait à partir de cette classe. Et j'ai dit qu'à chaque fois qu'il arrive quelque chose à voir avec toi, je vais montrer le clavier. Alors j'aimerais que vous tiriez cette méthode. Donc, d'une certaine façon, j'écoute que quelque chose se passe orteil. Et quand c'est le cas, je sais quoi faire. Droit ? On doit copier cette Onda. On doit le coller. Pourquoi ? Parce que nous avons également une notification différente, c' est-à-dire quand notre clavier disparaît. Donc, le clavier sur ce est connu comme va se cacher. Donc, nous allons changeables Cela montre le clavier de masquage orteil va se cacher. Ok, donc nous avons déclenché nos méthodes et nous avons souscrit les notifications. Maintenant, avant que nous ayons vraiment raison, le clavier va se cacher et montrera le code ce que nous devons faire est de ne pas oublier de faire quelque chose d'extrêmement important, très important. Et c'est pour supprimer ces notifications. Si l'objet créé à partir de cette classe est initialisé, c'est-à-dire détruit à toutes fins utiles, et la façon dont nous faisons cela est que nous lançons le D dedans et vous remarquerez la description du haut dit effectue un nettoyage avant un est de alloué. Donc, cela nous donne une chance d'enlever toutes les ordures que nous ne voulons pas traîner et accaparer notre mémoire et peut-être tirer des événements sur la vue. Le contrôle, c'est que ce n'est plus là. Donc nous devons nous débarrasser de tout le centre de notification, arrêter les téléphones, et nous allons enlever l'observateur, qui est lui-même. Donc, nous nous débarrassons de toutes ces notifications si nous détruisons cet objet. Ok, Maintenant, nous pouvons écrire ces fonctions. Faisons ça par ici. Maintenant, cela a laissé de côté les jours de l'objectif c plus tard. Je ne suis pas trop sûr de ça, que je n'ai pas une explication complète. n'ai pas regardé, mais je sais que vous devez déclarer que c'est un objet de fonction de siège et parce que hé, soyons aussi bons que moi. Je ne sais pas tout. Donc, nous allons avoir un clavier va montrer. Et ce que nous voulons faire ici, c'est que nous voulons saisir la notification qui vient avec elle . Donc ce que nous allons faire est de taper sous notification scolaire, ce qui est de type notification dans une ouverture et fermeture de nos accolades. Avant de l'oublier, je vais vous expliquer ce que signifie le trait de soulignement dans une seconde, mais nous devons maintenant aller en match. Ce clavier s'affiche pour inclure cette notification. Donc, dans le clavier va montrer ouvrir et fermer vos supports et puis à l'intérieur, nous allons réellement passer au-dessus de Underscore Cola. Et maintenant, c'est un bon endroit pour expliquer pourquoi nous avons mis un trait de soulignement. Généralement dans Swift mettrait un trait de soulignement, et je crois que c'était de Swift trois. Cela a commencé à se produire peut-être rapidement pour vous. Je ne me souviens pas exactement, mais nous mettons un trait de soulignement quand nous ne voulons pas vraiment nommer l'argument que nous passons. Donc on met un trait de soulignement, et dans cette section, je crois que j'ai raison, mais ne me cite pas dessus. Nous disons que tout ce que vous avez reçu que sans nom va maintenant être nommé notification, et ce sera de type notification. Et nous savons que ce sera le cas parce que le centre de notification passe et la notification. Donc c'est un gros alambiqué, et je m'excuse pour le nom d'Apple, pas pour moi à sa façon, nous devons faire des choses qu'ils font comme ça. Je pense que ce serait mieux que nous soyons obligés de mettre ça ici au lieu de la sous-école . Mais fondamentalement, le trait de soulignement signifie que l'argument est passé. Il n'a pas encore de nom. Et donc à l'intérieur, nous avons maintenant une chance de lui donner un nom en mettant à nouveau le soulignement . Je n'en suis pas trop sûr, mais je crois que c'est exactement ce que tu ne peux pas l'être. Pas sûr et dire exactement. Mais je crois que c'est ce que c'est. Si tu le découvres, alors n'hésitez pas à me le dire, et je le ferai savoir à tout le monde et, bien sûr, te donnerai du crédit, non ? Donc nous l'avons fait maintenant, Maintenant, ce que nous devons faire est d'obtenir les informations de la notification. Maintenant, c'est facultatif. Donc, si laisser l'information utilisateur est égal à la notification de notification ou d'ification et c'est le passé sur un Salo. Il casse dans Dr User Info, et cela vous renvoie toutes les valeurs et les objets liés à cette notification. Donc si nous obtenons ça, alors nous allons continuer. Et qu'est-ce qu'on veut obtenir ? Eh bien, on veut vraiment enlever la taille du clavier pendant ou juste avant qu'elle ne s'affiche. Maintenant, lorsque vous recevez ces notifications, le clavier ne s'affiche pas encore. Mais cela vous dit à travers la notification, je suis sur le point de montrer à l'utilisateur et à l'intérieur de cette notification, vous pourriez obtenir tout un tas de valeurs et vous pouvez regarder les docks pour cela. Mais je vais te sauver de cette douleur. L' une de ces valeurs vous indique où le clavier va se terminer, donc pour le moment il est animé. Il va de ne pas montrer à complètement montrer et à l'intérieur de là il vous dit où il commence et où il se termine. Donc on va essayer d'obtenir le point final. Encore une fois, c'est facultatif. Si let et cela est connu manteau vraiment comme une valeur de trame. Donc, le clavier a un cadre autour, si vous voulez, et nous essayons juste d'obtenir les valeurs de là où il est et de quelle taille il est. Ok, donc si la valeur franche est égale à et que nous obtenons nos informations utilisateur, ce sont toutes les données qui sont venues avec elle et qui ont ensuite fonctionné. Nous devons le faire ou nous devons obtenir une paire de valeur clé à partir de ça. Et ce nom très long, c'est toi. Je claviers cadre et l'utilisateur dans la clé. C' est un nom long, n'est-ce pas ? Droit ? Alors il dit, où va finir le clavier ? Donnez-moi la valeur de cette clé. Et encore une fois, c'est facultatif car et nous devons lancer ceci comme ce qu'on appelle une valeur Ennis, et c'est une valeur générique. Ça pourrait être n'importe quoi de bien. Donc, nous avons maintenant notre endroit où notre clavier va finir. Maintenant, nous pouvons réellement saisir le cadre du clavier, qui vient de notre valeur de trame dot cg valeur détruite Donc il retourne les graphiques de base Rappelez-vous, graphiques de base a à voir avec vous. Je gamine et vous tous, j'ai des trucs qu'on voit, et ça rend la structure rectangulaire de cette famille. Donc, en gros, c'est juste une position et une taille que nous sortons de ça, non ? Je suis désolé. C' est un très long enroulé, mais à l'avenir, quand vous faites des sorties ou que vous avez à faire est de copier ce fichier et vous êtes triés pour votre clavier , se déplaçant de haut en bas. C' est un excellent moyen d'économiser beaucoup de temps. Nous avons peur, mais nous n'avons pas seulement besoin de la largeur ou de la taille. On a besoin des hauteurs parce qu'on bouge des choses de haut en bas. Donc nous allons mettre nos claviers en hauteur visible et je ne suis pas sûr que oui, nous allons régler ça maintenant parce que nous avons le cadre où ça va finir. Ainsi, la hauteur visible du clavier est égale au cadre. On vient d'avoir la taille du point. Ne fais pas bien. Et bien sûr, inversement, si vous voulez le savoir, vous pourriez en fait obtenir la largeur parmi tout un tas d'autres variables si vous programmez autre chose. En ce moment, la prochaine chose que nous allons faire ici est la constante de mise à jour auto point. Et nous ne l'avons pas encore créé, donc nous allons le faire maintenant, et nous allons aussi apprendre exactement à quoi il sert. Donc la constante de mise à jour de la fonction et ce que nous allons faire est de nous rappeler que nous avons un flotteur de CD constant est égal au décalage, plus la hauteur visible du clavier. Donc nous gardons juste une trace de toutes les hauteurs que nous calculons. Parce que, rappelez-vous, nous devons déplacer les choses de haut en bas selon la taille du clavier. Maintenant, voici quelques mauvaises nouvelles pour vous est que le clavier est la taille différente sur la plupart des appareils IOS , en fonction de la taille de l'écran, la résolution de rotation, tout ce jazz. Donc, vous devez être prudent, et vous devez le faire par programme comme ceci. Vous ne pouvez pas simplement dire déplacer le clavier de 200 points d'écran parce que cela pourrait être une erreur sur vos différents appareils, n'est-ce pas ? Donc je ne vais pas trop expliquer ce qui se passe dans ce dossier parce que c'est assez compliqué, et je ne veux pas vous accabler. Juste basé. Je vous ai dit les bases de ce que nous faisons, qui est de déplacer des choses en fonction de la hauteur du clavier. C' est tout ce que tu as vraiment besoin de savoir pour y aller, non ? Alors, quelle est la prochaine ? Après avoir mis à jour cette constante ? Maintenant, on va avoir une déclaration de cas de changement. Tu devrais savoir ce que c'est en ce moment. Et la chose que nous allons changer. La chose que nous comparons est l'information utilisateur, et nous allons récupérer la valeur de cette information utilisateur qui correspond à vous I clavier, animation, durée, durée, touche d'info utilisateur. Et la raison pour laquelle nous saisissons cela est parce que le clavier va s'animer sur une certaine période de temps. Et on a besoin de savoir ce que c'est, et ça va être un numéro d'Ennis, accord ? Et puis nous avons également besoin d'obtenir des informations utilisateur, Est-ce que vous, Je clavier, animation, courbe, touche d'information utilisateur. Et encore une fois, ce sera un numéro N S. Et nous allons comparer ces deux articles dans notre étui de commutation. Si tu n'es pas sûr de ce qui se passe, c'est bon. Si tu n'es pas sûr de ce qui se passe, Je ne veux vraiment pas m'endetter parce que je ne pense pas que tu en aies besoin. Je pense qu'il est assez bon pour réellement ka pénis et juste obtenir une pratique rapide tout en étaient à elle, parce qu'il est assez compliqué. Donc, le premier cas est où nous laissons pointer quelques fléchettes de durée, courbe ou en avons obtenu. Plutôt, cela devrait être point certains et c'est courbe. Ok, vérifie juste mes parenthèses là-bas. C' est un excellent travail. Donc, dans ce cas, nous avons une durée sur la courbe. Nous allons créer des options. La variable est égale à vos options d'animation de vue oculaire, qui a une valeur brute hors courbe, médecin, Vous en valeurs afin que vous puissiez voir ce que je veux dire quand je dis que ce truc est compliqué, même je ne comprends pas exactement tout ce qui se passe ici. J' en ai l'essentiel. Mais je ne pense pas que tu aies besoin de comprendre ça. Vous avec vous Dunks animer et nous voulons animer avec délai de durée, options, animations, durée, délai, options. Je crois que c'est celle-là. Oui. Options de retard. Oui. Super. Donc, avec la durée est un intervalle de temps hors durée, sombres, double valeur. Et le retard lui-même sera nul. Les options de celle que nous venons de créer sur les animations viennent de frapper. Entrez sur cela et il vous donnera un petit bloc co à compléter. Donc, les animations sont votre fenêtre d'application I. C' est une fenêtre ? C' est votre demande. Ne partagez pas ce que nous voulons. Donc, si nous regardons juste ce qui dit que shed retourne, l'instance singleton que vous pouvez penser à ceci est comme le gros mauvais conteneur qui contient votre application actuelle. Donc partagé sombres, tâches de fenêtre clés, mise en page si nécessaire. Donc ce que je vais faire, c'est expliquer des morceaux ici parce qu'il y a beaucoup de choses en train de se passer. Disposez si nécessaire, prendra toutes les vues à l'intérieur de votre contrôleur de vue, votre vue à l'intérieur du contrôleur de vue, si vous le souhaitez. Et il est dit : Dois-je exposer tout cela parce que quelque chose a changé ? Et ce qu'on dit, c'est , c' que tu dois le faire. Donc c'est ce que la mise en page, si nécessaire, signifie Ok. Et une fois que tu as fait ça, on pourra revenir. Et sur le chaume d'achèvement, cliquez sur ceci. Nous avons des taureaux que nous pouvons appeler ça fini, et nous pouvons laisser ces parenthèses. Je pense que nous n'avons pas vraiment besoin de code une fois que c'est fini. Ok, OK. Donc fondamentalement, dans ce cas ici, ce que nous disons c'est que je veux que vous animiez les choses et que vous déplaciez les choses si nécessaire, parce que quelque chose est apparu à l'écran. Et le quelque chose dans ce cas se trouve être que quelque chose qui est attaché à cette contrainte de mise en page , cas où il ne vous inquiétez pas à ce sujet. Pour l'instant, nous allons juste continuer et faire semblant de savoir exactement ce qui se passe avec tout ce code sur la valeur par défaut est juste de casser. Arrête d'exécuter le commutateur, non ? Donc, c'est beaucoup de code pour juste un clavier va montrer, mais ce code va former la base à peu près toutes les applications que vous créez qui nécessitent une entrée textuelle. Vous aurez besoin de déplacer la vue de haut en bas, et cela va le faire pour vous très simplement. Ok, maintenant, quoi avons-nous besoin ici ? Eh bien, nous devons copier ceci va montrer la commande, voir, et nous devons couper coller et le changer au clavier va cacher la cause rappel. Si nous appuyons sur retour, le clavier disparaît, et nous devons tout déplacer à nouveau. Donc, nous allons accélérer cela en dessous ici et changeons ce nom pour le clavier va se cacher. Et encore une fois cela passe sur la notification. Et qu'est-ce qu'on veut ici ? On sait que le clavier se cache. Donc, tout d'abord, nous devons définir la hauteur visible de nos claviers à zéro parce que nous savons que ça va disparaître. Ils ne font aucun contrôle. On sait que ça va arriver. Et puis nous devons mettre à jour la constante. Donc, nous savons que nous pouvons garder une trace de la hauteur du clavier est que Et puis si nous pouvons obtenir nos informations utilisateur hors d'ici, nous n'avons pas vraiment besoin d'avoir cette partie de cadre. Nous ne nous contentons pas de le suivre parce que nous savons qu'il disparaît, donc nous pouvons utiliser tout l'écran pour que nous puissions simplement le supprimer. Nous pouvons également supprimer la constante de mise à jour ici. Et puis nous pouvons changer les animations que c'est la même chose. Nous gardons une trace de ces animations et des courbes à voir avec les animations. Et encore une fois, c'est compliqué. Donc on va jeter un coup d'œil à chaque instant. Il suffit de le copier, croyez-moi parfois mieux juste pour copier. Nous avons donc une certaine durée. Une courbe. Oui, c'est exact. Nous avons nos options. C' est exact. Je pense que je vérifie juste ma propre santé mentale. Nous allons animer les applications d'options de retard, et nous disons que quelque chose a disparu. J' aimerais donc que vous disiez ceci si nécessaire. Et quand c'est terminé, où bien, on est bon d'y aller, non ? Donc je pense que c'est plus ou moins fait, sauvegardez toutes les erreurs que nous n'avons pas encore vues. En ce moment, nous arrivons à la vraie colle qui va attacher ça à nos quelques-uns parce que c'est une contrainte. On peut aller à notre planche principale. On peut aller dans notre champ de texte. Nous pouvons aller au fond parce que c'est celui qui nous intéresse. On veut déplacer ça de haut en bas. On peut double-cliquer dessus. Nous pouvons aller à l'inspecteur de classe et nous pouvons maintenant définir cette contrainte de mise en page et appuyer sur Entrée une fois qu'il a sélectionné enregistrer vos articles. droite. Donc, avant de regarder cela en cours d'exécution sur la sim, expliquez ceci, grosso modo un aperçu général parce que je pense que c'est plus utile pour vous. Nous avons défini une contrainte et la contrainte que nous avons définie. Nous nous sommes programmés et nous l'avons programmé pour qu'il écoute quand le clavier va s' afficher ou qu'il va se cacher. Et nous le savons parce que c'est le nom de la notification à laquelle nous avons souscrit. Ensuite, notre classe ira en feu hors du spectacle des roues et va cacher des objets. Il va récupérer les données dont il a besoin à partir de la notification qui nous dit tout ce qui se passe . Et à partir de cela, nous pouvons saisir la hauteur des claviers, et ensuite nous pouvons vérifier ce qui se passe avec le cas du commutateur, et nous pouvons déplacer les choses avec une animation qui correspond réellement à l'animation du clavier. Parce que, vous savez, lorsque vous cliquez sur le clavier, il glisse vers le haut ou à travers ou tout ce que fait IOS, et ce que nous aimerions faire est de déplacer notre vue d'une manière animée pour correspondre au clavier afin que nous pourrait simplement déplacer toute la vue cette année, je pense, mais cela serait nul. Ça aurait l'air vraiment mauvais et ça irait comme, vraiment saccadé bang. Il est là et le clavier glisserait vers le haut. On ne veut pas faire ça. D' où la complexité ici quand nous obtenons réellement la durée de l'animation sur la courbe de l'animation interne maintenant par courbe d'animation. Imaginez un graphique d'une onde sinusoïdale ou d'un signe co ou quoi qu'il monte vraiment lentement pour commencer puis tire vers le haut, revient vers le bas et ralentit à la fin. Et en termes d'animation. C' est ce dont nous parlons quand nous le disons courbe, parce qu'une animation ne commence pas seulement à aller à une vitesse constante et à arrêter ce qui semble très daté de nos jours. C' est une courbe, donc si vous regardez mon curseur, il monte très lentement sur un haut plus rapide vers le bas plus vite, puis descend très lentement et s'arrête. Et ça fait beaucoup. Ok, fais une pause rapide, mes chapeaux de gorge. C' est beaucoup de parler. Je vais frapper le jeu et voyons si j'ai fait mon travail correctement en déplaçant ce clavier de haut en bas. On y va. Donc on est déjà enfermés. Cliquez sur cet élément en bas et là, nous avons notre clavier qui bouge pour que nous puissions taper des trucs. On peut appuyer sur retour et c'est parti. Maintenant, ce que je veux que vous fassiez une attention particulière, c'est quand je clique sur ce champ de texte, tout anime la même vitesse. Et je veux que vous remarquiez que l'animation commence lentement, accélère puis ralentit à la fin. Il suffit de le regarder attentivement. Elle remarquera que ça ralentit en entrant dans la station. Si vous aimez les trains, ralentit, accélère, ralentit. Ok, donc c'est, je dirais simple, mais ce n'était pas si simple, est-ce pas ? C' est une excellente façon de faire monter et descendre les choses maintenant. J' ai découvert cette méthode quelque part sur Stack overflow sur. Je ne sais pas où c'était, mais c'était une licence open source. Nous sommes donc libres d'utiliser ce code avant cela. J' avais l'habitude de le faire dans le contrôleur de vue lui-même, ce qui est une façon de le faire. Vous avez limité les références à cette façon de masquer et d'afficher le clavier et de déplacer la vue par programme de cette façon. Mais je pense que c'est un moyen fantastique. Modifiez simplement vos contraintes pour déplacer les choses vers le haut et vers le bas, puis voyez ce qui se passe avec vos animations et faites bouger votre vue. Faites correspondre vos animations. Je sais que cela a été une longue conférence. Bien joué pour l'avoir sorti. C' était difficile. D' accord, je te verrai dans la prochaine. 104. M12 10, les données à l'envoi à et à partir d'une base de données d'une forme d'un firebase et: Maintenant, nous allons arriver à la viande réelle et les os de cette application, qui envoie et reçoit des données en utilisant la base de feu vers et depuis. Et nous allons aussi voir comment attacher un auditeur ce qu'on appelle un auditeur à nos données basées sur le feu . Donc, quand quelque chose change dans le cloud, notre application sera notifiée et elle recevra le nouvel objet ou l'ancien objet qui a été modifié afin que nous n'ayons pas à aller chercher le serveur pour les données. Il nous le livre automatiquement. C' est un peu comme BlackBerry utilisé pour fonctionner. Ils vous enverraient votre email, et c'est la même chose qui se passe ici. Fire Base envoie les messages à votre application, alors regardons comment cela est fait maintenant. La première chose que nous devons considérer est ce fichier coeur, parce que firebase change assez fréquemment, et il y a beaucoup de changements entre les versions. Je pense que ça s'installe maintenant qu'il devient un peu plus mature. Mais à l'intérieur de notre application, lorsque nous importons normalement les fonctions Firebase qui déclenchent des éléments de base, ce que nous allons réellement importer est la base de données basée sur le feu. Mais avant de faire un codage, je veux juste vous donner un moyen de m'assurer que la base des dates Firebase est disponible. Techniquement, si nous ouvrons notre fichier pod sur n'utilisez pas l'éditeur de texte pour le faire exploser utilisé. Nous avons un autre fichier. Nous avons cinq dates de base déjà disponibles, et vous devez vous assurer que vous avez cette ligne disponible. Parce que, par exemple, si je commente cette ligne, je l'enregistre. J' ai quitté le code X. Je vais à notre terminal et nous CD dans notre projet comme celui-ci. Ne vous inquiétez pas. Tu n'as pas à faire ça toi-même. Et si je dois enlever ça ? On y va. Et nous allons jouer un rôle dans le stand. Donc ça va supprimer notre base de données, n' est-ce pas ? Donc nos plans sont installés. Maintenant, si nous allons dans notre espace de travail et cela, je fais cela parce que c'est un problème commun que les gens rencontrent et me envoient un message, c'est qu'ils vont ensuite à leur contrôle de vue. Et ils disent maintenant que j'ai besoin d'importer ma base de données firebase et vous allez avoir une belle petite ère rouge, probablement à partir du code X disant que cette base de données firebase n'existe pas. Donc, si j'avais la commande être et essayer de construire cette construction a échoué et qu'il n'y a pas de tel module, et c'est normalement parce qu'à l'intérieur d'ici, nous n'avons pas inclus cette partie. Mais heureusement, nous l'avons fait. Donc, si vous traversez ce type d'époque, changez votre profil pour correspondre à ce dont vous avez besoin afin que nous puissions quitter Xcrapaud. Nous pouvons installer à nouveau parti, et cette fois il ira et recueillir cinq bases de données basées pour nous. Ok, donc la raison pour laquelle firebase décompose réellement les choses, Donc beaucoup de modules différents parce que vous n'avez pas nécessairement besoin de tous les modules que la base de feu peut fournir. Vous avez besoin de dates hors base, et vous avez besoin des fonctions de base Firebase comme nous pouvons le voir ici, non ? Maintenant, nous pouvons passer à l'envoi et à la réception des données. Une fois que vous savez que vous avez ce pot correct, passez à votre contrôleur de vue principal et écrivez cette ligne dans la base de données firebase d'importation. Vous devrez peut-être reconstruire votre application, et lorsque vous le faites, l' erreur devrait disparaître car la base des dates est réellement disponible. Maintenant, la première chose que nous avons à faire est en fait de nous abonner à notre base de données sur la base incendie. Maintenant, si vous vous souvenez, Fire base est déjà mis en place par notre délégué d'application lorsque nous avons mis en place firebase app doctor configure et qui est allé chercher Google surface info dot liste p et il fait toute la magie pour nous donc nous pouvons aller directement pour voir le contrôle et nous pouvons tout simplement commencer à l'utiliser. Donc, avons une fonction dans la fonction ici et appelons cette configuration firebase. Nous pourrions changer le nom de cette fonction pour être un peu plus descriptif plus tard, mais cela fera pour l'instant. Ok, maintenant, qu'est-ce que Firebase nécessite ? Eh bien, la première chose qu'il a réellement besoin est une référence à la base de données. Donc, cela va être une variable de niveau de classe. Donc quelque part près du sommet, avons notre ref, et ce sera une référence de base de données de type off. C' est juste une référence Teoh à la base des dates que nous n'avons pas. Je vais juste faire ça Ah, ou ce que je fais ici. Quand je mets le point d'exclamation, c'est le cas. Je dis que c'est facultatif, mais c'est certainement là. Donc on laisse ça à ça, et bien sûr, j'aurais pu faire la même chose ici si je le voulais. Ok, donc on a notre référence. Ensuite, nous avons besoin d'une autre chose, qui est un handle de la base de données auquel nous essayons d'accéder de la partie de la base de données ou d'essayer d'accéder. Et c'est pour que plus tard, quand nous voulons supprimer cet écouteur, nous avons une référence à la poignée. Donc ça va être pour notre manche de riff. Et cela va être de type, comme vous l' avez deviné handle de base de données. Si tu te demandes comment je sais tout ça, je ne sais pas. C' est seulement parce que j'ai regardé la documentation sur Fire Base et ça vous dira comment faire tout cela. Et il aura des exemples sur get hub ainsi que pour vous de suivre. Droit. Donc nous avons les deux articles. Nous avons des références basées sur les dates, et nous avons la poignée pour plus tard. Donc, la première chose que nous allons faire est de créer cette référence Ref est égale à la base de données, et c'est assez ennuyeux parce que l'ancienne version de la base de feu serait pré-écrit ceux-ci avec données f i r f i R. Donc vous saviez ce qu'ils étaient je pense en mettant la base de données dans, cela rend très déroutant pour beaucoup de gens. Cela pourrait être n'importe quelle ancienne base de données de toute façon, et c'est ce que c'est. Nous devons vivre point de base de données et il y a la première option est la base de données. Donc, nous obtenons la référence actuelle à elle. Et cela vient du délégué APP. Techniquement, tout est configuré ici lorsque nous configurons notre application. Donc nous avons notre base de données, et ensuite nous allons saisir la référence à elle. Ok, donc nous avons notre référence triée. Ensuite, nous allons mettre en place notre handle de référence. Et ce que nous faisons dans le handle de référence, c'est que nous allons mettre en place une place dans la base de données que nous vous écoutons activement afin que nous puissions recevoir les messages dont je vous ai parlé dans l'introduction. Ok, donc ça va être une référence, ne fais pas ça. Ce sera enfant et enfant signifie simplement que nous allons un niveau dans la base de données que nous allons nommer, donc je veux référencer l'endroit appelé messages. Maintenant, si vous n'êtes pas tout à fait sûr de ce que cela signifie en ce moment, parce que c'est un gros résumé et je m'excuse pour cela, vous comprendrez ce que cela signifie quand nous commençons à utiliser l'application et nous pouvons aller regarder notre base de données basée sur le feu et pouvez voir ces messages sur les dossiers qui sont créés car cinq X donne United Explorer à utiliser. Disons qu'on a accès à ces messages et que ce qu'on va faire, c'est qu'on va observer ces messages. Ok, donc nous voulons la première option et il y a plusieurs options. Vous pouvez voir cela observer et nous demander une heure de l'événement. Donc, vous appuyez sur Entrée, alors nous pouvons mettre point et il vous montrera les types d'événements que nous avons maintenant, Child ajouté signifie exactement comme cela sonne. Nous avons ajouté un élément de données sous cette rubrique à partir des messages. Nous avons ajouté un objet en dessous. On peut changer d'enfant. Nous pouvons avoir enfant éloigné ou retiré, dit Il ya beaucoup d'options que vous pouvez vous abonner maintenant je crois pour la mémoire de l'enfant a changé. Nous allons aussi vous donner enfant ajouté, mais je ne suis pas sûr si totalement jusqu'à vous comment vous pourriez comprendre enveloppements. Vous choisissez ces options en fonction de vos besoins. Mais normalement, Child ajouté, est ce que vous voulez parce que les gens ne modifient pas leurs messages après les avoir envoyés. Donc, nous voulons juste savoir quand un nouveau a été ajouté Donc enfant à elle. Et puis nous pouvons effectuer quelque chose avec cet instantané de données quand nous recevons réellement que vous élément afin que nous puissions double-cliquer dessus et nous recevrons un instantané de données nous renvoyons, puis nous pouvons faire quelque chose avec cet instantané. Donc ce que ça fait, c'est dire quand tu auras des données, me les envoies. Et puis ce bit dit, une fois que vous avez reçu les données, faites quelque chose avec elles. Donc, à l'intérieur de ce bloc de code étaient garantis d'avoir cet instantané de données que nous avons réellement demandé . Ok, alors qu'est-ce qu'on va faire ? , Rappelez-vous, nous avons configuré ces messages, qui est un instantané de données, que nous puissions simplement ajouter ceci à nos messages. Les messages ne modifient pas un nouvel élément, qui est la date d'un instantané. Et cela va nécessiter de soi. C' est toujours satisfaisant quand j'ajoute les choses que je sais. Le code X va signaler une erreur. Mais j'ai réussi à le faire avant que le code X n'arrive à marquer. C' est satisfaisant en quelque sorte comme un rythme. Un ordinateur. Je sais que c'est puéril. Ok, Maintenant vient le peu délicat parce que nous avons déjà configuré notre vue de table. Droit ? Et cela ne va pas s'exécuter automatiquement à nouveau. Nous devons en fait l'appeler explicitement. Et il y a quelques façons de le faire. La première façon de penser est de recharger tout le lot. Mais si vous y pensez, c' est une sorte de mémoire intensive. On ne veut probablement pas faire ça. Vous n'avez qu'un nouveau message. On devrait juste insérer le message. Et comme il s'avère, ou vous devez faire est d'avoir vous-même une vue de table. Et il y a une fonction pour faire cela insérer Rose à. Ok, alors à où veut-on insérer cette corde ? Eh bien, nous voulons insérer la ligne à un chemin d'index, comme ça et nous allons au lieu de cela, elle a mangé un chemin d'index, et ce sera la route. On va lui dire quelle rangée était insérée. Donc, nous voulons insérer lui-même les messages de points ne comptent pas moins un. Donc on va compter le nombre de messages. On va en soustraire un, et c' est là qu'on va insérer notre tout nouveau Roath. Maintenant, il y a un autre argument dont il a besoin. Il a besoin de savoir quelle section parce que nous pouvons réellement tout diviser en sections dans notre vue de table, nous n'avons qu'une seule section. C' est la première section, qui est à l'index zéro. Ok, et puis avec Donc, c'est juste passer au-dessus de ça et voir ce que ça veut dire. Voulons-nous une animation de vue ? Eh bien, nous allons juste avoir point Voyons ce qu'il suggère après l'alignement. Il y a des tonnes d'animations que vous pouvez ajouter à cela, et il vous indique ce qu'il fait. Mais nous allons juste définir cela comme automatique, donc il choisit un style d'animation approprié pour vous. C' est toujours la chose la plus sûre à faire lorsque vous faites ce genre de choses pour obtenir une sensation cohérente dans votre application. Excellent. Donc on a fait tout ça. Maintenant, nous devons juste appeler, mettre en place la base de feu, à l'intérieur de notre vue, a fait la méthode de chargement, et puis je vais juste faire ça maintenant juste un double contrôle. Où, quoi ? Nous n'allons pas avoir de données dans ce compte en ce moment, mais nous ne nous attendons pas à ce que des données apparaissent car il n'y a pas encore de messages dans notre base de données Firebase . Ok, alors qu'est-ce que c'est que ça charge ? Nous allons juste aller à notre base de pompiers et vous cliquez sur l'icône de la base de données, et cela nous montrera notre base de données et nous montrera que nous n'avons rien à l'heure actuelle. Nous pouvons cliquer sur Plus, et nous pouvons ajouter quelque chose si nous le voulons, mais nous ne le ferons pas. Ce n'est pas une excellente façon de faire votre programmation. Vous devriez le faire à partir de vos applications. En outre, notification par défaut. Les règles de sécurité exigent que les utilisateurs soient authentifiés. Ça veut dire que personne ne peut écrire cette base de données à moins qu'ils ne soient authentifiés. Et nous savons que nous pouvons changer ça. En fait, en allant aux règles en haut ici, les règles nous disent que lire et écrire pour lire et écrire, l'authentification ne doit pas être égale à non, je mange. L' utilisateur doit être authentifié. Vous pouvez simplement supprimer complètement ou pas égal à savoir. Mais ce n'est pas une bonne idée de le faire, surtout pour écrire des éléments dans votre base de données. Ok, je pense que mon iPhone semble s'être écrasé aussi vite que ça et nous allons recommencer. D' accord ? Tout fonctionne. On s'attend à ce que nous ayons sorti un petit clavier qui n'apparaisse plus. Et si c'est un problème pour vous, appuyez sur commande shift K, commande shift et ok, puis appuyez à nouveau. Et maintenant ça devrait apparaître. C' est un petit bug IOS. Quand on atteint le retour, on a eu nos choses habituelles. Mais plus important encore, notre liste fonctionne toujours, et nous n'avons aucun problème concernant la mise en place de la base de pompiers elle-même. Droit ? Donc la prochaine chose que nous allons faire est en fait donner des données à notre base de données. Donc, nous allons créer une fonction dans ce contrôleur de vue principal appelé send message. Ok, Qu'est-ce qu'envoyer un message besoin ? , En fait, c'est les données qu'on va envoyer et ça va être un dictionnaire. Donc, les données et cela va être composé. D' accord. Tout fonctionne. On s'attend à ce que nous ayons sorti un petit clavier qui n'apparaisse plus. Et si c'est un problème pour vous, appuyez sur commande shift K commande shift, et ok, puis appuyez à nouveau. Et maintenant ça devrait apparaître. C' est un petit bug IOS. Quand on atteint le retour, on a eu nos choses habituelles. Mais plus important encore, notre liste fonctionne toujours, et nous n'avons aucun problème concernant la mise en place de la base de pompiers elle-même. Droit. Donc la prochaine chose que nous allons faire est en fait donner des données à notre base de données. Donc, nous allons créer une fonction dans ce contrôleur de vue principal appelé send message. Et maintenant tout ce qu'on a à faire, c'est simplement saisir une référence et dire qu'on va envoyer quelque chose à un enfant appelé des messages. Ça va attraper notre enfant pour nous ou nous donner une référence, au moins, et ensuite nous allons y ajouter nos données. Donc la façon dont nous allons le faire est d'avoir un enfant par orto I d. Maintenant ce que cela fait, c'est qu'il se dirige vers notre base de feu, et il ajoute un niveau d'arbre en dessous des messages hors. Donc ça va ajouter des messages, puis sur un autre arbre, ça va ajouter nos données et vous verrez à quoi ça ressemble dans une minute. Ensuite, nous allons définir une valeur dessus, et cette valeur peut être n'importe quoi. Et c'est un peu délicat. Si vous êtes nouveau dans le programme et que vous êtes genre, eh bien, ça pourrait être n'importe quoi. Alors, que dois-je faire ? Eh bien, on va faire ça et arracher la force. Alors allons à notre message d'envoi ici. Nous allons passer quelques données, ce qui est hors type chaîne et chaîne. Permettez-moi de corriger cette capitalisation. Et puis tout ce que nous avons à faire est de définir que comme les données que nous envoyons, donc c'est un tableau de valeurs clés pour l'instant. Ce n' est pas évident pourquoi je fais ça. Vous demandez peut-être. Pourquoi tu n'envoies pas une chaîne ? Je te prépare pour les devoirs que tu feras un peu plus tard. C' est assez difficile. Donc j'ai pensé que je vous aiderais maintenant en définissant la bonne structure de données pour que vous puissiez réellement passer à travers les devoirs. Ok, donc c'est la seule ligne dont nous avons besoin pour fixer la date, et nous verrons à quoi ça ressemble quand il se déclenche. Maintenant, par ici, quand on appuie sur Retour sur notre champ de texte, vous vous souvenez que le clavier apparaît avec la touche Retour pops vers le bas. En fait, on va envoyer ce message. Donc, créons des données à partir du message, qui est égal à maintenant. Nous envoyons un tableau de clés et de valeurs sur la base de feu. Nous devons donc avoir le même format ici. Lorsque nous créons notre paquet de données, alors ouvrez fermer nos crochets et nous avons besoin d'une clé. Maintenant rappelez-vous, nous avons fait un fichier de constantes et cela contient toutes les clés dont nous avons réellement besoin. Donc, nous retournons à quelques manettes, nous pouvons l'utiliser comme une clé. Vous avez une clé cohérente partout où nous allons dans notre et pouvez-vous voir comment, Ayant comme une structure de constantes, il est très, très utile. Donc, les champs de message ne contiennent pas de texte, et c'est la clé. Quelle est la valeur ? Eh bien, c'est en fait la valeur de ce champ de texte champ se Ne pas texte et point d'exclamation. Droit ? Donc, nous déballons la texture parce que nous sommes à peu près sûrs que ce sera du texte. Même s'il n'y a pas de texte va envoyer un paquet vide Maintenant, vous pouvez mettre un peu de vérification ici pour dire si la longueur du champ de texte est exa, pourquoi, alors vous devriez le faire. Je pense qu'on devrait le faire. Nous devrions vérifier cette longueur du texte. Donc, si le champ de texte après le texte s'assombrit et qu'est-ce que c'était ? Personnages ? Le nombre de conduits est inférieur à celui de mettre quelque chose de moins de deux ou même un, en fait, oui. Si c'est zéro, alors nous avons un problème. Alors nous allons juste rendre ce dont nous avons besoin. On sort juste de ça à nouveau pour qu'il ne passe pas à la section suivante. Et on a un taureau. Donc, nous devrions revenir. Peut-être faux, parce que nous devons retourner un booléen. Donc nous vérifions la durée de ces champs de texte, n'est-ce pas ? Si c'est long quand nous pouvons obtenir si c'est plus long que zéro, nous pouvons sortir des données, puis nous pouvons envoyer notre message, envoyer un message, et nous pouvons déposer les données en assez simple. Et puis il passera à travers tout. Ce message s'est terminé et a été envoyé à la base de feu. C' est juste un message pour nous-mêmes, non ? Donc, dans ces petites fonctions et dans cette petite section, nous avons créé notre paquet de données, qui est simplement un tableau de paires clé et valeur. Vous pourriez aussi avoir des interjizz et des choses ici, mais nous n'entrerons pas dans ça. On fait juste une base de pompiers très basique. Alors jouons ça hors de la vie et regardons la magie comme ça arrive. Droit ? Alors je vais aller à notre clavier. Qui va taper ça. Et avant que j'appuie sur le retour, il n'y a rien dans notre base de pompiers ici. Et normalement, cela se met à jour en temps réel. S' il ne se met pas à jour en temps réel, actualisez simplement la page et il cessera de le faire. Donc je suis sur le point de frapper retour Bang là-bas. Nous avons des messages et ce numéro est unique. Je pense que c'est garanti unique en tant qu'enfant par des idées d'auto. Rappelez-vous, dans notre code, nous avons ceci. C' est ce que ça fait. Il crée cet enfant, identifie, et c'est unique dans toute la base de feu. Je crois que vous devez vérifier deux fois, mais je pense que c'est ce que c'est. Donc, si vous devez tirer la base APS, ils peuvent communiquer en utilisant ces identifiants uniques. Si c'est comme ça que tu veux faire, les choses me semblent compliquées. Je le ferais. Mais de toute façon, si vous développez, nous avons maintenant du texte et c'est exactement le texte qui a été envoyé. Et plus important encore, nous avons ce spectacle en haut de notre liste, et nous n'avons pas vraiment modifié moins, donc il se débarrasse de cet horrible sélecteur de grâce, mais c'est ce que c'est. Tapons le deuxième message. Appuyez sur, entrez et entrez vous permet de le faire. Nous avons donc maintenant un deuxième message. Maintenant, bien sûr, vous pouvez changer l'ordre. Ceux-ci sont insérés en ce moment. Il l'insère en bas. Vous voudrez peut-être l'insérer en haut. Totalement à vous de décider. Totalement à vous de décider. Encore une fois, je vous montre juste les bases de la base de feu ici. Et bien sûr, si nous revenons à notre explorateur, nous avons un nouvel objet avec un deuxième message. Maintenant, si je vais aux messages ici et que je clique ? Et qu' est-ce qu'on va faire ici ? Je vais donner à cela une chaîne aléatoire comme un identifiant. Je vais avoir un texte barre oblique. Je vais lui donner un troisième message de valeur. Je vais l'ajouter. J' ai donc ajouté un autre objet ici. Et si nous allons à notre application, elle apparaît, et c'est parce que notre application écoute ici. Il observe les changements. Et quand nous faisons des changements, c'est saisir cet instantané et il le dépose dans nos messages et l'insère dans notre vue de table en fonction de notre code. Donc il y a beaucoup de choses là-bas, et la base de pompiers nous permet de faire ce genre d'opération assez facile pour nous. Pry, euh, euh, trucs comme la base de feu et passé, que j'ai mentionné il y a quelques conférences. C' était très difficile à faire, donc il y avait beaucoup de code impliqué autour de lui et c'était sujette. Teoh. Ecoute, tu avais besoin de beaucoup de temps pour recouvrir ça correctement, mais en l'état actuel, nous avons un bon petit système pour le faire. Alors ils y vont, les auditeurs entrent, il est chargé tous les trois de nos messages tout simplement fantastique. En ce moment, il y a une dernière chose à faire ici, c'est parce qu'on a piégé cet enfant. On doit s'en débarrasser quand on s'initialise. Donc, si ce contrôleur de vue disparaît, qui est peu probable parce que c'est notre contrôleur de vue principal, nous devrions réellement nous débarrasser de cet enfant des messages que les canards d'écoute retirent. Vous pouvez supprimer tous les observateurs, ou vous pouvez supprimer l'observateur avec la poignée. Donc, évidemment, c'est le plus facile. Vous pouvez simplement le faire, mais nous avons créé une poignée ici, donc nous allons juste supprimer cette poignée de référence d'élément, donc il va le supprimer. Donc, quand il disparaît, il l'enlève et nous n'avons pas parce que vous ne l'enlevez pas. Vous pourriez avoir quelque chose qui essaie d'accéder à cette référence, puis il essaie de faire quelque chose sur un objet qui n'existe plus parce que nous détruisons le contrôleur de vue. Et c'est là que tu auras un accident bizarre ou au moins un comportement bizarre. Ok, donc c'est l'article complet terminé. Nous avons trié dans la section suivante. Nous allons passer à ajouter un peu plus de données à nos objets firebase parce que nous pouvons ajouter beaucoup plus de choses ici autant que nous en avons besoin. 105. M12 11 Cha Cha Solution de chat de Firebase: D' accord. Il est temps que vous fassiez quelque chose vous-mêmes. Je vais te faire un peu de devoirs. Maintenant, j'ai déjà configuré la structure de données pour vous. Donc, vos tâches un assez simple, mais ils auront besoin d'un peu de réflexion entre eux. La première chose que je veux faire est d'ajouter la date et l'heure au paquet de message que vous envoyez à Firebase dans la fonction d'envoi de message. Maintenant, ils pourraient être séparés. Vous pouvez avoir un temps de Dayton séparé, ou vous pouvez les regrouper totalement à vous et enregistrer. J' ai déjà mis en place une structure de données de rayon pour vous, donc vous n'avez pas vraiment à y penser autant. Ensuite, une fois que vous avez fait cela, vous devez réellement afficher la date de l'heure comme n'importe quelle application de messagerie. Voulez-vous savoir quand le message a été envoyé ? Donc, ce que vous allez faire est d'utiliser la propriété d'étiquette de texte de détail dans la cellule standard de votre vue de tableau. Et pour ce faire, vous devrez changer le type de cellule dans les storyboards ou vous obtiendrez un plantage lorsque vous essayez d' écrire dans sa propriété de texte. Bonne chance, Bone. Shawn est comme ils disent en France et pause la vidéo maintenant avoir bon aller il. Et je te verrai dans quelques secondes ou 1/2 heure. Au moment où vous avez fait cela pour voir quelle est ma solution à ce problème ici, nous g o Voici mes solutions aux tâches que je vous ai définies, qui consistaient à ajouter la date et l'heure au paquet de message et à afficher également leur date et heure. Alors ouvrez le code X et comparez votre solution à la mienne. Maintenant, le plus délicat,bien sûr, bien sûr, je pense que c'est d'obtenir la date de Swift. Et vous avez probablement dû aller sur Google et chercher ça. Donc ce qu'on va faire est juste d'aller à nos utilitaires dot swift et d'ajouter un petit getter de date ici. Alors avons une fonction. Oublie la date. Et cela va juste retourner une belle chaîne simple. Tu n'as besoin de rien de plus que ça. Vraiment ? D' accord. Maintenant, comment faites-vous sortir de votre système IOS ? Eh bien, vous devez créer un nouveau rendez-vous. Alors laissez la date d'aujourd'hui, qui est une date de congé égale à une nouvelle date. Objets et je crois que j'ai déjà fait ça avec toi. Alors nous avons besoin d'une date pour l'affaire. Alors sortons pour la matière. Fairmount. Formentera égal. Teoh Une nouvelle date pour la matière et vous remarquerez ici que j'ai spécifié quel type c'est. Mais ici, je ne l'ai pas fait. Cela n'a pas vraiment d'importance parce que Swift infère le type de ce que nous créons ici en ce moment , les quatre questions que nous pouvons réellement spécifier ce que nous voulons. Donc tu peux faire ça tout ce que tu veux. Date pour l'affaire. Fléchettes. Le format de date est une chaîne de sorte que nous pouvons avoir égal à. Et il y a des codes qui vont avec les différents éléments hors de la date. Donc, pour les membres du Capitole est le mois pour abaisser le cas D est le jour quatre minuscules sage est l' année et vous pourriez mettre un espace régulier là dedans pour le capital. H est l'heure. Et en minuscules EMS est la minute. Donc, évidemment, c'est différent de ça. Ceci est sensible à la casse, et vous avez le format où vous le souhaitez, et vous pouvez également consulter la documentation d'Apple pour le formatage. La date à laquelle nous devons faire est de retourner cette date. Donc, renvoyez la date pour la matière. Ne le fais pas, et on va créer une chaîne à partir de la date d'aujourd'hui. Donc ça va avoir le rendez-vous pour nous. Ok, donc on va enregistrer ce fichier, ils vont retourner à notre contrôleur de vue où on veut avoir la date. Andi, dans notre message d'envoi que nous pouvons faire, nous pouvons ajouter les dates à ce que nous avons là-bas. Donc, vous avez une option. Vous pouvez ajouter la date dans le champ de texte devrait revenir dans ce paquet de données, mais il ne fait pas vraiment partie du champ de texte devrait retourner. Si vous y pensez logiquement, c'est plus quelque chose que vous envoyez avec chaque message. Donc, ce que nous devrions faire est en fait l'inclure dans envoyer un message et c'est assez simple. Nous pouvons simplement ajouter quelque chose à nos données. Et nous ne lui avons pas donné la clé, qui vient de nos champs de message de point de constance Heure de date sombre, qui est une chaîne. Et puis nous allons obtenir le temps, qui vient de nos services publics ne contre les dates. Nous pouvons effectivement nommer qui obtenir l'heure de la date juste pour être un peu plus correct avec notre nom sur ce que nous avons ici, notre parce que les données sont une constante de let. Ok, donc nous avons un très léger problème ici. Quand on dit que ce qu'on dit c'est que tu sais que tu ne changeras pas cette constante. Et ce que nous essayons de faire, c'est d'y ajouter quelque chose pour qu'on puisse contourner tout ça. On peut dire, soyons ou rugueux. Je viens de mettre le même problème dans leur paquet VAR est égal à la date. C' est très bien. Et puis au lieu de données, nous pourrions juste avoir des paquets ici, et ensuite nous pouvons aussi envoyer le paquet ici. C' était un petit gotcha qui t'attendait quand tu as fait ça. Ok, donc ça devrait être envoyé pour la date et l'heure. On va tester ça dans une seconde. Mais tout d'abord, ce que nous devrions réellement faire est d'aller à notre base de tir et de supprimer les anciennes données parce que vous ne voulez pas changer de format de données. Ça va introduire beaucoup d'erreurs. Donc, lorsque vous développez, c'est une bonne idée Toe, essuyez la base de données recommence. Lorsque vous changez quelque chose qui est assez simple à faire, vous avez juste à monter deux messages. Appuyez sur le petit X et supprimé. Tout est parti. Vous pouvez également le faire par programme supprimer tout dans votre base de données. Mais fais attention à ça, évidemment, non ? Donc maintenant, nous pouvons l'exécuter dans notre carte SIM. Il est juste fermé que maintenant pour glisser. Ok, on va installer. On ne devrait pas avoir de messages. Et maintenant on pourrait tester l'envoi d'un message. Retournez cela dans notre base de données. Nous avons maintenant l'heure de la date à elle et juste ok, et il est également intéressant de souligner que les heures de date ont en fait un format unique ou standard que vous pouvez appliquer à vos propres heures de date. Nous ne faisons pas cela ici parce que c'est juste pour une application très simple. Mais si les dates horaires sont importantes pour la structure des données de l'Europe, il vaut la peine de chercher des choses comme Get quoi ? Il fait froid maintenant. Il existe une norme pour partager une date dans ce format. Il existe aussi une autre norme appelée Next Time et UNIX Time. Il mesure simplement le nombre de secondes off depuis général, le 1er 1970 Donc c'est l'heure UNIX actuelle pour la date que nous avons aujourd'hui. Juste des choses pour que vous soyez au courant. Ok, pour que tout fonctionne. On sort à la date. On peut arrêter ça, mais on ne peut pas encore montrer notre rencard. Donc, ce que nous devrions faire est de changer notre Ceci était la deuxième partie des devoirs de la vue de la table avant que nous ne devons aller à notre storyboard et nous avons réellement besoin de changer le type de cellule pour être. Si nous allons dans ses propriétés et allons à son style, nous pouvons obtenir un type de sous-titre. Donc nous avons un titre. Sous-titre Sous-titre est l'endroit où nous allons montrer cette date Revenir à notre vue Contrôleur Nous pouvons maintenant aller dans notre auto pour la ligne à nous pouvons dire vendre point texte texte texte texte texte texte texte est égal à et quel est l'égal à ? que Rappelez-vousquenous avons sorti notre contenu de message ici, donc nous allons récupérer notre contenu de message. Et quelle est la clé ? Eh bien, la clé est à nouveau installée dans son fichier de constantes très utile. Ne pas envoyer de message Champs. Ne sors pas avec l'heure, OK ? Et nous sommes presque sûrs qu'il est là. Mais comme d'habitude ici déballer un optionnel C'est totalement à vous si vous voulez vérifier cela. Et en fait, quand il s'agit de choses sur Internet, c'est une très bonne idée. Pour l'avoir, Adam, s'il Adam, faut s'assurer que nous obtenons ce message et en fait, c'est une bonne idée. On va le faire tout de suite. Donc, si laisser jour est égal à simplement supprimer ce contenu de notre message, etcetera, alors et seulement alors bien, nous avons envoyé une cellule texte détaillé libellé égal à la date heure. Et je vais faire ça pour cette section 2. Donc, si laisser le texte est égal à cela, nous pouvons enlever les accolades de vêtements d'ouverture déballés à atteindre tombé que dans aujourd'hui. Et ce que nous faisons ici, c'est que nous sommes juste sa prévention des catastrophes. Nous nous assurons que si quelque chose est gâché dans notre base de données, notre utilisateur ne va pas le sentir dans l'application, donc c'est assez important maintenant. Bien sûr, vous pouvez aussi le faire ici pour vérifier deux fois. Mais je pense que vous avez l'idée pour que vous puissiez vous sentir libre de le faire vous-même. C' est maintenant que je vais le dire, et maintenant on peut sortir notre étiquette de texte détaillée, qui est la date à laquelle on va frapper, va passer sur le téléphone de vie, et on devrait avoir la date à afficher, donc on va avoir les données et là, nous avons notre premier message. Nous pouvons envoyer le prochain bit de retour de données, et là nous l'avons montré à nouveau. Ainsi, vous pouvez le voir en ayant une structure de données décente et en ayant une compréhension, en fait hors de la façon dont les vues de table, les cellules et les choses fonctionnent plus tard. Vous pouvez ajouter des charges et des charges de différentes choses à cette structure de données, et vous pourrez simplement modifier votre vue de table. Vous changez votre message d'envoi, et le système s'occupe de tout le reste. Donc, en tant que développeur, c'est et nous vous donnons un bon conseil ici que comparable où île, ce probablement grâce à une expérience difficile est qu'il est préférable de comprendre les systèmes d'abord, même si c'est ennuyeux de le faire, parce que lorsque vous faites cela, cela vous libère en termes d'avoir à créer une structure de données. Tant que vous avez une structure de base, vous pouvez toujours y ajouter plus tard et améliorer les choses parce que vous comprenez comment fonctionnent les vues de table . Vous comprenez comment l'ajout d'éléments à vos paquets de données fonctionne. Tout ce que vous avez à faire est d'ajouter quelques lignes ou même de supprimer quelques lignes, et tout fonctionne toujours juste. Donc, vous savez, par exemple, si je supprime ce petit paquet où nous avons ajouté le temps et je l'ai enregistré. Maintenant, dans notre tableau, nous n'avons pas d'heure de date, donc cela ne fonctionnera pas en théorie. Mais on l'a vérifié pour qu'on puisse arrêter ça. On peut appuyer sur Play. On pourrait retourner ici à notre Sim et quand il se chargera, sortir deux messages. Tout va bien ou bien, mais quand nous envoyons un autre message, nous n'ajoutons pas l'heure de la date cette fois, peu importe ce qu'il est frappé retour et nous n'avons rien. Nous avons ce sous-titre par défaut. Bien sûr, vous pouvez changer ça. Mais mon grand point derrière tout cela est que vous avez changé votre structure de données, supprimer quelque chose, mais votre application fonctionne toujours. Et je parierais non, totalement sûr que si vous forcez à déballer cela, alors vous auriez un très gros problème. Donc je vais juste te montrer à quoi ça ressemble. Laissez l'heure de la date, parce que notre force l'a déballé. Même si ce n'est pas là. Laissons-le sur la sim. Voyons dans quel genre de désordre on peut s'enrouler ici. Vous allez obtenir les données ? Euh, nous avons une erreur fatale, inattendue trouvé zéro lors du déballage d'une valeur facultative. Alors on y va. On a un joli crash rouge. Nous pouvons cliquer sur la ligne mauvaise instruction, et cela correspond à un crash. Comment apt n'est pas réactif. Et en réalité, si vous n'étiez pas connecté à Exco, l'application disparaîtrait. Et je suis sûr que vous avez eu cette expérience avant parce que je n'ai pas vérifié ça. Arrête de courir et réparons tout. Alors maintenant, vous comprenez ? Vous connaissez les réalités derrière vérifier les choses avant de les faire. Quand vous obtenez des trucs sur Internet, toujours, toujours, toujours vérifier. Ok, assez de moi pour faire l'éloge à ce sujet. Personne n'aime trop se faire donner des cours, non ? En fait, rangeons les choses un peu. Il y a quelque chose qui me gêne avec cette application, et c'est quand vous envoyez un message. Oh, Bangs a toujours l'ancienne version. Mais quand nous envoyons un message, le texte que nous avions dans les petits textes aisam texte élément, champ de texte, j'appuie sur retour, il ne disparaît pas. Donc quand vous êtes allé envoyer un nouveau message, c'est toujours juste, et c'est un problème, évidemment, donc on peut arrêter ça, et on peut réparer ça. Mais d'abord, réparons les dégâts. Je l'ai fait ici. Ramenez ce paquet. Sauvez-le. Retournons à notre base de feu. Supprimez les messages. Ok, donc nous voulons effacer que les champs de texte devraient retourner va le faire pour nous. Donc, une fois que nous avons terminé l'édition après avoir envoyé notre message, nous allons simplement dire que le champ de texte ne contient pas de texte est égal à une chaîne vide, donc nous l'avons supprimé. Ok, maintenant, c'est une affaire étrange, et c'est quelque chose qui surgit au fur et à mesure que vous vous développez. C' est un développeur. Une partie du jeu de mots, ce sont ces choses que vous pensez que vous venez de mettre ici. Mais c'est quelque chose que je réduirais. Et je créerais une fonction totalement séparée pour un champ de texte clair comme celui-ci. Je suis dedans. Je laisserais tomber ça, Mais encore plus que ça, je passerais en fait sur ce champ de texte. Donc, je dirais champ de texte de type whips, off type you I champ de texte. D' accord. Et puis je réduirais ça. Je ne l'aurai pas ici. Je l'aurais dans les services publics. Maintenant, vous pouvez créer un fichier d'utilitaires différent pour vous, je articles, mais nous ne allons pas le faire. On va rester simple. Simple fichier et nous allons le mettre ici parce que ce genre de fonctionnalité est quelque chose que vous allez faire assez souvent. Alors pourquoi l'avoir dans plus d'un endroit ? Retournez à quelques contrôleurs et nous pouvons appeler nos services publics. Ne pas effacer le champ de texte et nous pouvons passer sur le champ de texte. Sauvegardez qu'on peut frapper jouer. Et cela devrait faire ce qu'il doit faire pour nous. Et comme je le dis, ces choses viennent juste de l'expérience et de la compréhension de ce qui se passe. Alors envoyez notre message. Retour sur le champ de texte est a effacé son disparu. On a tout trié. Brillant. Ok, donc c'était la première chose qui m'ennuyait, mais on l'a réparé. La prochaine chose que ça m'ennuie, c'est que ça a l'air un peu fade. Allons donc à notre storyboard et passons à notre vue de table et surtout à notre en-tête de notre application ou de la barre supérieure, qui vient de la manette Knave. Nous avons notre petit bar haut. Maintenant, nous pouvons cliquer sur le contrôleur naff et vous remarquerez qu'il y a une barre de navigation que nous pouvons changer. Ça a l'air assez bien. Je pense que ce que nous pouvons faire ici, c'est que nous pouvons examiner ses propriétés en haut à droite, et nous pourrions changer certains éléments. Voyons ce que fait Barton. Allons à ce vert qu'on connaissait. On y va. Nous avons changé notre barman maintenant bizarrement arrière-plan. Si nous cliquons sur l'arrière-plan et que nous sélectionnons une couleur aléatoire ne fait rien, donc je ne connais pas vraiment la raison de cela. Mais ce n'est pas l'arrière-plan pour ces barres. Il est en fait appelé barre teinte à nouveau. Je viens d'appliquer cette couleur verte que nous avions dans cet écran principal. Bon, maintenant on a besoin d'un titre. Ça a l'air un peu boiteux. Donc je me souviens que nous avions ce petit titre et nous avons ce vieux livre Adoni avant. Allons voir nos quelques contrôleurs. Double-cliquez sur le livre. Je dirais que double-cliquez sur la barre, mais cela ne fonctionne pas. Cliquez sur l'élément de navigation. Passez au titre. Appelons cette conversation d'église et appuyez sur Entrée et maintenant nous l'avons maintenant, assez ennuyeux, nous ne pouvons pas changer la couleur du Texan ici, et c'est parce que nous devons retourner à notre contrôleur maintenant et nous devons changer le texte couleur ici ou à l'avant, donc la couleur du titre sera l'avance blanche devrait changer ici. Vérifions qu'en l'exécutant dans l'iPhone S E. C'est un peu ennuyeux. Parfois, le storyboard ne change pas les choses qu'il devrait changer ou les propriétés ne sont pas en fait bureau est assis blanc dans notre dehors, mais ce n'est pas dans le storyboard. Donc peut-être si vous rechargez le storyboard juste en cliquant sur un clic à nouveau. Toujours rien samedi trié Apple. De toute façon, changeons aussi notre front, et c'est habituel. J' ai oublié ce que le fonds était ici. Mais le vieux livre de style de Dhoni ou quelque chose dit Get, ne sont jamais Controller Funt personnalisé. Oui, euh, maintenant il vous a un petit problème. Nous ne pouvons pas utiliser l'avant que nous voulons utiliser à l'intérieur de cette petite section, sorte que les moyens autour de cela sont en fait deux. Avoir une photo que nous pouvons mettre ici et image, et nous utilisons l'image ici dans Chitchat si nous le voulions. Mais ce n'est pas vraiment ce à quoi je visais cette leçon, donc je veux dire, je suis juste en train de te faire prendre conscience de certains éléments dont tu dois être conscient. Donc, nous pouvons vraiment faire est juste de le changer en italique système, ce qui, bien sûr, ne montre pas ici Pas surpris. Merci. Nous ne devrions pas l'avoir partager avec nous le haut de notre application. Et nous ne sommes pas si bienvenus dans le monde merveilleux des choses qui ne fonctionnent pas dans le code X Sistema sont . C' est parce que j'ai envoyé une taille de police stupide sur zéro. Donc, revenons à Custom fonctionne maintenant. Bienvenue à X code bugs tout le monde et nous pouvons maintenant avoir. Mais Dhoni, 72 était ancien, n'est-ce pas ? Je dis et j'ai fait ne montre pas ici, mais on peut jouer. Honnêtement, parfois je ne sais pas à propos du code X. C' est juste quoi ? Pourquoi ne pas mettre à jour les choses de toute façon ? Maintenant, nous avons n'est-ce pas Chet en haut ? Et nous pouvons en fait augmenter cette taille de quelques points. Et encore une fois, un petit bug de code X ici. Arrête ça de courir comme ça. En fait, sélectionnez le bouton maintenant. Belle, Apple vous sauve. Contrôle du rapport du magasin principal. Voilà le bouton. Il est mis jusqu'à 24 exécuter cela. On y est presque. droite. Joli. Donc ça correspond à notre petit journal. Maintenant, ce champ de texte en bas n'est pas évident. Alors réparons ça. Passons à notre contrôleur de vue fait, sélectionnez le champ de texte, assurez-vous qu'il est sélectionné. Nous pouvons augmenter le front là-bas Si nous le voulons, nous pouvons également changer notre couleur de fond. Alors, où est-il ? Ici, c'est. Nous pouvons utiliser une couleur verte précédente pour correspondre à notre application. Nous pouvons changer la couleur du texte Teoh White qui va correspondre à tout ce que nous faisons dans notre application Et puis la plupart des applications de messagerie alignent les choses sur la droite afin que nous puissions sélectionner une section alignée droite. Maintenant, quand nous jouons, nous commençons à obtenir un peu plus dans la facilité d'utilisation et l'interface utilisateur de cela, il est juste lui donne une meilleure sensation globale. Donc maintenant, je peux sélectionner ma petite boîte de message. Je peux taper et tout est de couleur blanche. Je peux revenir, et c'est parti. Maintenant, bien sûr, vous pouvez définir tous ces éléments ici si vous le souhaitez à différentes couleurs, différentes polices totalement à vous. Je pense que ça a l'air bien. La dernière chose qu'on va faire est de se débarrasser de ce grand Bob. Donc on l'a déjà fait avant. Je vais à quelques manettes sur, Allons à notre section de vue de table et regardons la ligne a sélectionné à ok, et ensuite nous allons obtenir notre vue de table. Ne fais pas Andi. J' oublie toujours ce qu'on appelle ça. Je pense que c'est la ligne de sélection à C'est tout au chemin d'index et troupe animée. Quoi qu'il en soit, changeons aussi notre front et c'est habituel. J' ai oublié ce que le fonds était ici. Mais le vieux livre de style de Dhoni ou quelque chose dit Get, ne sont jamais contrôleur Funt personnalisé. Oui. Maintenant, il t'a un petit problème. Nous ne pouvons pas utiliser le front que nous voulons utiliser à l'intérieur de cette petite section de sorte que les moyens autour de cela sont en fait deux. Avoir une photo que nous pouvons mettre ici et image, et nous utilisons l'image ici dans Chitchat si nous le voulions. Mais ce n'est pas vraiment ce à quoi je visais cette leçon. Je veux dire, je te fais juste prendre connaissance de certains éléments dont tu dois être au courant. Donc, nous pouvons réellement faire est juste de le changer en italique système, qui, bien sûr, ne montre pas ici pas surpris. Merci. Nous ne devrions pas l'avoir partager avec nous le haut de notre application. Et nous ne sommes pas si bienvenus dans le monde merveilleux des choses qui ne fonctionnent pas dans X Code Sistema sont . C' est parce que j'ai envoyé une taille de police stupide sur zéro. Donc, revenons à Custom fonctionne maintenant. Bienvenue à X code bugs tout le monde et nous pouvons maintenant avoir. Mais Dhoni, 72 était ancien, n'est-ce pas ? Je dis et j'ai fait ne montre pas ici, mais on peut jouer. Honnêtement, parfois je ne sais pas à propos du code X. C' est juste quoi ? Pourquoi ne pas mettre à jour les choses de toute façon ? Maintenant nous l'avons fait, n'êtes-vous pas Chet en haut ? Et nous pouvons en fait augmenter cette taille de quelques points. Et encore une fois, un petit bug de code X ici. Arrête ça de courir comme ça. En fait, sélectionnez le bouton maintenant. Belle, Apple vous sauve. Contrôle du rapport du magasin principal. Voilà le bouton. Il est mis jusqu'à 24 exécuter cela. On y est presque. droite. Joli. Donc ça correspond à notre petite connexion. Maintenant, ce champ de texte en bas n'est pas évident. Alors réparons ça. Passons à notre contrôleur de vue fait. Sélectionnez le champ de texte, assurez-vous qu'il est sélectionné. On peut augmenter le front là-bas. Si on veut. Nous pouvons également changer notre couleur d'arrière-plan. Alors, où est-il ? Ici, nous pouvons utiliser une couleur verte précédente pour correspondre à notre application. Nous pouvons changer la couleur du texte Teoh White qui va correspondre à tout ce que nous faisons dans notre application Et puis la plupart des applications de messagerie alignent les choses sur la droite afin que nous puissions sélectionner une section alignée droite. Maintenant, quand nous jouons, nous commençons à obtenir un peu plus dans la facilité d'utilisation et l'interface utilisateur de cela, il est juste lui donne une meilleure sensation globale. Donc maintenant, je peux sélectionner ma petite boîte de message. Je peux taper et tout est de couleur blanche. Je peux revenir, et c'est parti. Maintenant, bien sûr, vous pouvez définir tous ces éléments ici si vous le souhaitez à différentes couleurs, différentes polices totalement à vous. Je pense que ça a l'air bien. La dernière chose qu'on va faire est de se débarrasser de ce grand Bob. Donc on l'a déjà fait avant. Je vais à quelques manettes sur, Allons à notre section de vue de table et regardons la ligne a sélectionné à Okay. Et puis on va avoir notre vue sur la table. Ne fais pas, Andi. J' oublie toujours ce qu'on appelle ça. Je pense que c'est la ligne de sélection à C'est tout au chemin d'index et troupe animée. Maintenant, jouons ça et nous devrions avoir tout ce dont nous avons besoin. Alors maintenant, quand nous sélectionnons, il sélectionne la route pour nous et il y a d'autres choses que vous pourriez faire. Vous pouvez supprimer ces lignes grises si vous le souhaitez, vous pouvez changer les lignes des grandes couleurs . Je ne vais pas couvrir ça maintenant, mais tu peux juste regarder ça. Comment supprimer le genre de je ne sais pas comment vous les appelleriez. Les répartiteurs. C' est un mauvais mot que les lignes dans la vue de table, vous trouverez ce que vous devez trouver sur Internet pour ce se qui est notre à un peu poussé vers le haut, et vous avez maintenant une compréhension assez approfondie de la façon dont firebase fait ce qu'il fait. 106. Résumé de cha de cha: Ok, les gars, vous êtes vraiment avancé maintenant dans le développement IOS, nous avons créé un tout re simple Whats app cloné Devrait Chappy je veux dire, nous n'avons pas créé des chats entre différentes personnes, mais vous avez l'idée de base. Vous avez les écrous et les boulons que si vous vouliez faire un vrai clone d'application Whats, vous pourriez le faire. Ça prendrait quelques mois. Je ne vais pas te mentir et quelques mois après ça, pour que ça fonctionne correctement. Mais vous avez encore les écrous et les boulons. Donc, nous avons couvert beaucoup de choses dans cette section. Nous créons une belle application de chat et vous pouvez voir que je l'ai légèrement modifié pour rendre les choses un peu grandes et plus audacieuses, totalement à vous comment vous concevez le vôtre. C' est votre application, après tout, écrit les choses que nous avons appris des vues de table. Nous avons regardé les vues de table et les couchait dans un contrôleur de vue plutôt que d'utiliser un contrôleur de vue de table, ce qui est ce que nous avons fait précédemment. Donc nous sommes juste comme un bon rafraîchissement pour vous. Nous avons examiné comment créer notre application Firebase en ligne. Comment se connecter et enregistrer les nouveaux utilisateurs souhaitant s'inscrire en Europe. Nous avons également examiné la façon dont vos dates sont cassées. Ne vous permettait pas de lire ou d'écrire à moins que l'utilisateur n'ait été réellement verrouillé. Nous avons regardé comment réinitialiser leurs mots de passe, feu e-mail. Firebase fait donc tout cela automatiquement pour vous. Nous avons examiné comment envoyer et recevoir des données dans les bases de données, comment écouter les nouvelles mises à jour des données, ce qui est une excellente chose à faire. Nous avons également regardé un petit piège qui était Vous devez déenregistrer votre auditeur lorsque votre vue disparaît. C' est une chose très importante à savoir. Et puis, enfin, nous sommes intelligents et les choses en place. Nous avons ajouté ce petit sélecteur que nous avons fait une grande sélection une façon de fille. On a changé les fronts ici et là. Nous avons examiné certaines des idiosyncrasies du code X. Non, en fait nous montrer nos changements parfois. Mais ça arrive. Donc il y a un avertissement pour vous. Exécutez-le sur le même exécutez-le sur un vrai appareil et voyez si cela fonctionne réellement là avant demander si vous avez fait quelque chose de mal dans le code X. Toujours tester pour tout, d' accord. Alors félicitations. Tu l'as terminé. Tu mérites de t'acheter le déjeuner. Je pense que je vais te laisser avec ta dose habituelle de feux d'artifice 107. M13 1: Bon, gars, asseyez-vous. Celui-ci va être épique. Nous allons examiner la transcription, qui est quelque chose qui n'était pas qui a été introduit il n'y a pas si longtemps dans IOS. Et cela nous permet essentiellement de parler dans notre microphone et de récupérer un document transcrit ou un tas de mouillé transcrit. Maintenant, c'est très cher à faire. Computational e. Donc pomme nous limite un peu sur ce que nous pouvons et ne pouvons pas faire, surtout en termes de longueur. Mais c'est une chose très, très utile. Et si vous avez un iPhone et que vous avez un clavier qui apparaît, il y a un petit microphone que vous pouvez réellement appuyer et qui fera la transcription pour vous. Donc vous pouvez prévisualiser à quoi ça va ressembler. Mais maintenant que cela est ouvert à nous, développer est que nous allons réellement faire une application de transcription, donc va vous permettre de parler dans l'application et il va transcrire vos mots pour vous . Et ne vous dérange pas les captures d'écran ici. Nous n'avons pas vraiment terminé cela, et nous allons le finir plus tard dans ce module. Bien sûr. C' est pourquoi nous avons ces choses comme des options et quoi pas ? Mais les bases de l'APP sont ici. On va avoir une application à onglets. Nous allons avoir des contrôleurs de navigation en combinaison avec des onglets, ce qui est une chose importante à savoir et quelque chose que nous n'avons pas encore couvert. Et bien sûr, nous allons regarder les transcriptions et en cours de route nous allons découvrir un peu sur les systèmes de fichiers IOS. Qu' est-ce qui va où ? Pourquoi, quand et comment, et tout le reste de son, vous pouvez comprendre où vos fichiers sont écrits pour écrire. Donc, en cours de route, nous allons en apprendre davantage sur les écarts de tabulation. Nous allons en apprendre davantage sur les autorisations. Ce n'est pas nouveau pour toi. J' espère que nous allons apprendre sur l'enregistrement à partir du microphone et les autorisations pour cela, ainsi que de sauvegarder ces enregistrements quelque part qui seront des nouvelles ainsi que les transcriptions via Serie. C' est aussi connu. Nous allons voir comment nous lisons l'audio d'une manière très simple, et c'est vraiment une porte d'entrée pour faire des casquettes musicales. Donc, une fois que vous avez les idées de base de l'audio, vous pouvez ensuite l'élever dans votre carrière de création d'applications. Si vous voulez faire des casquettes de musique, j'ai commencé par faire des casquettes de musique pour les clients. Donc, c'est quelque chose que je connais un peu. Et puis nous allons aussi examiner quelque chose à voir avec les données du tribunal. Maintenant, la plupart des AP nécessitent un stockage de données d'une sorte ou d'une autre. Et si votre stockage de données est très simple, alors nous avons essayé d'utiliser des choses simples comme les N utilisent un d plis ou simplement écrire un fichier texte quel qu'il soit. Mais à mesure que vos données deviennent plus complexes, vous devez utiliser quelque chose de plus adapté à ce dont vous avez besoin. Et c'est ce que sont les données de base. C' est le système de données très avancé intégré à IOS que si vous allez devenir un développeur , est un must pour au moins apprendre les bases. Officier, on va apprendre les bases. En outre, regardez des choses simples comme l'enregistrement de fichiers texte sur le système de fichiers où notre application est réellement autorisée à les enregistrer. Donc tout ce qui reste à dire, c'est Allons-y 108. M13 2 Permissions de navigation d'ongles et données de base de données: D' accord, mettons en place notre application dans cette section particulière. Nous allons mettre en place un onglet est arrivé. On l'a déjà fait avant. On va regarder la navigation, ce qu'on a fait avant. Nous allons également examiner les autorisations et les données des tribunaux. Maintenant, la plupart des gens savent quelque chose sur les données de la cour peut-être que vous ne pensez même pas encore, mais il n'y a vraiment rien de nouveau ici. Je veux dire, abside à onglets avec navigation couverte. Nous avons couvert, et je vais juste les rassembler en quelque sorte. Il est vraiment simple de naviguer dans Tab, peut-être une fois que vous savez comment le faire réellement. Autorisations que nous avons couvertes. Donc on va utiliser le microphone pour enregistrer un discours de quelqu'un. Évidemment, Apple veut que nous demandions leur permission pour ça. Nous allons aussi faire un peu de vérification pour voir si nous avons déjà des permissions. Ainsi, nous pouvons dire à l'utilisateur de nous accorder des autorisations à partir de ses paramètres s'il a déjà refusé cette autorisation, puis nous examinerons la configuration d'une base de données. Et tout ce qui est est simplement une case à cocher. Lorsque nous créons notre application, cela signifie simplement qu'elle est incluse au début par défaut afin que nous puissions l'utiliser plus tard ne sautez pas cette case à cocher ou vous allez avoir un sacré temps à essayer d'obtenir le bon fonctionnement des orteils de données de base . Alors ouvrez le code X et commençons un nouveau projet. À droite. Commençons avec un nouveau projet X Code, et nous, bien sûr, voulons avoir un onglet Zap frappé ensuite. Et appelons ça quelque chose comme le transcripteur, mais c'est un gros mais il manque quelque chose de cet écran qui n'est pas évident parce qu'il manque. Et c'est notre option d'utiliser la date du tribunal. Et pour une raison quelconque, vous n'obtenez pas cela lorsque vous configurez une application d'onglet, ce qui signifie que vous devez ensuite passer par le processus douloureux hors, y compris le code de données de base plus tard. Donc ce qu'on va faire à la place, c'est revenir en arrière. Nous allons aller à une seule application de vue prochaine, et vous remarquerez que les données Use Court sont disponibles ici, alors collectez cela sur. Allons à notre nom de produit et l'avoir comme avant, donc je ne sais vraiment pas pourquoi Apple fait cela, mais c'est ce que c'est, et il y a probablement une raison technique à cela. Il est plus facile de créer une application à vue unique avec des données de base, puis de la transférer dans un onglet. Apple, vous savez, faites un appel à partir de cette vue unique plutôt que l'inverse, qui est de démarrer leur onglets vers le haut et essayer d'inclure des données de base. Tu vas juste nager en amont si tu le fais dans la deuxième voie. Alors passons ensuite à ce sujet à moins de l'enregistrer partout où vous allez le sauver. Ok, donc nous avons inclus les données de base maintenant et peut-être que nous pouvons les voir. Si nous allons construire des phases et ce que nous avons ici Non, nous ne serons pas en mesure de voir ce qui est inclus avec elle. C' est très bien. Nous pouvons laisser cela tel quel, mais nous avons activé les données de base. C' est un peu ennuyeux qu'il ne vous dise nulle part qu'il est activé. En dehors de plus sur le côté gauche, ce fichier est ce qui va contenir nos données de base et nous permettre de les parcourir. Droit. Donc, c'est assez à propos des données de base. Ce que nous allons faire maintenant, c'est mettre en place notre application. Ainsi va votre storyboard principal. On va créer notre application d'onglet à partir de ça. Donc je vais juste créer un espace de oui, on peut voir ce qui se passe. Ok, donc pour le moment nous avons un contrôleur de vue que nous ne voulons pas réellement. Ce dont nous avons besoin est un contrôleur de barre de tamp faisant clic et glisser Un de ceux dans et cela est normalement livré avec deux onglets faisant juste déposer n'importe où comme leur je viens de déplacer cela le long d'un peu afin que nous puissions le voir correctement. Tu peux bouger. Ça l'était, si tu veux. On y va. Donc on peut tout voir correctement, non ? Donc, nous pouvons réellement nous débarrasser de ce contrôleur de vue initial juste sélectionné hit backspace, qui, comme d'habitude, ne fonctionne pas comme nous le prévoyons. Passons de l'autre côté maintenant. Frappe, retour arrière. On y va. Donc maintenant, nous n'avons pas de point d'entrée pour la pomme. On doit réparer ça. Donc, nous allons cliquer sur le contrôleur de barre de déchirure et sélectionner est la vue initiale. Contrôlez-le de sorte que cette flèche apparaisse dessus. Ok, donc nous avons nos quelques contrôleurs, mais encore une fois, nous ne les voulons pas parce que nous allons avoir des tables à l'intérieur de notre application. Et ces tables, ces vues de table, ils vont contenir la transcription précédente pour qu'il puisse les recueillir. On peut les éditer. On peut les exporter. Fais toutes sortes de trucs avec eux. Donc, qui va supprimer ces contrôleurs de vue qui sont abandonnés par défaut ? Et puis nous allons chercher nos contrôleurs de vue de table et nous allons en avoir deux , et pour bien faire, Grant, vous pouvez compter. Et puis nous allons contrôler, cliquer et glisser dans l'onglet vers le contrôleur de vue de table, et nous allons donner ça de relation. Quelle relation voulons-nous ? Eh bien, c'est une relation de contrôleur de vue, et vous remarquerez quand vous faites cela, les onglets en bas apparaissent donc nous allons faire le même contrôle. Cliquez et faites glisser jusqu'à la 2e 1 vue, contrôle et relation. Et ça va être le deuxième onglet. Ok, alors sélectionnons ce contrôleur de première vue et vous remarquerez l'onglet. L' article est au-dessus du dessus, non ? Nous pouvons changer le badge, changer divers éléments à ce sujet. Voyons ce qu'on peut faire ici. Mettons un lot d'essai, d' accord ? Et ça met un badge rouge là-dessus. Donc ce n'est pas ce qu'on veut. On veut juste changer le nom de ça. Donc, nous allons avoir cet ensemble comme quelque chose comme des transcriptions. ne peut pas rendre ça trop long. Sinon, il ne rentre pas vraiment dans cette petite section ici. Ça n'a pas d'importance pour le moment. On peut toujours l'embellir plus tard. Allons à la 2e 1 Appelons cela favoris. Donc on va avoir une liste d'anciennes transcriptions et ensuite on aura une liste de nos transcriptions préférées . Donc c'est une liste d'accès facile, non ? Donc, nous avons sur les vues de table et chacun. Nous avons une cellule de vue de tableau dans chacun d'eux. Ok, alors qu'est-ce qu'on veut faire maintenant ? Donnons notre cassette de vos cellules et identifions. Donc on l'a déjà fait avant. Re utilisation. Identifier. Appelons cette table de transcription que vous vendez, et nous l'utiliserons plus tard. Quand on essayera de créer des cellules, on passera à la suivante. Nos favoris. Assurez-vous que la cellule est sélectionnée. C' est la faveur la plus cool. C' est une vue de table. Donc d'accord, donc nous avons mis en place notre identification. Super. Et si nous voulons utiliser la navigation à ce stade maintenant ? Si disons que je clique sur quelque chose dans la cellule du tableau ici, je n'aurais aucun moyen de pousser une nouvelle vue. Contrôlez-le parce que l'onglet notre contrôleur ne prend soin que des onglets à l'intérieur. Ça ne se soucie pas de la navigation. Alors, ce dont vous avez besoin dans un onglet ? Notre cas est sélectif. Vous contrôlez, par exemple, celui-ci va où sommes-nous ? Éditeur, intégrez dans le contrôleur de knave. Et maintenant, nous avons un contrôleur naff qui est assis à côté de lui. Donc l'onglet que notre contrôleur connaît seulement pour afficher ce bras hors de notre storyboard. Ensuite, le contrôleur naff sait qu'il doit afficher cette vue de table. Donc, ces contrôleurs avec des arrière-plans grisâtres épais ne montrent rien en fait. C' est un point important à savoir quand il s'agit de développement, les contrôleurs ne montrent rien. Les contrôleurs de vue montrent des choses afin que nous puissions faire la même chose avec ce prochain. Sélectionnons-le pour l'éditeur dans le lit en deux, Controller. Ok, maintenant je sais qu'il y a deux contrôleurs maintenant ici vous pourriez dire que ça semble exagéré , mais ce n'est pas moi étrangement, j'ai vu des gens tentés d'essayer d'utiliser un contrôleur naff pour tout, ce qui ne fonctionne tout simplement pas. Ne fais pas ça. S' il vous plaît Quoi que vous fassiez aussi, en le faisant de cette façon, la bonne façon est que vous pouvez avoir un historique différent dans chaque onglet qui est gardé en mémoire. vous pouvez empiler plus de contrôleurs de vue. Supposons que vous choisissiez une transcription. Il va à un écran d'édition. Vous pouvez appuyer sur partage. Il va à un écran de partage, puis vous avez cette hiérarchie stockée uniquement dans le premier onglet. Et cela n'affecte pas le second cas de tabulation. C' est très important pour la navigation dans APS pour obtenir ces configurations en premier lieu, n'est-ce pas ? Allons l'épinons un peu. Sélectionnez ce petit onglet sont sur le premier contrôleur maintenant, et nous pouvons donner à cela un élément système. Si nous aimons quelque chose comme l'histoire et que vous verrez à quoi ressemble l'icône, nous pouvons laisser l'image telle qu'elle est, mais que pouvons-nous faire d'autre ? Eh bien, ce serait bien d'avoir quelques couleurs dans son application, alors revenons un peu. Sélectionnez cette barre supérieure maintenant. Changeons la tente. Vous et d'autres couleurs ? Utilisons la couleur que j'ai définie pour ce projet, sur laquelle est celle-ci ? La chose malheureuse à propos de la conception comme celle-ci est que vous devez copier cette couleur sur l' autre. Maintenant, contrôle, et si tu veux le changer, tu dois changer à deux endroits, ce qui craint, mais c'est comme ça. J' ai donc changé le barman. Alors si on le veut, on peut changer les Barton sur le contrôleur de tabulation. Ou on peut changer la teinte de l'image. Voyons à quoi ressemble le blanc. Ok, et puis quoi ? Nous voulons que notre Barton soit aussi cette couleur, nous pouvons simplement cliquer sur cette vieille couleur. Il est stocké pour nous et nous l'avons là, accord, donc hors comme d'habitude. bon point ici est d'ouvrir notre sim et de voir à quoi cela ressemble. Donc ça n'a pas l'air trop mal jusqu'à présent, je crois. Et le plus avancé que vous obtenez est un développeur eux, ou vous serez en mesure d'épineter les choses beaucoup plus rapidement parce que vous comprenez les systèmes qui se trouvent derrière eux. Ok, donc c'est en train de se charger. Bien que je sais que la première chose que je dois changer est la couleur du titre en haut. Ok, donc on a de l'histoire et des favoris, ce qui a disparu dans l'oubli. Mais c'est bon. On peut réparer ça. Et en haut, il n'y a pas de fouets. Arrêtez de le redimensionner en haut. n'y a pas de titre, donc on peut changer ça. Bien sûr, nous pouvons d'abord changer l'icône. Choisissons les favoris, qui est une petite star. Et puis en haut de ceux-ci sur les contrôleurs de vue de table. Nous pouvons changer le titre de l'élément en transcriptions et ici peut avoir des favoris. Et puis n'oubliez pas, changez la barre de Knave afin de changer la couleur de la police. Donc, si on veut du blanc, on doit le changer là-bas. Et n'oublie pas ce stupide bug d'ex code qui ne le montre pas ici. Nous devons l'exécuter sur un appareil simulé pour voir le changement de couleur, juste pour qu'ils aient des transcriptions, et nous avons des favoris. Je sais que c'est un peu redondant qu'il soit montré à deux endroits en bas et en haut, mais c'est ce que c'est pour l'instant. On peut toujours trouver des moyens de contourner ça. Ok, donc on a déjà un bon look basique pour notre application. Nous avons également besoin d'un moyen d'ajouter une transcription. Donc, ce qu'on peut faire, c'est mettre un bouton de barre ici sous les transcriptions. Donc, si nous allons juste à notre filtre en bas à droite et nous tapons bouton et je pense que l'utilisation ceci avant que nous voulons une barre, mais un élément, nous pouvons cliquer et faire glisser cela et vous remarquerez qu'il remplit automatiquement cela pour nous. Habituellement, le paradigme conçu IOS est d'ajouter l'élément un plus ou un bouton de création sur la main droite, en haut. D' accord. Et nous pouvons lui donner un titre si nous le voulons, ou nous pourrions simplement lui donner un élément système et nous pouvons changer sa teinte en blanc. Et cela montre dans le code X, ce qui est agréable pour un changement. Nous pouvons ajouter un titre si nous le voulons, mais cela ne se débarrasse pas de l'icône. Donc, si vous supprimez le titre quand vous le changez à ça, ok, alors maintenant nous aurons une petite icône plus. Et, bien sûr, nous reviendrons à la programmation beaucoup plus tard. Faux, non ? Alors qu'est-ce qui manque ? C' est un quiz pour, tu sais, Pop quiz ? Qu' est-ce qui manque ? Eh bien, ces contrôleurs de vue n'ont pas de classe. Je pense que c'était une sorte de blague, mais c'était une mauvaise. Quoi qu'il en soit, Ils n'ont pas de classe , pas de vue de table personnalisée , contrôlent une classe, donc nous devons aller les créer. Alors faisons ça. allons avoir un nouveau fichier et nous voulons du cacao touch parce que c'est un type de Avez-vous contrôlé une classe que nous faisons ? Et nous voulons un U I. bande de vous contrôler le type et vous pouvez simplement faire défiler et sélectionner ces si vous voulez, ou vous pouvez commencer à taper et ex code se sentira également pour vous cas. Le premier choix est les transcriptions, les whips, whips, vue de table, contrôleur Next, et il suffit de l'enregistrer dans votre projet. Et puis nous avons besoin d'un autre, qui est notre contrôleur de vue de table favoris. Il est ensuite et crée. C' est vrai, donc nous avons nos contrôleurs de vue de table. Revenons à notre storyboard et nous allons les assigner Donc d'abord de toutes les transcriptions, assurez-vous que vous avez défini le contrôleur de vue de table et vous le saurez parce que la classe en haut à droite vous indique quel type de classe il est, et vous être en mesure de sélectionner vos transcriptions dans la même chose pour les favoris. Et ici, vous pouvez voir que je n'ai pas vraiment sélectionné. Je pense que je vais avoir raison ou avoir choisi quelque chose d'autre là-bas parce que je n'ai rien sur le dessus, non ? Donc je pense qu'il a aussi choisi la relation. Donc, ce que vous pouvez faire est juste sélectionné dans la liste, puis votre classe apparaîtra en haut, est-ce pas ? Vous accédez aux favoris, appuyez sur Entrée et Enregistrer, de sorte que les vues de table sont maintenant configurées. Maintenant, normalement, à ce stade, j'aime vraiment ce que j'aime à tester les contrôleurs de vue de table. Donc, ce que je veux faire est de les remplir avec des données factices. Si tu veux. Allons d'abord à notre tableau de transcriptions contrôle du fichier. Et mettons quelques données factices ici pour que nous puissions simplement créer un tableau simple appelé éléments fictifs ou quelque chose comme ça. Nous pouvons supprimer cela plus tard, qui est un tableau de chaînes, et ceci est égal à et nous allons juste mettre quelques chaînes ici. Donc juste g sont Hey, n'a pas d'importance si sa capitale ou quoi que ce soit et l'équipe OK, donc vous avez sorti des objets fictifs. Et rappelez-vous, lorsque vous créez ce contrôleur de vue de table à partir d'un modèle, il fait toute la source de données pour vous ou les fonctions dont vous avez besoin. Tout ce que vous avez à faire est de changer le nombre d'articles 21 Le nombre de lignes dans cette section. C' est juste compter les données que nous avons. Alors allons-y, objets factices que je ne compte pas. Et enfin, nous avons besoin de la cellule réelle. Donc nous avons besoin de peu commun cette petite section. Nous devons lui donner la réutilisation. Identifier. Donc je crois que c'était des transcriptions. Table. Fais attention à la façon dont tu l'épelles ainsi et on va vendre des points et des étiquettes de texte. Ne pas texte est égal à notre mannequin et les éléments et les virements de chemin d'index effacés et bang comme ça . Nous devrions avoir nos cellules triées. Et nous avons d'autres trucs ici pour éditer nos tables. Et quoi ne pas les déplacer, pour se déplacer nous-mêmes. articles de navigation. On peut ignorer ça pour l'instant. Ce dont nous avons besoin est une ligne sélectionnée à, et cela nous permettra de sélectionner la route. Tu te souviens ? Barre grise qui arrive bien, on va s'en débarrasser. Mince le dans les fesses maintenant. Shrink Cape Select nous a joué sur notre péché. Et notre premier onglet Whoops a échoué lamentablement. De quoi a-t-il besoin ? Oh, il a besoin et remplacer. Ok, jouons. Oh, ma chère. Maintenant, si vous cliquez sur cette petite icône rouge les droits en haut dans votre petite barre, vous pouvez voir ce qu'il attend. On s'attendait à un séparateur. Oh, c'est parce que j'ai fait une erreur dans le tableau. Sauvez-le. Running est donc ce sont des petites erreurs idiotes qui vous attrapent. Je pense que je semble avoir une erreur que je peux voir en arrière-plan ici. Ça me dit que j'ai une sorte d'époque. Je ne sais pas de quoi il s'agit. Donc, si nous défilons vers le haut dans notre sortie, nous avons beaucoup de messages horribles. Là, nous allons, incapable de deke votre cellule avec identifier une vue de table de transcriptions. Donc, et c'est ce que je veux dire à propos de la bonne chose la première fois. Allez à notre storyboard. Allons à nos transcriptions, exhortons la cellule et je transcription Shin est ce que je devrais avoir. Allons à nos transcriptions, contrôleur de vue de table et corrigeons que c'est le crash dont je parlais. Cela peut arriver quand vous vous trompez et que j'ai une autre ère. Quelle est l'époque ici ? Vue de tableau de transcription. C' est toujours errer. Eh bien, voyons voir. Qu' est-ce que j'ai fait ? Sortons de la cellule après la droite. Comme si je disais que je devrais suivre mes propres conseils. Copie, danse. Passons à notre fichier et collez-le pour nous assurer que c'est la même chose. Maintenant, jouons-le sur notre carte SIM et j'espère que je l'ai bien fait cette fois. On y va. Nous avons nous-mêmes et nous avons notre droit de sélection, donc c'est trié. On peut faire la même chose dans les favoris, et je pense qu'on devrait juste s'assurer que tout va bien. Ce qu'on peut faire, c'est juste copier les objets factices. Tout d'abord, commande Voir, passez à nos mannequins de décrochage du contrôleur de vue favoris dans leur Revenons à nos transcriptions. Nous pouvons simplement copier sur tous ces éléments de vue de table car il devrait être plus ou moins le même. En dehors de vous l'avez deviné l'identification pour les cellules de vue de table. Allons voir ce que c'est dans les favoris du Story Board. Je pense que je vais changer cela en cellule de vue de table préférée, Venez dans notre fichier et collez-le dans. Ok, maintenant frappons le jeu, et nous devrions maintenant avoir une vue de table favoris, bascule et rouler. Donc, sa subvention et favoris et ils défilent un peu. Nous n'avons pas encore assez de données pour sortir de l'écran, mais nous pouvons les laisser tel quel. Et aussi, nous pouvons vérifier cette petite icône plus dans le coin supérieur que elex nous sommes plus ou moins bon. Teoh. Ok, alors arrêtons ça de courir. Revenons à notre storyboard et c'est la dernière chose que nous allons faire dans cette section est en fait de configurer notre écran d'autorisation. Maintenant, juste avant de le faire, la raison pour laquelle nous configurons un écran quatre autorisations est que lorsque notre application se charge pour la première fois , nous pouvons, comme d'habitude, demander l'autorisation à notre utilisateur. Donc, quel que soit l'onglet dans lequel ils sont, ils peuvent demander la permission. Maintenant, vous nous savons par expérience Il s'agit simplement d'un contrôleur d'alerte qui apparaît qui permet à l' utilisateur de cliquer sur OK ou annuler ou quoi que ce soit ou refuser qui causent un problème parce que cette application dépend complètement des autorisations. Sans elle, l'APP ne peut pas s'exécuter. Donc, quand il s'agit d'APS comme ça, j'aime personnellement avoir un écran séparé qui est montré à l'utilisateur. S' il n'y a pas d'autorisation pour la chose dont nous avons besoin, cela décrit spécifiquement ce qu'ils doivent faire, et aussi, cela les oblige à appuyer sur un bouton, ce qui fait apparaître le pop-up pour accorder des autorisations afin qu'ils savoir ce qu'ils ont fait. Ils l'ont lu, ils savent ce qui se passe. C' est une chose importante à noter parce que et je ne veux pas être impoli à propos des utilisateurs, mais vous obtenez beaucoup d'utilisateurs stupides et ils vous donneront une étoile parce qu'ils ne comprennent pas les autorisations ou, plus probablement, vous n'ont pas vraiment expliqué ce qui se passe pour eux. Donc, c'est ma façon par défaut de demander des autorisations importantes. Je prends un contrôleur de vue. Génial, non ? Je vais le déposer. Ce n'est pas attaché aux onglets ou aux contrôleurs de navigation. Ça va être complètement autonome. Et ça va montrer tout ce qu'on a et ne le permettra pas. Utilisé pour aller éternellement jusqu'à ce qu'ils accordent réellement des autorisations. Ok, donc nous avons nos quelques contrôleurs maintenant ce contrôleur de vue pour Click our Class Inspector, il n'a pas encore de classe. Nous allons en créer un, évidemment, mais il a un storyboard. Et c' est comme ça que nous allons y faire référence. Je crois que j'ai déjà fait ça avec toi. Donc, les autorisations contrôle de vue de easy Donc, c'est comme ça que nous allons réellement référencer ce contrôleur de vue. Droit ? Alors donnons-lui un peu de ah, sortant, n'est-ce pas ? Sélectionnons la vue principale de celui-ci. Changeons ce fond de fusible et nous devrions avoir un historique des couleurs quelque part. On y va. Nous pouvons avoir la même couleur rouge rosée et ce dont nous avons besoin là où nous avons besoin d'un texte pour expliquer ce qui se passe à notre utilisateur. Ça va être une vue de texte. Cela permet plusieurs lignes de textures que vous pouvez voir maintenant à l'intérieur de la section des attributs. Nous pouvons mettre un peu de texte à notre utilisateur. Dites que cette application a besoin d'accès à votre microphone afin de transcrire votre épinard efficacement clic permettre de grogner l'accès. D' accord. Et puis on peut juste lisser ça, le mettre au milieu. On peut changer la couleur de l'avant. Donc on fait un front blanc, et maintenant on doit se débarrasser de ce fond. Alors faisons défiler vers le bas. Modifier l'arrière-plan. Oups, ça a disparu. Contexte à effacer. Si clair le fait voir à travers. On peut remonter. Vous pouvez augmenter l'avant Ah, sectionner la mauvaise chose ici. Nous allons juste faire avec une boîte pop-up et bien fait, donc nous avons maintenant peu d'accès. Message à l'écran. Laissons tomber dans un bouton, juste un vieux bouton ordinaire double clic et appelez-le permettre. Changez sa couleur en blanc et augmentez la taille de la police. Laisse tomber quelque part au centre comme, disons, Ok, pour qu'on puisse juste positionner des trucs. Maintenant, obtenons ce champ de texte. Laissez-le tomber ou est entièrement verticalement au centre. Nous pouvons compenser cet objet en double-cliquant dessus moins. Je n'ai pas 30 pas. Fais-le. C' était assez proche, n'est-ce pas ? C' était très proche. Donnons-lui une largeur et une hauteur et ou faites-le tomber un peu. Je vais placer mon bouton au centre. Je vais donner à ce bouton une largeur fixe, quelque chose de gentil et large. Oh, et une hauteur fixe, agréable et grand que l'utilisation de compresser et puis nous allons juste hoops. Contrôlons le clic et glissé sur l'étiquette et donnez-nous un espacement vertical, ok, et puis vous pouvez mélanger ces choses selon votre goût, donc nous voulons que ce bouton soit très, très proéminent afin qu'il puisse augmenter la taille pour le faire. Ok, je pense que ça n'a pas l'air trop mal. Il y a beaucoup de mélange. Pouvez-vous justifier le texte ici pour le rendre un peu meilleur ? Je pense que ça a l'air un peu plus propre. Changeons. C' est là. Transcrivez votre discours. Ok, ça a l'air plutôt bien. Maintenant, la dernière chose que nous faisons est de créer un contrôle de vue, et cela va avec cela. Donc, ajoutez une nouvelle classe de cacao de fichier tactile, et nous voulons un vieux contrôleur simple quelques, et nous allons appeler ce contrôleur de vue des autorisations prochaine et créer. Retournez au storboard et attribuons-le dans la classe. Inspecteur, sauvegardez votre projet. Et nous sommes moralistes avec tout ce que vous pouvez voir. Cela ne nous prend qu'environ une demi-heure pour aller du début à presque la fin de la mise en place de notre Vous êtes évidemment là des ajustements sur la route. Mais je veux dire, regardez-le. C' est assez impressionnant. En l'état actuel, nous avons fait un jeu de couleurs agréable et cohérent juste au hasard en utilisant les éléments intégrés, et nous avons ajouté tous les écrans qui étaient susceptibles d'avoir besoin. Ce qui n'est pas évident, et ce que je n'ai pas inclus dans cette section, c'est le fait que j'ai préparé pour cela. J' ai écrit des trucs sur papier, et si tu fais partie des papiers de nouvelle génération, cette vieille technologie où tu peux écrire, , c'est comme un crayon de pomme, mais ça s'appelle un crayon . C' est incroyable. Désolé d'être sarcastique. C' est ma nation. Mais si vous avez une idée de sieste, écrivez-la sur papier , récupérez ces choses, et ensuite vous pouvez venir à vos storyboards et vous pouvez les éteindre. Vous pouvez tout sortir sur un storyboard et ensuite programmer à partir de ce moment, ce qui rend votre vie beaucoup plus facile. Une fois que vous pouvez afficher l'intégralité de votre application et à quoi elle va ressembler à l'avenir 109. M13 3 Permissions existantes et demandes pour le microphone et de discours: Maintenant que nous avons mis en place notre morale en termes de graphiques, il est temps de faire un peu de codage. Donc maintenant, nous allons vérifier et demander l'autorisation du microphone et de la reconnaissance vocale si c'est quelque chose que nous devons faire, selon le résultat de la vérification. Donc, d'une certaine façon, nous détournons le processus qu'Apple a implémente pour faire ce genre de chose pour demander des autorisations. Nous devons le faire parce que notre application dépend complètement de ces autorisations. Nous devons donc arrêter l'utilisateur dans leurs traces afin qu'il puisse faire fonctionner l'application correctement. Alors ouvrons le code X et voyons de quoi je parle. Droit ? Donc, nous sommes ici avec notre ab de base sorte de disposition dans notre storyboard et de rappel. Nous avons ce contrôleur de vue qui nous indique si trois utilisateurs n'ont pas encore accordé l'accès ou il montre quand l'utilisateur charge la première sortie afin qu'ils puissent cliquer autoriser et accorder l'accès . Ok, donc ce qu'on va faire, c'est commencer à programmer ça. Mais d'abord, nous avons besoin d'un moyen de vérifier si nous devrions montrer cet écran et la façon de le faire est de vérifier les autorisations existantes, et l'endroit évident pour le faire est dans ces toutes premières transcriptions de contrôleur que apparaît comme le premier onglet de notre application. Donc, lorsque ces charges vérifieront les autorisations, si elles ne sont pas correctes, nous allons déclencher ce contrôleur de vue supplémentaire pour permettre à l'utilisateur de tout autoriser ou lui donner un autre type de message. Ok, alors passons à nos transcriptions. Quelques contrôleurs, je crois que c'est comme ça que j'appelle ça. Oui, contrôleur de vue de table. Maintenant, tout d' abord, à l'intérieur d'ici, nous devons importer quelques choses. La première chose que nous devons importer est ce qu'on appelle la Fondation A V et cela signifie Audio Video Foundation. Et nous en avons besoin pour vérifier les autorisations d'enregistrement et ce genre de choses. Ensuite, nous allons également importer la parole et la parole est liée à Sirikit et nous permettant d'obtenir autorisations pour la transcription et ce genre de droits de chose. Maintenant, sur sa fonction créative, cela va vérifier les autorisations existantes donc n'importe où dans votre contrôleur de vue en dehors de cette source de vue de table, bien sûr, parce que nous voulons garder notre section séparée. Nous allons avoir un funk pour vérifier les autorisations ouvrir et fermer nos accolades. Ok, maintenant, la première chose que nous allons voir, c'est si nous avons des autorisations d'enregistrement autorisées. Donc, nous allons épave autorisé est égal à et cela vient de la session audio d'une V. Instance partagée. N' enregistrez pas la permission. Ok, donc si on a ça et qu'il est égal à la catégorie accordée, alors on peut faire quelque chose avec ça. Donc ce que je viens de faire, c'est un petit truc rapide que nous avons. Et si je bouge ce truc sur le côté, vous pouvez tout voir en une seule ligne. Nous avons cette seule ligne, mais nous avons un égal et égal. Ce que je veux dire, c'est laisser enregistrer. Ce sera un booléen qui finira avec, je crois, qui survolera. Ça pourrait nous le dire. Non, ça ne le fait pas. Quoi qu'on dise, si c'est égal à ça, alors on va mettre ça pour que ça finisse comme vrai ou faux. Notre enregistrement est-il autorisé ? Voici un peu rapide, la main courte. Plutôt que de prendre deux lignes pour le faire ou dire, si une déclaration ou quelque chose comme ça, alors nous allons vérifier si notre transcription est autorisée et cela sort du discours de S. F. Reconnaître une classe ne le fait pas, et c'est simplement le statut d'autorisation et nous ferons la même astuce. Si c'est égal à point autorisé. J' aimerais qu'ils pensent que c'est le bon. Oui, j'aimerais qu'ils donnent ces mots du même ou utilisent la même syntaxe plutôt dans ces différents éléments. Mais c'est ce que c'est. Ils vont probablement changer cela éventuellement. Donc tout va bien et a du sens pour nous. Donc maintenant, nous avons deux variables pour voir si nous sommes autorisés à enregistrer et pour voir si nous sommes autorisés à la transcription. Ok, maintenant on va le faire. Une autre petite astuce de programmation avancée est que nous allons réellement combiner l'enregistrement et la transcription, parce que si vous y pensez, les deux doivent être vrais pour nous. Toe fonctionne le haut correctement afin que nous puissions faire un seul booléen appelé Met off est égal à recadrer, puis nous tapons et transcribe off. C' est cela combine les milliards et si l'un de ceux-ci est faux, alors hors sera faux Orth ne sera vrai que si les deux hors de ceux-ci sont vrais. Ok, c'est un petit truc pratique car tu as vraiment condensé notre code ces jours-ci. Maintenant, nous pouvons vérifier si ce n'est pas les deux. Donc si nous ne sommes pas autorisés, alors nous allons faire quelque chose. Montrez quelques manettes et nous allons remplir le code dans un peu. Sinon, on peut faire autre chose. Eh bien, qu'est-ce qu'on a vraiment besoin de faire d'autre ? Si nous sommes autorisés, nous pouvons continuer à utiliser l'application Il n'y a rien à vérifier, donc nous n'avons pas vraiment besoin et sinon nous pouvons laisser cela dehors. Ok, donc maintenant nous pouvons remplir ce code à l'intérieur de la déclaration if, et la première chose que nous allons faire est de montrer le contrôleur de vue d'autorisation qui vient de notre planche principale. Donc celui-ci ici, donc nous devons l'attraper, et cela pourrait finir par être facultatif. Donc, si let v z est égal à des travaux de storyboard auto-point et nous l'avons fait avant inst enshi huit contrôleur de vue avec un identifiant et ce sera une chaîne. Regardons notre storyboard à nouveau. Exactement ce que cette chaîne waas permissions v C Donc j'ai appris de mes erreurs. Les gars, je vais le faire correctement. Autorisations VC. Donc, si nous pouvons avoir ces quelques manettes, alors faisons quelque chose avec, comme le montrer. Comment on le montre ? Eh bien, nous avons besoin d'un contrôleur de navigation qui prend soin de la pile qui a montré à nos utilisateurs que nous allons mettre le contrôleur de navigation run se contrôleur de vue et vous remarquerez que c'est facultatif et il peut ne pas exister parce que vous n'aurait peut-être pas gagné. Et c'est pourquoi nous avons intégré un à l'intérieur de nos robinets. Maintenant, vous remarquerez en haut. Il dit ici, l'ancêtre le plus proche dans la hiérarchie du contrôleur de vue. C' est le maintenant qui est un contrôleur de navigation. Donc, cela va parcourir l'arbre jusqu'au début dans notre storyboard et trouver le premier contrôleur de vue qui est réellement le plus proche de, Ou plutôt il va trouver le premier contrôleur de knave qui est en fait le plus proche de cette vue contrôleur. C' est donc quelque chose à garder à l'esprit pour les AP plus complexes. C' est donc facultatif, et nous allons présenter notre contrôleur de vue. Nous allons à l'animation et à l'achèvement. Alors qu'on n'a rien à faire. Ok, alors nous allons vérifier les autorisations à l'intérieur. Tu l'as chargé et sauvé ? Laissons ça dans notre simulateur. Et parce que nous n'avons pas encore demandé d'autorisations, cela devrait simplement afficher cet écran au-dessus de ce que nous avons actuellement. Et là, nous l'avons, donc évidemment permis de faire n'importe quoi, mais vous remarquerez. Ce qui est important ici, c'est que nous sommes complètement bloqués à l'intérieur de cet écran. Nous supprimons ce texte autour très bien, peu importe. En fait, peut-on changer ce texte ? Oh, il s'avère que nous pouvons, donc nous allons changer ça. Mais je veux que vous remarquiez que l'utilisation que je ne peux pas utiliser l'application à moins qu'ils autorisent les autorisations. Arrêtons de courir. Réparons juste ce petit truc d'édition de défilement ennuyeux. Donc, nous allons cliquer sur la zone de texte du champ de texte dans notre storyboard Onda juste ses propriétés. Nous pouvons désactiver créditable et nous pouvons désactiver sélectionnable, et cela devrait prendre soin de permettre à l'utilisateur d'éditer le message. Ça ne nous fait pas de mal parce que alors et s'ils étaient édités ? Ça n'a pas d'importance. Ok, donc maintenant nous devons obtenir les autorisations réelles. Et si vous êtes un appel, nous devons ouvrir notre liste info point p afin de les obtenir. Nous devons donc y ajouter une clé. Nous survolons en haut clic plus et nous commençons à rechercher la confidentialité. Et cela va être à voir avec la description de l'utilisation du microphone. Nous devons lui donner une valeur. Et c'est ce qui est montré à l'utilisateur et comment devrions-nous appeler cela ? Voyons voir, transcribe. Donc, nous n'avons pas vraiment besoin que cela soit très détaillé parce que nous avons déjà des détails sur l'écran que nous avons créé. C' est l'intimité du microphone. Nous devons réellement ajouter une autre clé sur cette clé est dans la reconnaissance vocale s, description d' utilisation et appuyez sur Entrée. Et ce que je viens de vous montrer, c'était le moyen alternatif de mettre ces propriétés dans. Ils ont un nom long et ils ont un nom descriptif. Donc ça a changé le nom descriptif pour nous. Ensuite, vous pouvez les mettre dans les deux sens. Ça n'a pas vraiment d'importance. D' accord ? Que devrions-nous avoir pour ces tendances ? Scribe er a besoin de Voyons voir. Il a besoin de cette permission. J' ai lu. Impossible d'épeler quoi que ce soit aujourd'hui a besoin de cette autorisation pour transcrire votre audio. C' est totalement à vous de décider Si vous voulez dire que nous ne collectons pas votre audio de quelque façon que ce soit ou nous ne le faisons pas en mer, utilisez votre audio d'une autre manière parce que les gens se méfient assez ces jours de vie privée. Ok, donc nous avons nos autorisations pour vous triées. Maintenant, nous avons juste besoin de demander la permission. Et cela vient de notre bouton d'autorisation lorsque nous cliquons dessus celui-ci. Alors passons à son Story Board, qui est le contrôleur de vue des autorisations et ce que nous devons revenir en arrière, en fait, et nous devons ouvrir ce bouton. Donc, ouvrez le contrôle de l'assistant, cliquez et faites glisser le bouton autoriser cliqué afin que nous puissions l'action et le connecter. Super. Donc, nous pouvons revenir à l'édition de notre code de contrôleur de vue de permissions un intérieur d'ici allait réellement demander des autorisations. Donc, créons une fonction tout d'abord pour demander nos autorisations d'enregistrement et après cela créera également une fonction pour demander des autorisations de transcription. Ok, maintenant ce qu'on va faire, c'est d' abord, on va obtenir les autorisations d'enregistrement, ce qui est très bien. Et si on les obtient, on va demander la transcription, donc on ne les demandera pas les deux en même temps. Donc, nous aurons une petite cascade qui se passe à l'intérieur de nos clics de bouton d'autorisation. On va demander des commissions de disque Festival. Ok, alors comment on les obtient ? Eh bien, nous avons besoin de notre séance audio A V. Donc, au sommet, nous devons importer une fondation V, et nous devons également importer la parole. C' est pour les autorisations de transcription. Droit ? Demandons la permission audio. Ainsi, un point de session audio V instance partagée point de requête autorisation d'enregistrement. D' accord. Pour que nous puissions appuyer sur Entrée, et il remplira tout pour nous. Maintenant, ce booléen revient si nous avons réellement la permission ou non, et nous pouvons appeler cela autorisé, puis nous contestons autorisé dans notre code. Donc, si nous sommes autorisés, alors nous pouvons demander des permissions transcrites. Si nous ne sommes pas autorisés, nous pouvons peut-être envoyer une sorte de message d'erreur à nous-mêmes, aux développeurs, ou à deux utilisateurs eux-mêmes. Et celui-ci, bien sûr, a besoin de soi. D' accord. Maintenant, nous en venons à demander des autorisations de transcription, qui vient de la parole SF. Reconnaître les requêtes point er. Autorisation. Donc encore une fois, c'est que je n'aime pas comment ils changent le libellé entre ces choses, mais de toute façon, il suffit de frapper, Entrée sur la commande, complet. Et puis à l'intérieur d'ici, il va vous rendre sur le statut d'autorisation. Et dans le code, on peut le vérifier. Donc, un si le statut off est vrai et nous ne pouvons pas simplement l'avoir comme ceci parce que ce n'est pas un booléen , donc nous devons le comparer à son type, qui est le point autorisé régler complétant la seconde. Allez ou je vais le faire. Merci. Ouverture du code X. Fermez les accolades. Alors vérifions que le code X sait ce que nous faisons ici. J' ai pas de zones. C' est bien, non ? Donc, si c'est autorisé, nous sommes prêts à y aller. Et cela signifie que nous pouvons rejeter ce contrôleur de vue. Donc auto point rejeter animé et à la fin, ne rien faire et totalement à vous si vous voulez écrire un message d'erreur ici pour vous-même. Ok, donc c'est bon. Tu as notre truc appelé. Autoriser le bouton cliqué. Super. Maintenant je vais jouer ça sur notre sim, et on devrait voir tout fonctionne très, très bien pour qu'on puisse cliquer, permettre le transfert. J' aimerais avoir accès à la reconnaissance vocale. D' accord. Et il s'avère que nous avons déjà un micro, je pense, mais vérifions ça. Allons aux paramètres de notre téléphone. Allons au micro de confidentialité et il s'avère que nous n'avons pas vraiment le microphone. Alors, qu'est-ce qui se passe avec le microphone ? Je veux dire, nous avons la reconnaissance de la parole. C' est très bien. Retournons ici. Arrêtez cette course et voyons ce qui se passe parce que de toute évidence il est passé et il est autorisé. Sinon, nous n'aurions pas la demande pour ce qui se passe, ce que nous avons clairement vu se produire. Donc il y a quelque chose de très étrange qui se passe ici maintenant, que pourrait-il être ? Eh bien, la première étape, quand vous faites ces choses, c'est que vous pouvez vérifier votre code. On sait qu'on a un appel d'info. Oui, c'est la partie la plus importante. Nous savons que le code est tombé pour demander des transcriptions. Donc ce que je vais faire est de brancher mon iPad, et ce que je vais faire, c'est que je vais l'exécuter sur l'iPad, et je vais m'assurer qu'il m'a demandé un microphone parce que le simulé peut avoir des problèmes autour des périphériques matériels. Donc, si vous voulez le faire, il suffit de brancher votre appareil à votre Mac, cliquer sur l'ordinateur de confiance ou tout ce qui s'affiche, puis de cliquer sur Play dessus et vous allez obtenir un build . Échec car la signature pour le transcriber nécessite une équipe de développement. Ok, donc ce que vous devez faire, c'est juste de vous inscrire pour un compte de développeur Apple. Pas celui payé. Juste le libre. Va chercher sur Google. Vous le trouverez immédiatement. Inscrivez-vous pour ça. Accédez aux préférences de code X. Euh, préférences, oui. Allez aux comptes. Cliquez sur l'icône plus et connectez-vous avec votre apple i d. Et une fois que vous avez fait cela, nettoyez simplement votre produit, puis essayez de l'exécuter à nouveau sur votre appareil. Andi différent nécessite une équipe de développement. Ok, donc une fois que vous vous êtes connecté, passez à la structure de votre dossier Project. Cliquez sur le projet le plus haut et cliquez sur votre équipe et il fera tout ce dont vous avez besoin. Donc, ce que j'ai fait, il y a cliquez transcribe une solution dans l'onglet Général supérieur. Ensuite, vous pouvez sélectionner l'équipe qui est en dessous, et elle fait tout ce que vous deviez faire à partir de ce moment. Alors maintenant, je peux frapper jouer. Espérons que je n'ai pas besoin de le nettoyer, et il va orteil obtenir automatiquement les certificats et les autorisations dont il a besoin pour fonctionner sur l'iPad. Ce sont les constructeurs qui ont réussi et quoi, plutôt que de s'arrêter, suffit de vous montrer ce qu'il y a sur l'iPad. Je vais juste te parler de ce que je vois sur l'iPad. Donc, il se charge lentement mais sûrement je pense que c'est un iPad mini, aussi. C' est un peu lent du côté lent. J' ai donc l'écran. C' est l'application il écran d'autorisations. Je clique, autorise. Et il m'a demandé si je voulais accéder au microphone et j'ai cliqué, ok ? Et puis la reconnaissance vocale sur laquelle j'ai cliqué, ok ? Et l'écran d'autorisation a disparu pour que nous puissions arrêter ça. Et nous savons que c'était vrai. Donc à partir de maintenant, nous pouvons utiliser le simulateur pour la plupart de cela, la plupart de cela. Nous pourrions avoir besoin d'utiliser à nouveau l'iPad à un moment donné, mais nous savons que cela fonctionne. Encore une fois, il y a une leçon pour vous tester sur un vrai appareil. Ça aide beaucoup. Ok, maintenant il y a quelque chose qui se cache et qui attend de nous avoir. Donc si on va à notre simulateur et qu'on va voir, je sais qu'on n'a pas de micro, alors ne t'en fais pas ou ne me fais pas. Peut-être que dans le matériel, on pourrait en activer un. Non, j'espère juste y avoir de l'espoir. De toute façon. Allons à la reconnaissance vocale et nous allons de transcripteur autorisé. Ok, alors fermons ça. Double-cliquez sur le bouton d'accueil et balayons le transcriber, puis relancez-le. Ok, donc on a révoqué la permission et on a dit qu'il est sorti. C' est faux. Cliquez sur autoriser et nous n'obtenons rien montré. Mais nous savons que ça marche. Alors que se passe-t-il ? Eh bien, pour que APS ne gêne pas leurs utilisateurs, Apple l'a fait. Donc, vous n'avez qu'une chance d'accorder des autorisations avec une fenêtre contextuelle. Après cela, vous devez réellement modifier les autorisations dans les paramètres vous-même en tant qu'utilisateur, et il n'y a rien que votre application puisse faire à ce sujet. C' est très ennuyeux, mais c'est comme ça, non ? Alors réparons ça. Allons à notre contrôleur de vue des autorisations et vous remarquerez que dans ce cas, nous avons notre vue n'a pas été chargée. Et qu'est-ce qu'on va faire ? J' essaie juste de penser que bien, la première chose qu'on peut faire est de vérifier si on tombe jusqu'ici. Peut-être que ce message d'erreur va montrer, alors passons ici comme ça, Et nous allons imprimer quelque chose à nous-mêmes et disons une erreur ici. Donc ça va fonctionner et on fait juste ça pour voir où les erreurs vont se produire jusqu' à maintenant. J' ai les ennuis habituels. Ça va faire ça et on a nos problèmes habituels. Lorsque nous cliquons sur Autoriser. On n'a pas le pop up comme on s'y attendait et on a une erreur ici. Donc, quand nous cliquons, il nous amène réellement à ce point. Donc, c'est bien. Ce que nous pouvons faire ici, c'est que nous pouvons changer les textes de l'étiquette sur notre travail principal. C' est ce qu'il n'y a pas de sortie. Allons à notre planche principale et modifions ce texte d'étiquette afin que vous puissiez donner à l'utilisateur un pop-up ici. Allez-vous juste changer ce texte ? C' est totalement à vous de voir. Laissons ce contrôle clic et glisser, et nous pouvons simplement appeler ceci. Ce n'est pas l'étiquette. C' est une vue de texte. On peut juste appeler ce texte de vous. Simple est que alors nous allons également aidé à allumer le bouton lui-même. Pas le clic, mais le bouton et vous verrez pourquoi serait pendant que dans une minute. Revenons à notre contrôleur de vue. Nous avons notre bouton et le texte vous le triez maintenant. Et donc si nous avons une ère, nous devrions probablement créer une fonction pour montrer l'état de l'époque sur Qu'est-ce qu'on va faire ici ou festival ? On va l'appeler « self-dot show air estate ». Et la première chose qu'on va faire est de saisir notre champ de texte, qui devrait être un détective. Vous plutôt vue texte, texte doc et nous pouvons définir du texte car il est égal à. Et nous pouvons modifier le texte pour refléter le fait que l'utilisateur a refusé nos commissions APP . Vous avez précédemment refusé à cette application l'accès à la reconnaissance vocale. Ah, microphone, s'il vous plaît, ouvrez les réglages manuellement et modifiez-les, puis dites-leur non, nous le laisserons à ce point bouleversé. C' est une exigence pro. Donc totalement blâmer pomme pour cela parce que c'est de leur faute. Ils ne te laisseront pas avoir une autre pop up. D' accord. Et alors que devrions-nous faire d'autre ? Eh bien, nous devrions avoir notre bouton et nous devrions désactiver le bouton lui-même. Donc désactivé, ou plutôt, le point de bouton whoops est activé est égal à false. Et comment votre utilisation et de savoir que c'est le cas ou nous devrions avoir un peu d'animation. Vous l'êtes. Vous n'animez pas avec la durée. Juste un très simple. Disons plus d'une demi-seconde. Passez aux animations et appuyez sur. Entrez et cela laisse tomber du code. Bouton Self dot Don't Alfa est égal à North Point trois. Ça va baisser le bouton. Ok, triez ça pour qu'on puisse dire ça et qu'on puisse diriger ce Raiford et maintenant on aura peut-être un meilleur flux. Donc, l'utilisateur comprend ce qui se passe et ce que les utilisateurs eux-mêmes ont fait, pas nous. Donc nous avons besoin de notre permission. Cliquez sur Autoriser et nous avons une ère. Et je savais qu'on allait avoir une erreur à un moment donné. Je pensais juste qu'on viendrait plus tôt que ça. Alors que se passe-t-il ? Eh bien, nous avons inventé le chemin de cette époque. Regardons ce que nous pouvons obtenir en termes d'indices dans la file d'attente de reconnaissance vocale menace cinq Thread. La première est qu'il est un indice lent et subtil ici que vous devez être conscient. Nous avons deux threads qui se plaignent de Threat 5 et de Thread 1, et vous n'avez pas besoin de savoir ce que cela signifie dans chacun d'eux. Mais vous devez savoir qu'on a la menace 3 et 4 pour vous, il faut savoir que nous mélangeons des fils. Et je crois que je vous ai déjà dit à ce sujet avant que lorsque nous demandons des choses et que nous obtenons un rappel, qui est ce que c'est, ce n'est pas nécessairement sur le thread principal de l'interface utilisateur. Il pourrait être sur une autre menace. Et cela va vous causer des problèmes lorsque vous essayez de montrer sur le domaine aérien et que vous changez des choses sur le fil principal. Donc, voici où vous avez l'époque. Vous essayez de modifier cette vue de texte à partir d'une menace différente et vous ne pouvez pas le faire lui-même. Et nous avons déjà couvert ça. Ce que nous avons à faire est de déposer cela sur le thread principal, qui se trouve être le principal d'envoi Qué ancré. Ne fais pas un évier sur tout un évier signifie que ça fera quand il sera sacrément bien prêt. Et puis nous pouvons prendre tout ce code, couper et le coller. Ici, nous avons la zone. Tu vois ces arats violets sur le point de disparaître ? Le texte défini doit être appelé à partir de la menace principale uniquement. Donc c'est bien qu'ils vous préviennent à ce sujet maintenant. Ok, dit que ça devrait arranger ça. Et pendant qu'on est là ? Regardons ce moi pas rejeter. Je pense que cela fonctionne sur la principale menace. Donc on devrait avoir une dépêche. Que ne pas diriger un évier en cours d'exécution ici, et nous devrions couper ce code et le coller ici juste pour être sûr et l'enregistrer. Alors maintenant, on peut l'exécuter. Et on peut en fait revenir à ce dont je parlais avant d'être brutalement interrompu par un accident de menace. Maintenant, lorsque vous cliquez sur Autoriser, vous nous avez précédemment refusé l'accès à la reconnaissance vocale ou au microphone. Veuillez ouvrir les paramètres manuellement et les modifier. Il s'agit d'une exigence de pomme et vous remarquez que permettre s'est estompé. Donc, ce que nous devrions faire est de rendre ce champ de texte juste un peu plus grand dans notre planche principale. Donc nous pouvons adapter tout ce que nous avons que peut-être 1 70 nous allons le faire. C' est hit play et c'est double vérifier tout. Donc, nous commençons à obtenir un flux décent pour notre et le flux est très important. Dans le monde de l'application. J' oublie ce que sont les statistiques. Mais si quelqu'un doit faire trop de clics, il supprimera réellement votre application à cause de cela. Donc, si tu veux leur faire cliquer des trucs, assurez-vous qu'ils savent pourquoi. Donc, permettez que vous ayez nié pour qu'on puisse y retourner. Nous pouvons aller dans nos paramètres. Nous pouvons suivre nos propres instructions pour la reconnaissance vocale pour revenir à notre transcripteur, et il se charge sans aucun problème si bien que tout fonctionne. C' est ainsi que nous obtenons les autorisations dont nous avons besoin. Et aussi, je pense, plus important encore, c'est comment nous faisons bulle à travers les différentes demandes d'autorisation dont nous avons besoin. Ce n'est en aucun cas la seule façon de le faire ? Il y a des tonnes d'autres façons de le faire. Mais vous comprenez l'idée. Et ils étaient aussi nous avons regardé être prudent quand nous ne sommes pas sur le fil conducteur. Quand on met à jour des choses, vrai, c'est vrai,pour que ça termine cette leçon. 110. M13 4 Enregistrement de documents de microphones et de contrôleurs de vues: Maintenant que nous avons nos autorisations, nous sommes prêts à enregistrer. Donc, ce que nous allons examiner dans cette section est tout d'abord, la structure de fichiers, la structure de fichiers très basique dans IOS et où nous allons réellement stocker nos enregistrements et après cela, nous allons réellement mettre en place et préparez-vous à enregistrer des audios. Nous allons avoir des fichiers dans lesquels nous pouvons stocker nos transcriptions audio et ensuite passer à la configuration du microphone pour l'enregistrement. Alors ouvrez le code X va découvrir où nous mettons des fichiers et commençons. La première étape. Nous allons les prendre pour créer mon fichier préféré, qui est un fichier d'utilitaires dans notre projet, qui est une base avec fichier, bien sûr, et est nommé utilitaires. Allez-y et créez cela, puis crée la classe hors utilitaires et commençons. Donc la première chose dont nous avons besoin dans notre système Iowa est d'obtenir le répertoire des documents. Maintenant, ce répertoire de documents est le répertoire qui appartient à cette application particulière. Et dans IOS, chaque application est sandbox. Et cela signifie que APS ne peut pas parler aux répertoires de documents de l'autre, moins pas facilement, et du moins pas avec tout un tas d'autorisations. Donc, évidemment, c'est bon pour la sécurité. Nous avons créé une fonction appelée répertoire Get Docks, et cela va retourner quelque chose que vous ne pouvez pas attendre qu'il retourne, qui est un u R l. Et vous pensez probablement à u R l comme quelque chose que vous voyez sur le Web. Mais vous êtes l signifie en fait l'emplacement des ressources universelles ou quelque chose comme ça sur ce que cela signifie est qu'il peut réellement pointer vers un serveur distant ou, comme la description le dit ici, vers un chemin d'accès à un fichier local. Donc, dans IOS un u r l peut réellement pointer vers un fichier sur le système, non ? Alors laissez les chemins égaux maintenant, pourquoi ai-je mis des pièces ? Parce que ce que je suis sur le point de taper pourrait renvoyer plus d'un chemin. Et qu'est-ce qu'on va taper ? On va aller trouver où se trouve le répertoire des documents. Et ça vient de notre gestionnaire de fichiers. La version par défaut du gestionnaire de fichiers vides vous êtes Els quatre répertoire frappé Entrée. Il va commander sensation pour vous et vous demande un répertoire de chemin de recherche et ceci est le répertoire de document sombre et il demande un gestionnaire de fichiers à un tel chemin Domain Mosque, qui est le masque de domaine des utilisateurs actuels. Et c'est le répertoire personnel de l'utilisateur. L' endroit de utilise encore des objets personnels. Maintenant, cela implique en quelque sorte qu'à un moment donné IOS ou peut-être déjà IOS a la fonctionnalité d' avoir plusieurs utilisateurs pour un appareil. Ok, donc ça va à ça pourrait en revenir plus d'un. Vous êtes dehors. Je ne connais pas les raisons techniques exactes, mais je sais que c'est le cas. Et vous savez que si vous survolez ou tapez simplement votre RL à nouveau, cela vous indique que vous retournez un tableau de votre RL Ok, donc pour l'instant, nous allons juste prendre le premier 1 qu'il retourne parce que nous pouvons écrire dessus. Donc laissez le répertoire Dunks égal à ces parties que nous venons de capturer et obtenir celui à l'index zéro . Donc, ce que vous RL de va toujours retourner au moins un répertoire. Ce n'est pas facultatif, donc nous savons que ça va nous donner quelque chose, et ensuite nous allons retourner le répertoire docks et nous allons enregistrer ce fichier. Maintenant, nous avons le répertoire des documents. C' est très pratique. C' est à l'intérieur de ce répertoire de documents que nous allons stocker notre fichier audio. Donc, nous avons besoin de l'U r l pour notre fichier audio. Créons cela ici, qui est une fonction obtient le fichier audio. Tu es l et ça va revenir. Vous avez deviné un u R l Maintenant, cela va être en fait facultatif parce que cela pourrait réellement échouer. Alors fais juste une pièce pour toi. Je vais voir pourquoi pourrait échouer en une minute. Parce que ça va faire face. Cela pourrait échouer. On va avoir une déclaration de capture comme, donc on va remplir notre code à l'intérieur. Faites-le Ceci est le bit qui pourrait échouer. Allons audio u r l égal à essayer, et nous allons essayer d'obtenir le répertoire des docks. Et c'est ce que nous venons de créer. Donc nous savons que ça marche. Mais ce qu'on va faire à ça parce qu'ils retournent un u r l affaibli. Utilisez toutes les méthodes et fonctions de votre RL. Ce que nous allons faire est d'essayer de modifier un composant de chemin, et cela signifie fondamentalement juste ajouter un nom de fichier à cela. Donc on a le répertoire. On va mettre la limite du classement dessus. Et le nom de fichier audio va être quelque chose comme point de fichier et M pour un C'est l' extension de fichier et le conteneur audio que nous allons utiliser. D' accord. Et si cela fonctionne, nous allons retourner un audio u R l Sinon, si cela échoue, alors nous allons retourner Neil. Et cela signifie que nous pouvons vérifier cette option plus tard. Maintenant, si nous pouvions retourner le même nom de fichier qu'un fichier qui existe déjà dans ce répertoire, nous allons l'écraser. Et évidemment, ce n'est pas une bonne idée pour notre application. Si vous ne pouvez utiliser qu'un seul fichier. Donc nous avons besoin d'un nom de fichier changeant ici. Donc je vais supprimer ce fichier, et ce qu'on va faire, c'est qu'on va avoir les dates et l'heure. De plus, nous allons créer une fonction pour obtenir la date et l'heure actuelles, et cela va retourner une force plus ou moins unique parce que vous enregistrez des choses. Tu avances à temps. Si c'est une seconde plus tard, vous avez maintenant un nouveau nom de fichier différent. Donc, c'est juste une façon standard que j'aime programmer les choses mis la date et l'heure est les noms de fichiers. Ça marche vraiment, très bien. Donc, nous allons mettre en place une fonction de date et d'heure, qui va retourner une belle chaîne simple. Et puis, comme d'habitude, vous devriez savoir comment cela fonctionne. Maintenant, nous obtenons un nouvel objet date. Nous créons une date pour la matière. Ainsi, nous donnons aux quatre matières un format de date, qui est simplement une chaîne. Et comme je l'ai mentionné précédemment, cette chaîne prend certains éléments tels que l'année, mois, jour, nos minutes, secondes. Donc, nous savons que de la seconde à la seconde, cela va être un élément unique à moins que vous n'utilisiez le fuseau horaire change. Mais c'est un cas tout autre. Mais même alors, les chances qu'ils créent le même fichier à la même date et aient voyagé à travers les fuseaux horaires sont extrêmement, extrêmement faibles quand je dis que c'est faible, mais vous ne savez jamais avant que les rapports de bogue ne commencent entrer, non ? Donc, nous allons créer la chaîne de temps est égale à quatre points de matière à partir des dates que nous avons créées. Oups. Et puis retournons cette chaîne temporelle. Ok, donc on a fait tout ça. C' est tout bon, mais vous êtes à l'avance développeur maintenant, donc je veux vous montrer quelques trucs que je fais juste pour réduire ma charge de code si vous voulez. Donc, nous allons laisser la date assez standard pour créer une nouvelle date afin que nous puissions supprimer cela et nous pouvons effectivement remplir la date. Nouvel objet ici. Il n'y a pas besoin de le faire ailleurs. Nous avons nos quatre points égaux que je pense que nous avons besoin de lignes pour cela. n'y a rien que nous puissions faire, et ensuite nous pouvons retourner la chaîne temporelle. Mais nous pouvons supprimer cela, et nous pouvons simplement retourner ce résultat en disant que j'ai réduit de cinq lignes 23 et qu'il est toujours très lisible. Ok, donc maintenant nous avons notre date et l'heure de réception et nous pouvons retourner l'audio. U R l Donc, nous allons cliquer sur cet article. Aucun appel à des fonctions de lancement ne se produit dans. Essayez l'expression. Amusant. Droit. Donc je pense que cela a vraiment changé. Donc si on reprend ça, ça ne nous dit pas que ça jette quoi que ce soit qui soit vous. C' est intéressant à savoir. Ok, donc l'ancienne version de ça jette une ère, mais maintenant ce n'est pas le cas, ce qui veut dire qu'on n'a pas besoin de tout ça. Prends attraper. C' est quelque chose qui a changé ces derniers temps. À Swift. On peut enlever. Essaie aussi. Ok, donc tu apprends quelque chose de nouveau tous les jours, non ? Maintenant, nous avons mis en place tout ce dont nous avons besoin. On peut avoir le dossier. Vous êtes j'ai le répertoire des docks et obtenir l'heure de la date. Et nous sommes moralistes garantis d'avoir un nom de fichier unique en ce moment. La prochaine chose qu'on va faire est de mettre en place un écran pour l'enregistrer. Il s'agit d'un écran pour montrer à l'utilisateur leur permettre de cliquer sur un bouton pour réellement configurer le microphone. Donc, la première étape, bien sûr, est d'aller à notre storyboard. Et créons un contrôleur de vue pour cette fonctionnalité. Zoom arrière du toucher. Cliquez et faites glisser le contrôleur d'entrevue. Peut-être quelque part ici. Merci. Il suffit de déplacer celui-ci vers le bas et de mettre cette femme parler d'affaire. J' ai quelques manettes. Maintenant, ce contrôleur de vue va montrer quand l'utilisateur clique sur cette icône plus afin que nous puissions le faire dehors du code et simplement dans les storyboards par contrôle, en cliquant sur le plus et en faisant glisser son contrôleur de vue. Et puis nous pouvons le montrer, nous pouvons le présenter en mode tôt. C' est totalement à nous de décider, donc si vous le montrez, IOS vous donnera le bouton de retour par défaut. Si vous présentez le mode Lee, vous devez créer votre propre bouton de retour. Donc je pense que nous allons le montrer et vous remarquerez en haut. Nous avons maintenant le bouton de retour. Ok, donc ça va être notre cri d'enregistrement. Nous avons donc besoin d'un contrôle de vue d'enregistrement du fichier pour aller avec cela. Alors ajoutons un nouveau fichier. contrôleur de vue d'enregistrement de classe Coca Touch frappe ensuite et vient de créer. Maintenant, revenez à notre storyboard et nous pouvons assigner ce fichier au contrôleur de vue dans l' inspecteur de classe, et nous sommes plus ou moins prêts à partir. Donc c'est un bon point ici, orteil. En fait, testez cela sur notre sim parce que nous avons fait un peu de déconnage avec utilitaires et sont peu de contrôleurs. Et comme je le dis toujours, il est bon de tester les choses tôt et souvent parce que c'est la meilleure façon de trouver des bugs avant qu'ils ne soient profondément intégrés dans votre application et il devient vraiment difficile de les déboguer. Tu peux le prendre à quelqu'un qui sait que je l'ai fait assez souvent. Allez, tu peux le faire. Je ne sais pas si vous l'avez remarqué, mais j'ai un nouvel ordinateur portable pour enregistrer. Et c'est beaucoup plus rapide que l'ancienne version, non ? Tellement des transcriptions sombres. Cliquez sur le plus et nous avons notre tendance. Crip Shin est que je dois vraiment changer ça, mais ça marche et on n'a pas d'erreurs. Arrêtons ça. Changeons cette tendance. Crip Shin est aux transcriptions. Ok, donc tout fonctionne. Maintenant, nous allons mettre en place notre contrôleur de vue d'enregistrement, où nous allons configurer la partie d'enregistrement réelle de notre festival So nous allons importer, les fondations audio vidéo, les bases de tout ce dont nous avons besoin. Et parce qu'on transcrit, on va aussi importer ce cours de parole. Maintenant, nous devons réellement configurer ce contrôleur de vue pour se conformer à ce qu'on appelle l'enregistreur audio A V délicates. Ce que ça veut dire, c'est ça. Les délégués s'occupent en fait de toutes les notifications et de la mise à feu des fonctions qui sont liées au microphone et aux choses audio externes qui pourraient réellement se produire. Par exemple, si votre APP a reçu un appel téléphonique l'année dernière, vous devez être en mesure de gérer cela d'une manière ou d'une autre. Alors configurons cela comme l'enregistreur audio A V délègue. Ok, maintenant, avec ça, il n'y a rien que vous avez à inclure par défaut, donc c'est assez pratique que vous avez configuré que vous étiez prêt à obtenir. Mais bien sûr, nous allons vouloir en enregistrer ou mettre en place certaines choses. Le festival allait faire de la place. Nous allons supprimer ces éléments que nous avons par défaut ici. Vous pouvez toujours les ajouter si nous en avons besoin. Mais j'aime que vous voyiez un bel écran propre en ce moment. Comme je l'ai dit, si un appel arrive, nous devons vraiment gérer ça. Donc, nous allons créer notre fonction appelée enregistreur audio a terminé l'enregistrement. Donc ce que les excuses ne sont pas en fait à voir avec les appels téléphoniques. Ceci est à voir avec l'enregistreur a terminé l'enregistrement comme les utilisateurs appuyez arrêté ou nous avons atteint la limite de temps. n'y a pas de place sur le système, donc mes excuses d'avoir dit la mauvaise chose là-bas. Mais ce que cela fait en fait, c'est que cela se déclenche lorsque vous utilisez les presses, arrêtez l'enregistrement. Ou, comme je le dis, vous manquez d'espace ou quelque chose, et il se déclenche automatiquement parce que c'est le délégué, donc nous n'avons pas vraiment à appeler. Arrêtez l'enregistrement. Ça fait tout pour nous. Maintenant à l'intérieur d'ici. Nous allons vérifier si nous avons terminé avec succès. C' est un drapeau. Donc si le drapeau est faux, alors nous allons faire quelque chose parce que nous n'avons pas enregistré d'autre chose. On va faire quelque chose parce que l'enregistrement du succès. Ok, donc nous avons mis en place ce cadre de base. Mettons juste un commentaire ici. Échec de l'enregistrement. Qu' est-ce qu'on va faire pendant qu'on va partir et traiter tout ce qu'on a ? Donc, nous devrions avoir quelques fonctions pour cela, comme une fonction d'enregistrement terminée. Et cela va prendre un drapeau de succès d'un boo et fera quelque chose. Ok, donc ce qu'on va faire, c'est passer ce drapeau ici, donc on va dire que enregistrement s'est terminé, donne-lui le drapeau. Et en fait, on n'a pas besoin de ça si d'autre ? Parce que si vous y pensez, ce taureau est correct. Donc, je vais supprimer le if else pour l'instant, dépeindre redondant. Et je vais simplement le faire maintenant, vous pourriez dire, pourquoi avez-vous divisé ça en deux ? Eh bien, c'est juste une bonne pratique de programmation au cas où vous commencerez à ajouter des choses plus tard. Toujours gagner côté de trop de fonctions plutôt que trop peu. Ok, donc on s'est plus ou moins occupé. Le cadre de l'enregistrement s'est terminé. Maintenant, nous avons besoin d'une fonction pour enregistrer le public. D' accord. Maintenant, quand nous enregistrons l'audio, nous avons réellement besoin d'éléments sur le premier de ceux-ci. On va avoir des visas. Les variables de niveau de classe sont une instance de l'enregistreur audio A V lui-même. Et c'est la chose qui va vraiment prendre soin de prendre votre discours et de l'enregistrer dans une entrée de fichier ou de l'encoder dans un fichier. Jusqu' à présent, enregistrement audio. Il est de type A V. Et regardez combien de 80 choses audio sont des tonnes d'entre eux. Et nous voulons, en particulier 80 enregistreur audio afin que vous puissiez lire la description, vous dit tout ce que vous devez savoir. Et puis nous avons besoin d'un u r l pour ce dossier. Jusqu' à présent. Fichier enregistré. Vous êtes l est un u R l Whoops. On y va. Maintenant, l'enregistreur audio et le comte. Nous pouvons effectivement rendre ces optionnels si nous le voulons, donc nous pouvons rendre cela facultatif pour double vérification. Il existe, et nous pouvons faire la même chose ici aussi. Alors, à droite. Tout ce qu'on a à faire, c'est de mettre des morceaux en place. Donc, pour ce fichier enregistré, vous êtes l à l'intérieur de l'enregistrement audio. Nous devrions d'abord configurer que vous êtes tous des utilitaires. Désolé. Je pense très lentement aujourd'hui. Je crois que j'ai besoin d'un café. Donc, un fichier enregistré que vous êtes l est égal aux utilitaires. Ne sois pas audiophile, Earl. Maintenant, vous pourriez être tenté d'avoir ceci et de le mettre en vue. Il a chargé. Mais ce serait une erreur. Il y a un petit insecte qui t'attend. Si vous chargez cet écran, vous enregistrez un peu d'audio, et puis vous dites Maintenant, je n'aime pas que Re enregistrer votre fichier enregistré. Tu es je vais être le même quand tu enregistreras autre chose. Et donc si vous lancez l'URL en vue a été chargée, ce sera la même chose. Et vous allez écraser le même fichier qui n'est pas bon sur l'écriture n'est pas un excellent moyen de programmation. Tu veux toujours vérifier ces choses. Donc, ce que nous faisons ici quand nous enregistrons l'audio, c'est que nous créons un nouveau fichier maintenant c'est la façon dont je programme. Vous pouvez réellement mettre ceci en vue, a chargé et ensuite limiter votre utilisateur à enregistrer un seul fichier sur cet écran ou peut-être lui donner un avertissement, disant, s'ils enregistrent, ils vont écraser le fichier. Juste quelque chose pour être au courant, non ? Non. On peut imprimer ça si on veut. Prenons notre dossier enregistré. Vous êtes l. Et nous savons qu'il existe des arrêts et vous devez demander une chaîne absolue pour cela, en fait, imprimer stout. Ok, donc pour l'instant, nous allons juste trouver ceci hors dans la vue audio de l'enregistrement a été chargé. Laissons-le sur notre simulateur et voyons ce qu'il arrive. Donc on devrait nous faire imprimer cette fille. Donc quand on pourrait Plus, on l'a là. Donc ici, c'est là que votre simulateur est contenu. Vous remarquerez que c'est allumé, Mac, au fait, évidemment, vous avez vos appareils. Vous avez votre appareil. Je suis à l'intérieur de cet appareil. Vous avez une application de données de conteneur de données, l'idée de votre application que les applications documente, puis le nom de fichier lui-même. Ainsi, vous pouvez voir d'un coup pratique l'ensemble mis en place sur le système de fichiers de l'Iowa quand il s'agit de stockage de vos siestes. Ok, donc a été mis en place. Nous avons un modèle très basique pour enregistrer l'audio. Maintenant, dans la section suivante, nous allons en fait examiner la configuration du microphone et de leur session d'enregistrement audio , et il y a quelques pièges ici et là quand nous le faisons, mais nous allons voir ce qu'ils sont et seront enfin en mesure d'enregistrer de l'audio. 111. M13 5 Enregistrement de l'audio de Recording: Prêt. Maintenant que nous avons mis en place nos répertoires de documents, nous avons fait un peu de préparation pour obtenir le nom de fichier qu'ils allaient enregistrer dans Vous allez maintenant regarder l'enregistrement à partir du microphone. Maintenant, il y a quelques étapes dans cela, et comme vous l'imaginez, c'est assez complexe parce que votre appareil mobile n'a qu'un seul microphone qui doit être partagé entre tous les appareils. Donc, ce que nous allons faire dans cette section, c'est de voir comment Apple construit des choses non seulement pour le microphone, mais pour beaucoup de choses. Ce modèle est très similaire. Comment nous demandons des autorisations pour utiliser ces choses comme le microphone, puis nous comment nous allons pour recevoir l'autorisation et exécuter ce que nous devons faire. Alors ouvre-toi, manteau X et jetons un coup d'oeil. Maintenant, nous allons travailler dans cette conférence principalement dans cet écran qui apparaît lorsque nous cliquons sur l'icône plus en haut, et cet écran va nous permettre d'enregistrer notre audio. Ne vous inquiétez pas pour les couleurs bleues en haut. On allait monter ça un peu plus tard, Ron dans ce module pour Maintenant on se concentre sur l'enregistrement SE. Notre enregistrement est principalement refait à l'intérieur de ce contrôleur de vue d'enregistrement, et nous avons rempli ce contrôleur de vue avec quelques fonctions. Nous en avons un pour enregistrer l'audio qui obtient notre fichier. Vous êtes moi et il nous l'imprime aussi. Donc, nous avons développé, n' a pas où il est. Notre vue bas n'a pas encore quelque chose qui se passe là-dedans. Donc, nous ne sommes pas en fait dans Stan Shih ating aucun enregistrement, nous avons un délégué de l'enregistreur audio V et cela nous permet d'utiliser quelques méthodes qui sont appelées telles que l' enregistreur audio a fini l'enregistrement. Et nous avons mis en place une petite fonction pour s'occuper de la fin de l'enregistrement. Et ce sera probablement l'endroit où on transcrit des choses. Donc en ce moment, tout est amer et partout, il semble. Et ne vous inquiétez pas pour ça. Pour l'instant, nous avons les nécessités de base pour citer un film célèbre, n'est-ce pas ? Donc, nous allons faire toutes nos fonctionnalités à l'intérieur de l'audio hors enregistrement pour l'enregistrement audio, comme vous pouvez le deviner, Tout d' abord, nous avons réellement besoin de créer une session audio sur. Donc, laissez session égale à, et cela sort d'une session audio V. Et si vous regardez la description, il dit que cela communique au système comment vous avez l'intention d'utiliser l'audio dans votre application ? Parce que, comme je l'ai dit, il y a n'importe qui microphone et IOS a besoin de savoir comment vous voulez utiliser ce microphone. Donc, ce que nous allons obtenir d'ici, c'est que nous allons obtenir l'instance partagée, et c'est l'instance de l'audio partagée entre tous les bras. Et une fois que nous aurons cela, nous allons essayer de définir une catégorie de lecture ou d'enregistrement audio. Donc c'est assez simple. Nous disons juste, Session ne vous asseyez pas. Les chats sont d'accord. Et nous donnons à cela une catégorie. Et nous voulons cette deuxième version sexuelle particulière, que nous donnons une catégorie au système. Et nous allons aussi lui donner quelques options que nous aimerions réellement. Touchons, Entrez maintenant quelle est la catégorie ? Eh bien, cette catégorie est une chaîne, et cela décrit un V audio. Voyez si je m'en souviens correctement. Les chats de session sont d'accord, et là nous avons toutes nos options. On a une ambiance record, lecture multi route, etc. Et ce sont toutes les choses avec lesquelles vous pouvez jouer. Mais on veut juste jouer et enregistrer, parce qu'on va enregistrer quelque chose et la lecture. Donc nous demandons cette permission si vous voulez vraiment une permission. Mais nous pouvons y penser comme ça pour rendre les choses plus faciles, puis avec les options de catégorie audio A V , session audio, options de catégorie. Désolé est beaucoup de mots là-bas canards, et nous allons donner quelques options et nous allons par défaut à l'orateur. Nous pouvons automatiquement mettre ça en ondes. Bluetooth, etcetera allaient par défaut au haut-parleur. C' est un truc assez standard si vous allez l'inventer à l'avenir qui met l'audio sur Bluetooth, le jeu d'air ou quoi que ce soit. C' est toujours une bonne idée. D' une manière générale, pour vous assurer que tout fonctionne avec ce paramètre par défaut Par défaut sur haut-parleur. Une fois que vous savez que sur votre iPhone, iPad, alors vous pouvez commencer à faire des choses plus avancées. Donc c'est juste un petit conseil pour toi en ce moment. On a une ère rouge, et je savais que ça arriverait parce que cet appel peut lancer. Et cela signifie que cela peut lancer une erreur parce que vous pourriez ne pas réellement l'obtenir. Donc nous devons l'essayer et ensuite, parce que nous l'essayons, nous devons mettre ceci dans un bloc do and catch. Nous allons faire quelque chose, et ensuite nous allons attraper les erreurs qui se produisent. Alors attrapez, nous allons l'ère et c'est tout le bloc mis en place pour nous. Donc ça a péri. Va-t'en maintenant, en bas. Bien sûr, nous pouvons avoir l'impression n'a pas pu enregistrer, et nous pouvons ajouter sur la description localisée point d'erreur pour nous donner plus de détails, non ? Donc, nous partons la session maintenant. Ce n'est pas tout ce que nous avons à voir avec la séance. Nous devons essayer de le mettre actif. Et encore une fois, cela pourrait lancer une erreur. Donc, essayez session a été mis en marche et vous remarquerez qu'il dit jettes dans cet abattage complet là. Donc, définissons cela actif comme vrai, évidemment, et la raison pour laquelle cela pourrait échouer est parce que si nous définissons cela et que quelqu'un est sur l' appel téléphonique en même temps, cela ne va probablement pas les lancer de la appel téléphonique afin de le faire. Après tout, l'iPhone est notre téléphone, donc le téléphone va prendre la priorité sur tout le reste. C' est comme ça que c'est en ce moment. Nous avons besoin de certains paramètres car nous avons défini notre session audio. Nous sommes prêts à enregistrer, mais notre appareil ne sait pas comment enregistrer ni dans quels Kodak ou formats enregistrer. Donc, plutôt que de compter sur le truc par défaut qui vient au système, je vais vous montrer comment créer un tableau de paramètres sur ce tableau de paramètres va changer va contenir tout un tas de clés et de valeurs qui spécifieront ce que nous sommes enregistrement, aussi. Donc, c'est quelque chose que vous devez réfléchir attentivement pour n'importe quel APS que vous faites à l'avenir qui enregistrent des choses parce que vous devez être sûr que vos fichiers sont peut-être compatibles inter-plateformes . Vous ne voulez pas avoir à les encoder à nouveau. Teoh. Partagez-les sur YouTube ou quelque chose comme ça, quel que soit votre système, votre à exigences jusqu'à. Donc, la première chose que nous allons commencer avec est le format A V de T. I. D. Key, et ceci est le format identifier, et ceci est un entier qui vient de Que Audie espère devrait être un audio K, et vous remarquerez que nous avons tous nos formats. Vous pouvez reconnaître certains de ces 83 etcetera, etcetera. Si vous voulez vous en tenir à quelque chose que vous savez qui va marcher, alors l'impact est quelque chose que vous voulez viser. Donc, si nous gardons le script, regardez combien il y en a. Il y a des tonnes. J' étais un excellent système pour la quantité de quatre mois que vous pouvez avoir. Donc il y en a tellement. Allons le clouer pour mettre en forme l'impact. Nous pouvons en avoir quatre, et nous voulons juste la norme A a C, qui est encore au sommet. Donc un A. C signifie Apple audio Codec, je crois. Ok, donc c'est le format. Ensuite, nous devons lui donner une clé de taux d'échantillonnage A V, et c'est 44 100. Vous pouvez augmenter le taux d'échantillonnage. Vous pouvez le diminuer. Si vous ne savez pas ce que ce sont, alors par tous les moyens Google il. C' est assez facile à comprendre, mais c'est essentiellement le genre de gros taux qu'on peut lui dire. Le nombre de canaux d'un numéro V hors de la touche de canaux. Donc, nous aimerions la stéréo maintenant parce que nous enregistrons à partir du microphone de nos appareils. Je ne pense pas qu'on puisse vraiment obtenir la stéréo, mais si on avait une puissance externe connectée, y a de bonnes chances que vous puissiez obtenir une stéréo là-dessus. Donc, il est toujours préférable de par défaut à vos fichiers seront légèrement plus grands ou probablement doubler la taille, en fait, mais il est juste une bonne pratique d'inclure deux canaux En ce moment, nous allons avoir la coda A V n thé de qualité audio. Donc, nous sommes juste en train de définir la qualité ici. Une qualité audio V ne le font pas, et nous pouvons avoir élevé, bas moyen etcetera. Donc, je vais avoir haut sur la valeur de rôle de ce point, et nous avons besoin de l'interview pour cela parce que c'est en fait un tableau d'images, et ce sont ces interviews qui sont passées comme paramètres. Je ne sais pas pourquoi ils vintage n'est pas des cordes, mais c'est probablement une bonne raison pour cela. Droit. Alors, quelle est la prochaine ? Eh bien, affaiblir enfin prêt à essayer de créer notre enregistrement audio. Donc une épave audio. Et rappelez-vous, nous créons ça plus tôt ici dans notre classe ou Dereck est égal à et encore, c'est autre chose qui peut échouer. On va essayer un enregistreur de commandes V, et on va en faire un nouveau avec quelques réglages. Donc est-ce que celui-ci l'URL et l'U. R L lui-même est le fichier enregistré un royal déballé parce que je suis la route de réglage qui peut réellement échouer. Je m'excuse que tout au long de votre tableau, c'est en fait arranger et obtenir un baril ici. Mon lit. Que pouvons-nous faire, c'est que nous pouvons mettre cela dans et si laissez ou quelque chose comme ça pour être sûr que cela n'échoue pas, vous avez regardé dans nos utilitaires. Ok, donc on s'est mis. C' est facultatif, mais on n'en a pas besoin parce qu'on devrait en avoir une. n'y a rien qui nous oblige à mettre un optionnel ici. Je crois que je pourrais me tromper, mais voyons. Donc, j'ai dit qu'il n'y a pas d'erreurs ici dans les utilitaires. Revenons à notre contrôleur de vue d'enregistrement Andi, changeons ce dossier déposé. Vous êtes moi ici pour une exclamation. Je vais le dire explicitement. Cela existe, et cela signifie que cette ère disparaîtra. Et la raison pour laquelle j'ai fait ça, c'est parce que je suis sûr que ça va exister si on arrive à ce point dans le manteau. Mais je suis sûr à 100% à cause de la façon dont je l'ai codé. ce moment, nous allons avoir notre enregistreur audio, et c'est toujours facultatif. Rappelez-vous, nous allons définir son délégué égal à vous-même l'instance de ces clubs et cela signifie maintenant que nous pouvons utiliser les fonctions remplacées ici ou non remplacées, mais le cycle de vie de la vie se bloque. Désolé, WordPress codant que les crochets que nous pouvons entrer dans pour savoir quand les choses sont arrivées. Ok, délicat est égal à moi. Donc, une fois que nous avons réglé ça et que vous n'avez plus d'erreurs. Maintenant, on peut enfin enregistrer et on peut dire ça, non ? Il est prêt à enregistrer ce qu'on a à faire. On peut déclencher l'enregistrement en vue. Ne charge donc enregistrement audio. Donc ça va commencer à essayer d'enregistrer dès qu'on aura ouvert cet écran. On va changer ça un peu plus tard, mais à des fins de test, c'est bon. ce moment, nous devons mettre en place notre enregistrement terminé. Donc, si vous vous souvenez, cela est appelé quand la fonction des délégués est virée, que va-t-on faire contre vous ? Dites que l'enregistrement audio s'arrête. Simple est que je m'occupe toujours de l'écriture du fichier et de la fermeture du fichier pour nous, mais il est intéressant de noter n'essayez pas d'accéder à ce fichier. Vous êtes l tout en enregistrant parce que évidemment vous aurez une sorte d'époque bizarre comme vous le feriez dans n'importe quel système de fichiers. Ok, maintenant, si nous avons un succès, alors nous pouvons transcrire, ce qui pourrait horrible orthographe sinon nous pouvons imprimer Recording échoué fin Teoh. Ok, donc c'est tout ce dont on a vraiment besoin. Nous pourrions avoir besoin d'une sorte de déclaration de capture ici à un moment donné quand nous en viendrons à transcription, mais pour l'instant, nous allons bien. Alors faisons ça dans notre simulateur. Andi, vérifions que nous pouvons utiliser le microphone de notre appareil. Je, er simulateur pour enregistrer réellement. Donc, on va frapper l'icône plus ici et maintenant on devrait vraiment enregistrer maintenant. On n'a pas vraiment de moyen d'arrêter tout ça, donc si on y retourne, ça va probablement l'arrêter. Mais c'est une très mauvaise façon de le faire. Tout ce qu'on faisait là, c'était vérifier. Nous n'avons pas d'erreurs et que la fonction audio d'enregistrement fonctionne réellement parce que beaucoup de code là-dedans. Bon, Alors créons un bouton de storyboard rapide à l'intérieur de cet orteil de contrôleur de vue d'enregistrement, en fait, arrêtez cet enregistrement pour qu'on le conteste un peu plus loin. Voici notre contrôleur de vue d'enregistrement. Laissons-le, mais dedans. Et je vais simplement l'envoyer à ça. Je clique toujours sur le mauvais haut. Calme-toi ici. Peu importe combien d'années vous faites ça. Tu as toujours coupé la mauvaise icône. Donc ce bouton va être nommé Arrêter l'enregistrement pour l'instant. On peut changer la couleur du texte. Donc, celui où vous pourriez vous attendre à correspondre à notre arrivé, nous pouvons juste monter en taille. Ok, dis ça. Alors sortons ce bouton. Alors rappelez-vous le contrôle, cliquez et faites glisser. Arrêtez l'enregistrement cliqué comme une action et connectez-vous. Ok, Merveilleux. On peut fermer notre assistant rédacteur en chef. Nous pouvons nous diriger vers notre dossier de votre contrôleur et nous pouvons fantommer cette fonction et nous pouvons maintenant mettre fin à notre enregistrement. Donc, nous devrons faire, c'est que notre enregistreur audio ne s'arrête pas. D' accord ? Et que maintenant, en fait, en fait, après l'ère Snowden ici, nous n'avons pas besoin d'appeler point d'enregistrement audio Stop ici. Techniquement, en fait, je pense que ce que nous devrions faire pour le laisser. Est-ce que c'est ainsi que ça va l'arrêter. Et quand ça s'arrête, cette fonction va se déclencher sans qu'on fasse quoi que ce soit. Et puis l'enregistrement terminé se déclenchera. Ce qui nous donne une chance de transcrire si nous avons un succès. D' accord ? Et je vais juste imprimer quelque chose ici en enregistrant Success. Donc nous savons que tout va bien. D' accord. Le laisse jouer. Va à notre simulateur et j'espère qu'on devrait commencer à l'obtenir, donc je vais cliquer. De plus, il devrait attraper tout ce dont il a besoin. Ça devrait m'enregistrer en ce moment. Je vais frapper. Arrêtez et vous remarquerez ici. Nous avons réussi l'enregistrement en ce moment. On peut vérifier. C' était un succès. Donc, si nous faisons défiler vers le haut dans notre application à l'endroit où nous l'imprimons cet emplacement de fichier, ce que nous pouvons faire est juste d'aller dans le dossier de documents. Copiez tout cela jusqu'à ce que nous pouvons commander. Tu vois ? Copiez ça. On peut ouvrir notre détecteur. On peut cliquer sur aller quand ma roue cesse de tourner. Accédez au dossier Coller. Dans cette adresse, cliquez sur Exécuter. Et nous l'avons là. Mesdames et messieurs, voilà notre appareil. Voici donc les fichiers dans les documents pour cette application. Et si vous cliquez sur chaque feu, il vous indique combien il est grand tant qu'il a une taille, il est enregistré. Et tant que je l'ai prévisualisé, alors juste frapper l'espace quand vous êtes dessus. Wow, tu ne peux pas entendre ça. Mais je le peux. Il utilise le microphone de mon ordinateur portable, ce qui est horrible comme un ordinateur portable. microphones sont inclus Mac. Ils sont tous terribles, terribles. Mais la bonne nouvelle fonctionne, et cela fonctionne dans le simulateur. Maintenant, noter que vous devriez tester cela sur un appareil réel, Bien sûr, parce que vous pouvez obtenir différentes zones dans les différents appareils. Mais de toute façon, ça marche. Et pendant que nous sommes ici, regardons cette structure de fichiers. Donc nous avons des documents. Nous avons cet article, ce dossier avec beaucoup de chiffres et de lettres, et c'est notre conteneur APS. Si nous revenons en arrière, un de plus nous allons à l'application, nous allons aux données. Droit. Ensuite, nous allons aux conteneurs réels. Sont les périphériques de données OK dans les dispositifs de simulateur de cours de développeur. C' est là que vous trouvez tous vos simulateurs, pas vrai ? Et puis, à l'intérieur des appareils, nous pouvons chercher notre simulateur, qui commence par 6 à 8. Donc six pour être je ne peux pas le voir. Était-ce 60 b ? Je devrais chercher Non. 6 à 8. Il l'est. Quoi qu'il en soit, tu comprends l'idée. Je ne peux pas être pris la peine de tout chercher en ce moment. Il va retourner les appareils. Oh, c'est là. 6 à 8. Et puis dans votre appareil simulé, vous avez un conteneur de données, puis vous avez les conteneurs pour les données. Je ne sais pas pourquoi ils ont mis ça deux fois, mais peu importe. Ensuite, vous avez vos applications. Maintenant, c'est ref, notant ceux-ci ne contiennent pas réellement l'application eux-mêmes. C' est juste un endroit où l'APP peut écrire ce dont elle a besoin pour écrire. Donc les documents se replient. Et c'est là que nous nous sommes retirés dans la conférence précédente. Donc, vous savez où c'est des trucs de magasin et nous savons maintenant qu'il est en train d'enregistrer avec succès. Ok, nous manquons juste un petit quelque chose ici, et c'est la capacité de dire à notre utilisateur que l'enregistrement est en train de se produire en ce moment. Maintenant, si vous exécutez ceci sur un appareil réel, si je me souviens bien, il devrait y avoir une petite glissière vers le bas du haut de l'écran indiquant que le microphone est utilisé pour que votre utilisateur le sache. Mais cela ne nous nuira pas d'avoir quelque chose à l'intérieur de la qui indique à nos utilisateurs que l'enregistrement est en train de se produire en ce moment. Donc, dans la section suivante, je vais vous défier de créer cet affichage 112. M13 6 de Résolutions transcriber 1: Il est temps que vous fassiez quelque chose, donc je vais vous faire des devoirs très rapides. Au moment où nous cliquons sur nos boutons, arrêtez l'enregistrement. Notre APP arrête d'enregistrer, mais je l'utilise ne sait pas réellement. Et notre utilisateur ne sait pas que nous enregistrons en dehors des icônes et des services que I A West fournit pour cela. Mais nous voulons être sûrs que l'utilisateur le sait. Donc je vais vous mettre deux tâches. L' une est de s'assurer que l'utilisateur sait que nous enregistrons actuellement. Peut-être qu'un indicateur d'activité le fera dans vos storyboards. Et deuxièmement, je veux que l'utilisateur sache que l'enregistrement s'est arrêté quand il appuie sur le bouton stop. Totalement à vous de voir comment vous faites ça. Mais tout ce que je peux dire, c'est bonne chance. Arrêtez la vidéo ici et je reviendrai dans quelques secondes pour vous donner ma réponse. Eh bien, comment vous êtes arrivés ? Tu as réussi à le faire ? Je me souviens que je t'ai envoyé à la tâche. L' un était de dire à l'utilisateur que nous enregistrons actuellement pour le faire savoir visuellement et l'autre était de lui faire savoir que nous avions cessé d'enregistrer lorsque nous cliquons sur le bouton. Alors regardons comment j'aborderais ce problème. C' est vrai ? Donc, mon principal point de départ est l'indicateur d'activité. Donc je suis dans le storyboard. Je vais chercher à partir de l'activité indiquée vue. Et ce que je vais faire est juste de le déposer quelque part près de cette section d'enregistrement, et ensuite on pourra en augmenter la taille. Oui, j'ai eu le 1er 1er, c'est bien la première fois. Cette fois, peut-être 65 par 65. Et nous pouvons positionner ce rapport pour arrêter le centre d'enregistrement horizontalement, et nous pouvons faire un espacement vertical dessus. Ok, donc ce n'est pas une icône d'enregistrement. Maintenant, lorsque nous chargeons à cet écran, nous commençons à enregistrer ou thématiquement. Donc, ce que nous allons faire, c'est avec les indicateurs d'activité sélectionnés, nous allons sélectionner l'animation dessus. Et bien sûr, vous pouvez changer sa couleur. Je pense qu'il avait l'air assez soigné dans nos propres modes d'échelle de couleurs APS. Peut-être que nous pouvons avoir une sensation. Je ne suis pas sûr que ça va le remplir, mais on peut essayer de toute façon, non ? Sortons ce contrôle d'indicateur, cliquez et faites glisser et appelez-le simplement indicateur d'activité. Et comme d'habitude, j'ai eu ce stupide insecte. Qu' est-ce que le clic de contrôle ? On y va. Indicateur d'activité. C' est ce que Maintenant, revenons à notre Où sommes-nous ? Contrôleur de vue d'enregistrement. Et sur l'enregistrement s'est terminé. Nous allons nous débarrasser de cet indicateur d'activité afin que vous puissiez réellement le faire dans une ligne de code, vous pouvez activer l'indicateur d'activité. Ne t'arrête pas d'animer. Revenez maintenant à votre Story Board et vous devez vous assurer que votre indicateur d'activité s'est masqué lorsqu'il est arrêté sélectionné. Donc maintenant, il disparaîtra une fois qu'il aura fini. C' est comme ça que nous faisons ce petit rôle. Ce sera notre activité qu'on enregistre. Alors ce que nous allons faire est de changer notre texte de bouton pour dire, enregistré ou quelque chose comme ça, parce qu'en ce moment, sont busting est tout simplement arrêter d'enregistrer. Alors avons-nous une référence à ça ici ? Non, nous ne le faisons pas. Mais nous avons une référence à cela ici. Et donc ce que nous pouvons faire est que nous pouvons dire si le bouton laisser juste l'appeler qui est égal à l'expéditeur comme au bouton I. Alors on pourrait faire quelque chose. Maintenant, il vaut la peine de souligner quelque chose ici que si je passe à mon storyboard principal et disons que nous avons un bouton que nous contrôlons clic et glisser pour déposer dans notre fonction clics. Nous pouvons cliquer sur l'action. Maintenant. Ce que vous pouvez faire est que vous pouvez envoyer sur le type de celui-ci afin que vous puissiez envoyer un bouton réel. Donc, je vais juste appeler ce clic test et vous remarquerez que ici l'expéditeur est maintenant automatiquement un type de bouton U Y. Et cela signifie que dans notre autre fonction, nous n'avons pas vraiment besoin de changer l'expéditeur, qui est actuellement un bouton que nous n'avons pas à lancer c'est ce qu'on appelle totalement à vous comment vous programmez ces choses, droit ? Donc je vais me débarrasser de celui qu'on vient de créer. Donc, nous cliquons sur notre bus dans ce storboard va passer à des Segways louables et des choses ici, et nous allons supprimer test clic. D' accord. Et puis une fois que vous avez fait cela, vous pouvez réellement supprimer le clic test d'ici. Si vous ne le supprimez pas du storyboard, alors il essaiera de déclencher un peu de code qui n'existe pas et vous obtiendrez un plantage. Ok, donc je vais éteindre ça. Revenez à notre contrôleur de vue maintenant la raison, pour autant que je puisse voir, c'est là que l'enregistrement a été arrêté. Cliquez sur. La raison pour laquelle il envoie sur un objet générique hors centre est de sorte que vous pouvez réellement lier ces fonctions d'action à n'importe quel type d'élément à l'intérieur de votre application, puis vous contestez pour voir ce qu'est l'expéditeur, et vous pouvez faire certains en fonction de l'expéditeur. Cela signifie que vous n'avez qu'une seule fonction pour une chose particulière que vous voulez arriver, et vous pouvez l'attacher à beaucoup d'objets différents. Alors que si vous avez envoyé un bouton central et ensuite vous essayez de lier cette fonction de I l'action Teoh d'autres éléments, cela ne fonctionnerait pas nécessairement parce que nous enverrions le mauvais type A. Pour autant que je sache, que c'est pourquoi il est mis en place comme ça. Donc, je vous conseille de simplement coder dans cette affaire. C' est celui que vous voyez le plus souvent. Ok, donc on a nos fesses, et maintenant on peut changer notre étiquette de titre de point bouton. Doc Text est égal à l'enregistrement peut-être terminé, et alors ce que nous pouvons faire est que nous pouvons juste un non désactivé définir comme désactivé. Donc, vous utilisez A peut appuyer sur le bouton et nous pouvons également changer l'Alfa du bouton pour l'assombrir un peu. Peut-être 2,4 beaucoup 0,3. Ok, alors jouons ça sur notre carte SIM. Et maintenant, nous devrions avoir un affichage décent de ce qui se passe réellement. Donc, nous, l'utilisateur, sommes en fait informés à ce sujet. De plus, nous enregistrons, enregistrons quand nous avons frappé Stop, l'enregistrement disparaît et notre bouton s'assombrit, mais il n'a pas vraiment changé le titre. C' est très étrange. Alors arrêtons ça. Ça a changé tout le reste. C' est très étrange. Allons aux pieds Boston John. Ai-je mis la mauvaise chose ici ? Retourne. Le titre obtient l'heure actuelle que nous devons avoir. Il s'agit d'un titre de décalage de méthode. C' est ma faute. Donc, le titre est ce que nous allons définir l'état de contrôle deux et quatre. Maintenant, l'état de contrôle est simplement dans quel état le bouton est actuellement. Andi, je crois qu'on a la normale. Vous pouvez avoir la normale par défaut, et vous pouvez avoir mis en surbrillance, sélectionné ou désactivé, mais nous ne allons pas nous inquiéter pour l'instant, c'est rappelé. C' est coupé sur ce que nous pouvons supprimer tout ça ? Oui. Donc, contrairement à une étiquette, qui est ce qui est sur le bouton, vous ne définissez pas l'étiquette, texte doc, mais vous avez un titre spécial pour cela qui dit maison terminée. On vient juste de finir. Maintenant, nous pouvons exécuter ça. Allons-y plus arrêter l'enregistrement. Fini. D' accord. Donc ça prend soin de vous tolérer brillamment dans leur transcription, si vous voulez. Je le voulais. Vous pourriez le changer légèrement après avoir transcrire totalement à vous comment vous voulez faire cela. Mais c'est l'idée très basique de l'homer. 113. M13 7 Comment lire des fichiers audio locaux sur iOS: Maintenant que notre fichier est enregistré et stocké dans notre système de fichiers de documents, ce serait une bonne idée de le lire à nos utilisateurs. Donc, ils savent que c'est que leur audio a été enregistré et ils peuvent le lire parce qu' ce moment ils n'ont aucun moyen de faire à part le texte de notre bouton d'arrêt. Alors regardons comment faire ça, n'est-ce pas  ? Commençons à devenir un peu plus intelligent à ce sujet. Donc, dans la plupart des appareils mobiles, vous avez un espace limité. Vous ne pouvez pas ajouter de boutons partout, et cela signifie que c'est une bonne idée de réutiliser vos éléments oculaires. Pour le moment, nous avons un bouton d'enregistrement d'arrêt sur ce commutateur à terminé, mais cela en fait un bouton mort, ce qui le rend absolument inutile. À quoi sert de montrer quelque chose que vous ne pouvez pas utiliser à l'écran et quelque chose que vous ne pouvez pas utiliser à moins que vous ne sortiez de l'écran et reveniez ? Donc ce qu'on va faire est de réutiliser ce bouton d'enregistrement d'arrêt pour qu'il se transforme en un bouton audio de lecture enregistré. Vous vous demandez peut-être comment on va faire ça ? Eh bien, passons à notre dossier. Quelques contrôleurs et à l'intérieur de notre personne. On n'a pas arrêté d'enregistrer des collectes. C' est bien maintenant. Ce serait bien de vérifier si nous enregistrons actuellement quelque chose. Alors voyons. Et c'est une bonne façon de programmer. C' est juste de l'expérience. Allons à nos décharges d'enregistreur audio et nous pouvons faire est juste de faire défiler tout ici. Oh, nous avons un booléen qui nous dit s'il est en train d'enregistrer, donc ça veut dire qu'on conteste si c'est l'enregistrement. Donc, si l'audio est en train d'enregistrer, on peut arrêter l'enregistrement et changer notre bouton. Si ce n'est pas l'enregistrement, alors nous avons un problème bizarre qui se passe parce qu'il devrait être l'enregistrement et il nous dit que ce n'est pas déballé, et c'est parce que c'est facultatif. Donc nous devons dire, si laisser l'enregistrement est égal à yada, yada, yada, ok, et puis à l'intérieur d'ici, c'est juste une légère réaffectation. Si l'enregistrement est vrai, on peut s'arrêter autrement. On peut faire quelque chose de nouveau. Ok, donc maintenant on a une façon de dire que si on enregistre ou pas, et ça veut dire qu'une fois qu'on l'aura arrêté, on pourra changer les boutons. Alors attrapons ce chanté ici où nous obtenons notre bouton. Créons un autre bouton d'enregistrement de changement de fonction pour jouer bouton. Et ça ramène ça un peu. C' est un titre très spécifique. Mais il fait ce que nous avions besoin de changer que les bouchons qui aiment être cohérents avec mon boîtier de chameau sur ce va passer dans un bouton de votre bouton haut, qui signifie que nous n'avons pas besoin si laisser l'année. Donc on va couper ça si on va le mettre dans cette section après l' enregistreur audio . Et cette section est l'endroit où on va appeler ce bouton de changement d'enregistrements pour jouer, et on va passer ça, mais d'accord, désolé. C' est enfantin. D' accord ? Et on peut juste changer le nom de ça. Ils sont tellement que tout ce code fonctionne toujours. Ok, donc nous avons un titre de jeu de points de bouton terminé est activé alors que nous voulons garder ce pinceau et activé afin que nous puissions supprimer cela et nous ne voulons pas réduire le bouton afin que nous puissions le supprimer . Ce que nous pouvons faire ici est cliquer sur le fichier de lecture, ou peut-être mieux que cela est jouer l'enregistrement ou même mieux que cela, monsieur. Je continue de changer. Mon esprit est juste jouer. Bon, donc maintenant ce bouton, une fois l'enregistrement terminé, il va venir ici. Vérifie si on enregistre. Si on enregistre, ça va l'arrêter. Il va envoyer ce bouton à cette fonction. Ça va changer le titre. Fais-le. La prochaine fois qu'on appuie sur le bouton, ça reviendra ici. Il va voir que nous n'enregistrons pas, donc ça va aller dans ce bloc d'autre. Donc, avec une logique complexe comme celle-ci, c'est toujours une bonne idée de commenter assez bien. Donc, ne pas enregistrer le temps de lire de l'audio sur alors, comme se lever ici pour l'enregistrement. Arrêtez l'enregistrement. Bon, maintenant on sait en un coup d'œil ce que fait notre programme. On doit juste changer ça pour ça. Ok, donc maintenant nous pouvons réellement jouer notre audio, alors faisons juste un son de lecture et créons ça quelque part. Lire de l'audio Maintenant, pour écouter de l'audio, nous avons besoin d'un lecteur audio, et c'est là que beaucoup de gens se trompent. Ils verront le code standard qu'ils voient sur Internet et vont à droite. Je sais comment le faire, et ce qu'ils vont faire est qu'ils vont créer loin un joueur ici et puis en dessous, ils vont initialiser le joueur, etcetera, etcetera. Ils joueront et nous verrons comment le faire dans une seconde. Mais est-ce une erreur ici, et c'est, cette variable sort de la portée, donc elle sort de ce funk. Une fois ces fonctions terminées, cette variable est détruite, supprimée , qui signifie que votre joueur n'est plus disponible, ce qui signifie que vous n'entendez jamais rien. Jouer. Vos lecteurs audio doivent donc s'asseoir à un endroit où ils ne sont pas hors de portée pour ce que vous avez besoin d'eux. Et cela signifie généralement que nous les mettons dans la classe ici jusqu'à présent Lecteur audio. Et c'est du lecteur audio de type A V. Cela permet donc la lecture de données audio à partir d'un fichier ou d'une mémoire. Il y a d'autres types sur un joueur V. Juste pour que vous soyez conscient de cela, rendons cela facultatif. Ok, donc dans notre lecture audio, on peut maintenant régler ce lecteur audio. Maintenant, la première chose à faire est de vérifier que le lecteur audio ne fonctionne pas, alors arrêtons-le, juste au cas où ça ne devrait pas l'être, mais c'est juste une petite vérification à faire. Ensuite, nous allons créer un autre lecteur audio, qui est égal à et c'est un lancer une initialisation ble sur le lieu de commande 80 ou vous montrer ce que cela signifie. Un plan audio en V. Une instance d'un corps. Un lecteur permet la lecture des données audio. Eh bien, j'ai dit qu'il était jeté. C' était au moins ce qu'il ne semble pas l'être maintenant. Donc, cela nécessite Est-ce que vous y allez. Ça va jeter quelque chose. C' est ce que je cherchais. Le contenu d'un dossier, Earl. Et devinez quoi ? On l'a déjà dans notre fille-fichier enregistré. Donc ça va être un essai, non ? Parce que c'est un essai. On a besoin d'une prise de contrôle autour de ça. Alors n'attrape l'ère Let's et l'ère. Et puis juste pendant que nous entendons cette impression, n'a pas réussi à jouer avec les sombres de l'ère a localisé une description, non ? Donc nous avons notre lecteur audio. Espérons qu'il est prêt à commencer, et une fois que nous avons fait cela ou affaiblir lecteur audio, ne pas jouer et remarquer. Excrete met ce petit point d'interrogation pour vérifier l'option pour nous si nous le voulons. Nous pouvons nous donner un message pour dire que nous jouons, mais nous n'en avons pas besoin, parce que nous devrions pouvoir l'entendre. Ok, donc je vais juste diriger ce festival, ok ? Et ce que je vais faire, c'est monter le volume sur l'ordinateur portable. Nous avons un échec de construction. Quel est le problème ? Je pense que c'est beaucoup de problèmes. Cela signifie que nous avons un attelage supplémentaire quelque part quand nous disons que nous devrions aller bien. Donc je vais faire ça sur le simulateur. Normalement, quand vous obtenez une tonne de problèmes, c'est parce qu'il y a un support ou une accolade hors de place. C' est l'autre. Ok, pour des parenthèses normales. Maintenant, on peut frapper le jeu. Donc, quand vous obtenez des tonnes d'erreurs de panique, il suffit de chercher cela dans les impôts et les déclarations de clôture, les demi-Coghlan. Quoi que ce soit, cherchez tout ça, non ? Alors je vais jouer. C' est maintenant l'enregistrement, et je vais frapper stop, et il est prêt à jouer débranché mes écouteurs pour que vous puissiez entendre cette terrible qualité sonore de mon microphone sur l'ordinateur portable et frapper le jeu. Ok, arrête. droite. Alors avez-vous eu que cette qualité était. Mais du côté positif, le bouton de lecture fonctionne et la logique de passer d'un enregistrement à un bouton de lecture fonctionne également. Ok, pour qu'on puisse jouer notre audio. On est tous bons. Mais si notre at est en cours d'exécution ? On a enregistré quelque chose comme maintenant et puis on joue quelque chose. Disons que c'est un enregistrement assez long. Une minute de long, puis on retourne hors de France. Que se passe-t-il de Crip Shin ? Eh bien, le lecteur audio est peut-être encore vivant s'il n'est pas consommé par la mémoire. Donc tu refais ça. Ce que nous devons faire est de nous assurer que le joueur s'arrête quand nous quittons. Donc ce qu'on va faire, c'est qu'on va s'accrocher dans le cycle de vie, peut-être en bas, hors du contrôleur de vue appelé vue disparaîtra, et c'est à l'intérieur d'ici qu'on va appeler lecteur audio, peut-être en bas, hors du contrôleur de vue appelé vue disparaîtra, et c'est à l'intérieur d'ici qu'on va appeler lecteur audio, Arrête. Et nous pouvons aussi faire le point de l'enregistreur audio. Donc on s'assure juste de pouvoir sortir proprement d'ici, non ? Alors faisons ça et on va tester ces deux cas, donc on va enregistrer quelque chose qu'on va sortir une fois que j'ai réglé ma vie, on va enregistrer quelque chose, on va sortir, et on va vérifier que On n'a pas d'accident sur l'avion audio. Il s'arrête en fait. Alors je vais frapper. En plus, on enregistre. Je vais juste quitter et vous remarquerez qu'il écrit réellement l'enregistrement pour nous, ce qui est très, très utile parce que cela signifie que si l'utilisateur est stupide et me faire confiance, vous obtiendrez des utilisateurs stupides. Ils auront toujours l'enregistrement disponible s'ils appuyez sur le mauvais bouton ou si leurs ravisseurs jouent sur leur iPhone en ce moment. Que se passe-t-il si on fait ? En plus, nous enregistrons des enregistrements de yada yada. On s'est arrêté, on a frappé, on a joué des transcriptions et tu n'as pas entendu ça, mais ça a arrêté la lecture pour nous. Donc, ce sont toutes ces petites choses de qualité qui font vraiment la différence entre votre APS et tout le reste de la poubelle qui a réussi à passer par l'examen APP. Donc, ce sont ces petites choses que vous avez qui vous prendront beaucoup de temps, non ? Donc, c'est essentiellement comme ça que vous lisez l'audio sur IOS 114. M13 8 Comment mettre en œuvre la transcription audio sur iOS: nous avons nos dossiers d'affiches. Nous avons trié notre lecture. Maintenant, nous devons envoyer notre audio à Siri pour le transcrire. Alors voyons comment c'est fait. La première chose dont nous avons besoin est un endroit pour mettre en œuvre ou pour montrer notre texte de la transcription. Donc, comme d'habitude, allons à notre storyboard et trouver un endroit où placer cette vue de texte. Maintenant, on peut mélanger un peu les choses ici, et je pense que c'est peut-être une bonne idée. Donc ce que je vais faire, c'est que je vais déplacer ce bouton pour arrêter d'enregistrer quelque part près du haut de cet écran. Donc, je vais réellement supprimer cette contrainte verticale. Je vais supprimer la contrainte verticalement entre l'activité sur le bouton. Et je vais aussi supprimer cette contrainte horizontale pour l'activité et ensuite j'allais avoir ça ici quelque part. Je vais le décaler un peu sur le côté gauche. Je crois qu'on pourrait faire moins de 60 sur ça, et ensuite je vais avoir cette activité à côté, peut-être sur leur contrôle. Cliquez sur. Regardons les sens verticalement. Et donnons-leur un espacement horizontal. Et enfin, centrons cet arrêt d'enregistrement sur la vue principale. Donc l'espacement vertical. C' est à vous de décider comment vous voulez faire ça. En fait, je ne pense pas que ça soit trop génial en ce moment, mais c'est quelque chose que je te laisse pour trouver ce qui a l'air bien et ce qui ne l'est pas. Après tout, c'est votre quelque chose comme ça. ce moment, nous avons de l'espace pour laisser tomber dans une vue de texte, et nous les avons déjà utilisés. Alors mettez ça là-dedans. Donnons à cela quelques contraintes. Tout d'abord, sur les côtés. Donnons-lui un rembourrage d'environ 20, puis en haut. Donnons-lui aussi un tapotement d'environ 20. Et puis nous pouvons également donner à cela une position si horizontalement et nous pouvons contrôler, cliquer et faire glisser à l'enregistrement d'arrêt, cassé et donner un espacement vertical. Maintenant, il se plaint toujours, parce qu'il n'a pas de hauteur fixe. Alors abandonnons un peu de hauteurs, peut-être, mais c'est jusqu'à 200 et maintenant tout est bleu. Plus de plaintes de la droite de l'Iowa, alors sélectionnez la vue de texte. Changeons quelques propriétés en haut, n'est-ce pas ? Tout d'abord, nous n'avons pas besoin de tout ce texte de plaque de chaudière. On peut juste l'effacer. On écrit juste la transcription. Nous montrerons ici une fois le traitement terminé, et nous n'en voulons pas. En fait, j'allais cliquer sur Créditable, mais nous voulons vraiment laisser cette édition à base de plantes parce que l'utilisateur pourrait vouloir modifier ceci. Donc je pense que c'est une bonne idée de le laisser tel quel. Ok, je pense que c'est à peu près tout ce dont nous avons besoin à part laisser sortir. Donc, cliquez sur notre assistant éditeur Contrôle, cliquez et faites glisser vers là, et nous allons donner à cela juste une vue de texte ancienne. D' accord ? On peut éteindre l'éditeur et revenir à notre dossier. Peu de contrôleur maintenant, alors quelque part ici est un peu bondé. J' admets la transcription de la fonction. Qu' est-ce que tu fais ? D' accord. Et nous allons nous inquiéter de déplacer ces fonctions un peu plus tard dans ce module afin que nous puissions rendre notre application un peu plus propre et un peu plus modulaire, mais à des fins d'apprentissage. Mais écrivez ce morceau de transcription ici, accord ? La première chose dont nous avons besoin, c'est un discours. Reconnaître ? Er donc laissez reconnaître er égal à un discours S F. Reconnais-le si tu es cool. Nous avons déjà un discours important ici et nous allons initialiser ceci et ensuite nous devons faire une demande avec notre dossier afin de commencer tout le processus de transcription. Donc, nous allons demander est égal à un discours S F. Vous êtes sur demande de reconnaissance, et cela nécessite juste un u r l. et avant qu'il ait obtenu cela, ce sont les fichiers enregistrés. Tu vas bien. Et maintenant, nous pouvons commencer la reconnaissance. Donc, nous saisissons notre reconnaître et est-ce reconnaître optionnel ? Essayons encore ça. Oui, c'est le cas. Donc, si nous en avons un, nous devrions faire la reconnaissance. Er va commencer une tâche de reconnaissance avec une demande. Nous créons juste cette demande et nous allons recevoir un rappel, donc nous savons que c'est terminé. Maintenant, lequel de ceux-là est-il ? On peut lui donner un délégué. Essayons ce gestionnaire d'achèvement 2ème 1. Donc, la demande est assez simple. Nous avons cela et le gestionnaire de résultats simplement appuyer sur Entrée et ensuite donner à cette heure les résultats suivis par l'ère. Ok, maintenant on veut vérifier ça. Évidemment, nous avons obtenu un résultat et qu'il n'y a pas d'erreur. Donc, nous allons que Dieu laisse des résultats égaux au résultat sinon fera quelque chose, et une fois que vous avez fait quelque chose, va revenir. Ce que je dis, c'est de s'assurer qu'il y a un résultat. Sinon, nous devons nous occuper de la région ici. Et s'il n'y a pas de résultat, il y a probablement une époque. Et comme d'habitude, nous imprimons. Alors donnons juste ça un peu de description à l'ère de la transcription stop, et nous allons vous faire aimer Donc maintenant, supposant que ça revienne et que nous allons bien, nous sommes prêts à y aller. Ensuite, nous devons réellement l'écrire quelque part. Maintenant. retour des transcriptions en parties, n'est-ce pas ? Il faut qu'on y aille. Si les résultats sont sur et qu'il y a une question là-dessus, ne le faites pas et vous remarquerez que nous avons est définitif, est-ce pas ? Donc on veut attendre. Vraiment ? Jusqu' à ce que nous ayons la transcription finale, nous pouvons obtenir les résultats de la transcription au fur et à mesure. Donc ça va juste se lever. Il nous faut d'autres choses ici. Ok, ça nous demande de le déballer. C' est juste le changement que si nous sommes égaux au résultat, Docteur est final. Ok, donc, comme je le disais, ça revient dans les gouttelettes, donc chaque fois que vous obtenez un résultat. époque, c'est une transcription partielle, et cela pourrait être tout le texte, mais pas très bien transcrit. Ça pourrait en faire partie, je crois. Et ce que nous voulons faire est en fait juste de rester jusqu'à ce que nous obtenions le résultat final correct. Ok, alors donnons-nous une subvention d'impression de message, préparons les résultats et ensuite nous sommes prêts à afficher Tell User. Mais pour l'instant, débarrassons-nous de cette erreur stupide. Oh, il est juste de lancer un vacillant. Est-ce que c'est réparé ? Non, ce n'est pas un décapage. C' est parce que, bien sûr, ère est facultative. Donc pour l'instant, nous allons juste ignorer cette erreur de transcription. Si nous l' obtenons, nous pouvons toujours ajouter la description localisée. Ok, donc on a nos bons résultats, non ? Alors, prenons le texte de lui. Laissez merci égal au point de résultats et ce sera la meilleure transcription. Donc, nous voulons la meilleure transcription de cela, et nous voulons l'avoir comme une chaîne formatée. Évidemment. Ok, une fois qu' on aura ça, on va l'écrire dans un fichier texte stocké sur notre appareil, mais on va le faire dans cette leçon. Nous sommes juste en train de le montrer à notre utilisateur Donc nous pouvons dire auto-point texte vue. C' est celui que nous venons de créer dans notre document storyboard est égal au texte que nous venons retirer. D' accord. droite. Trié maintenant pour transcrire l'audio, cela ne coûte pas vraiment à l'utilisateur quoi que ce soit en dehors du chargement du fichier. Et en ce jour et à l'âge, c'est un petit fichier. Je ne pense pas qu'on ait besoin d'attendre. Teoh attend en fait que l'utilisateur appuie sur un bouton pour transcrire quelque chose. On va le faire automatiquement. Donc ce qu'on va faire est sur l'enregistrement probablement terminé. Si nous réussissons, nous allons le transcrire, disons nous donner un message et commencerons le processus. Alors disons ça et faisons-le sur notre simulateur. D' accord ? Maintenant, la question est  : la transcription fonctionnera-t-elle sur un simulateur ? Eh bien, voyons voir. Je vais enregistrer des ordures. Festival la la la. J' enregistre des ordures. On s'arrête et on a une ère de transcription. Ah, c'est parce que mon réseau est en panne, ce qui est tout à fait vrai. Donne-moi juste une seconde et je vais arranger ça maintenant. D' accord ? J' ai réparé ça. Maintenant, revenons aux transcriptions frappées, Plus, Plus, enregistrons quelque chose de nouveau et arrêtons. Et maintenant, on transcrit plus, semaine prochaine ou quelque chose comme ça. C' est à cause de la qualité audio terrible qui provient d'un microphone d'ordinateur portable. Il ne ramènera pas la transcription correcte, mais vous remarquerez ici, nous avons un résultat correct. Donc si on arrête de courir, c'est parce que dans notre bloc de transcription, où sommes-nous ici ? Nous avons ce tir plusieurs fois, donc il a quelques tentatives pour le faire maintenant. Je vous encourage à jouer avec cela et à voir ce que la transcription et le transit décrivent les fonctions audio toutes pour vous, et vous les ajustez en fonction de ce dont vous avez besoin pour vos propres fins. Ok, maintenant, dernière chose avant que je parte, nous devons probablement mettre en place une sorte de gestion des erreurs liées à l'absence d'Internet comme vous venez de voir. y avait aucun moyen de savoir dans l'application qu'il n'y avait pas d'Internet. Donc je ne vais pas le faire maintenant parce que je pense que vous devriez avoir une très bonne idée de la façon de le faire maintenant. Donc je vais te dire de laisser ça à faire de ton propre droit. C' est suffisant pour que la transcription passe à la section suivante 115. M13 9 Comment enregistrer des fichiers de texte sur iOS: Maintenant que nous avons une transcription déjà créée à partir de notre enregistrement, nous avons un peu de texte et ce serait génial si nous pouvions réellement enregistrer cette transcription quelque part utile, par exemple dans notre dossier Documents ou dans notre dossier Documents. Plutôt. Alors regardons comment on fait ça. C' est assez simple. Maintenant, juste un résumé rapide dans notre contrôleur de vue d'enregistrement. On va à nos services publics et on obtient un enregistrement. Earl, allons regarder cette classe d'utilitaires et nous pouvons voir que nous obtenons R la valeur R l qui est une combinaison d' un nom de fichier basé sur la date et l'heure et l'obtention du répertoire des documents . Ok, donc maintenant on doit avoir un dossier. Vous êtes l afin d'enregistrer un fichier texte. Donc, comme vous l'imaginez, le processus est très similaire. En fait, c'est à peu près la même chose. Donc, c'est en fait un problème d'architecture. Donc, c'est quelque chose que vous devriez avoir si vous inventez comme ça que vous auriez planifié avant de faire l'application afin que vous sachiez ce que vous faites quand vous venez à réellement le créer ici Maintenant, bien sûr, J' ai planifié ça à l'avance, donc je sais ce que je vais faire. Mais j'ai juste pensé que je te mettrais au courant de ça. Maintenant, c'est à vous de décider si vous voulez donner à votre audiophile Earl et à votre fichier texte Earl une autre heure de rencontre. Parce que rappelez-vous, chaque fois que cela fait froid, son unique basé sur la seconde actuelle hors de l'heure actuelle. Donc je veux dire, général, tout ça va être pareil. Les minutes seront probablement les mêmes, mais les secondes seront différentes de la seconde à la seconde, évidemment. Maintenant, pour rendre l'organisation de nos fichiers beaucoup plus facile à traiter, il serait utile que notre fichier texte que nous avons enregistré ait le même format et le même nom de base que le fichier enregistré. Et nous pouvons le faire parce que les deux fichiers ont des extensions différentes enregistrées son M pour un sur le fichier texte va être t X t. Donc ils seraient exactement les mêmes et plus tard, quand nous avons besoin de les extraire et de les montrer à l'utilisateur ou tout ce que nous nous savons que nous pouvons simplement utiliser le même nom de fichier et changer la fin afin de l'attraper si c' est la façon dont nous voulons aller. Droit. Donc, pour ce faire, nous devons saisir cette heure de date juste une fois, parce que si nous prenons deux fois, ce sera différent. Donc, dans notre classe d'utilitaires, ce que je vais faire est de prendre une date var. Chaîne temporelle, qui va être la chaîne. Évidemment, on n'a pas réglé ça. Ce qu'on va faire, c'est l'appeler à l'intérieur de cette fonction. Donc ce qu'on va faire, c'est qu'on va tester et voir s'il existe déjà. Donc, si let daytime string est égale à la chaîne de jour, alors nous pouvons simplement retourner cette date Time Street. Droit ? Donc si on le retourne, on ne va évidemment pas faire tout ça, donc on est triés. Mais si elle n'existe pas encore, alors notre fonction va tomber. Notre code tombera à travers Teoh ici et en fait créer la force de l'heure de la date. D' accord. Et cela signifie que dans notre fichier audiophile u r l Quand nous appelons, obtenir l'heure de sortie. Nous n'avons pas à faire référence à cela parce que cette fonction fait tout pour nous. Donc le revenu de cette dame est la bonne façon de programmer ces choses maintenant nous allons avoir une nouvelle fonction pour obtenir notre fichier texte. Vous êtes d'autre. On va copier ce fichier audio. Vous êtes l collé et avez un fichier texte. Vous êtes dehors. Et changeons le nom. Nous n'avons pas à le faire, mais cela nous aide à comprendre quand nous regardons cela plus tard. Et ça va être exactement pareil. Sauf que la fin sera txt. Et nous allons retourner le texte. Maintenant, s'il veut être intelligent, vous pouvez les combiner en une seule fonction si vous le vouliez. Maintenant, s'il veut être intelligent, s'il veut être intelligent, C' est, euh, retourné sur un chemin générique et ajouté ceci, en utilisant une fonction différente totalement à vous. Mais je pense que tel qu'il est, nous allons bien, Nous ne sommes pas trop risque de répéter des ventes hors vente trop. Ok, donc c'était assez facile. Nous sortons maintenant le fichier texte. Vous êtes l Mais nous devrions retourner à notre contrôleur de vue d'enregistrement. Et nous devrions corriger le fait que nos services publics sont légèrement différents maintenant. Alors quoi ? Je veux dire par un peu différent Eh bien, si nous frappons commande, recherche différente pour les utilitaires ici. Il y a un exemple, ce qui est très bien. Mais comme je l'ai dit, chaque fois que vous créez un objet utilitaire à partir de la classe, vous obtiendrez une date différente. Donc, ce que nous devons faire est juste de couper ces utilitaires et nous devrions faire une variable de niveau de classe . Jusqu' à présent, vous queues est égal à un nouveau utilitaires. Et puis nous allons utiliser ça parce que ça nous donne la date cohérente dans le temps dans toute la classe. Retournons ici et remplissons nos culs. Brillant. De quoi d'autre avons-nous besoin ? On a besoin d'un fichier texte. Vous êtes l Alors remontez au sommet. Allons loin un fichier texte. Vous êtes dehors, comme ainsi de suite. DWhite. On va faire ça ? Ce que je pense que je vais faire, c'est que je vais le couper. Je vais le coller dans la vue. Il a chargé, ce qui est là-haut. Et pourquoi je fais ça ? Techniquement, nous devons faire les filles pour faire fonctionner ce contrôleur de vue. Techniquement, Donc, le meilleur endroit pour les initialiser est dans notre principal initialiser er, qui, toutes fins utiles, est vu charger, donc fichier texte votre sortie. Et de cette façon, nous pouvons être sûrs qu'ils sont prêts à être utilisés plus tard. C' est maintenant qu'on peut l'avoir. Je vais chercher un fichier texte. Vous êtes dehors. Excellent. Droit. Alors, qu'est-ce qui reste ? Bien, on a notre fichier texte. Vous êtes l nous avons juste besoin d'écrire notre texte. Donc ça va arriver après avoir transcrit notre audio. Maintenant qu'est-ce qu'on l'a aussi ? Eh bien, je pense qu'il vaut mieux ici d'avoir une fonction séparée pour écrire un fichier texte. Et ça va prendre le texte, qui est évidemment juste une vieille chaîne. Et puis ce que nous devons faire ici, eh bien, c'est en fait une chose qui pourrait échouer. Donc, quand vous êtes dans le système de fichiers, il peut évidemment échouer. Je crois que certains peaux il d'abord, droit, Le texte de code de base dorms droit à, et nous voulons cette option qui nous permet d'avoir l'encodage dans votre avis. Il dit jettes et qui jette signifie que nous devons enfermer cela dans un do et essayer. Et bien sûr que je ne peux pas. Et vous pouvez imprimer l'ère des captures si vous voulez. Je n'ai pas fait ça. Donc c'est bien si bien. Alors j'ai essayé le mauvais endroit avec moi. Donc, où nous avons droit dans Well, auto-sombre fichier texte. Vous êtes l Est-ce qu'on écrit cet Atomic Lee ? Vrai. Je ne sais toujours pas ce que cela signifie Et quel encodage notre utilisant ce que nous allons utiliser un codage de point de chaîne standard je crois sens le format de texte universel. Huit. Je pense que cela signifie qu'il y a huit morsures son personnage codé. Ok, donc c'est trié. Nous pouvons maintenant écrire nos fichiers. Alors faisons ça sur notre simulateur. Oups. Avant que je l'exécute sur le même. Bien sûr qu'on doit l'appeler. Merci droit. Fichier texte et donnez-lui le texte. Maintenant, je vais l'exécuter sur le simulateur après avoir écrit le type facultatif, hein ? Donc ce texte, il est en fait facultatif si nous obtenons le résultat. Mais nous savons que nous avons le résultat parce que nous sommes tombés par ici. Donc, dans ce cas, il est OK de forcer ce déballer. C' est Faisons jouer. Ok, allons frapper. De plus, on enregistre des enregistrements terribles terribles à travers mon microphone sur l'ordinateur portable, puis on arrête d'enregistrer. D' accord ? On va déchirer, mais on embarque en ville jusqu'à dimanche soir. D' accord ? si vous le dites. Droit ? Donc ça aurait dû maintenant, Bean Rison. Donc ce qu'on va faire, c'est qu'on va aller à cet endroit, donc utilise des documents noirs sanglants. Copions ça. Allons voir notre détecteur. Allez dans le dossier. Et ici, nous avons tous les éléments précédents, nous avons réellement enregistré quelque chose qui va les supprimer. On n'en a plus besoin. Mais ici, nous avons notre fichier, qui a exactement le même nom que le texte de. Et si nous ouvrons le fichier texte, nous embarquerons en ville jusqu'à dimanche soir. Semble être ce que c'est écrit. Ensuite, nous allons à notre simulateur, et c'est ce que nous avons écrit. Maintenant, il y a un léger plancher dans ce que ce résultat obtenu correct est en fait appelé beaucoup ,plusieurs fois. , Donc, techniquement, notre système fait plus de travail qu'il n'en a besoin pour écrire ce fichier plusieurs fois. Maintenant, c'est à vous de décider si vous voulez implémenter quelque chose qui va corriger cela et seulement droit à ce fichier une fois totalement à vous de décider. Mais ce sont les bases de la façon dont nous écrivons des fichiers texte 116. M13 10 en d'initiation et d'enregistrement des données de base dans iOS: maintenant que les transcriptions sont enregistrées et que les fichiers texte les associent à ces transcriptions. Ce dont nous avons maintenant besoin, c'est d'un enregistrement permettant de sauvegarder la référence à tous ces fichiers. Et pour ce faire, nous allons examiner l'utilisation de données de base, qui fondamentalement une base de données qui se trouve sur votre disque sur votre appareil IOS, votre disque dur SSD un disque dur évidemment comme vous pouvez le voir sur l'image. Maintenant, bien sûr, il y a des options pour le faire. Vous pouvez utiliser les préférences par défaut de l'utilisateur, mais je ne conseillerais pas cela principalement parce qu'il n'est pas conçu pour un ensemble de données croissant. Où sont les données de base ressemble davantage à une base de données traditionnelle en ce sens qu'elle est conçue pour un énorme ensemble de données. Et, bien sûr, il est livré avec des tonnes d'outils qui vous permettent de l'interroger très rapidement et toutes les choses que vous attendez d'une base de données. Si vous avez utilisé la lumière carrée avant , alors, vous saurez exactement de quoi je parle. Et encore une fois, vous pouvez utiliser la lumière sql par tous les moyens dans IOS. Mais je préfère m'en tenir aux outils système actuels que nous donnons, tels que les données de base, parce que nous connaissons leur travail de façon plus cohérente et des choses comme la lumière blanche. Ok, alors regardons comment nous avons mis en place nos données de base. Maintenant, si vous vous souvenez quand nous avons créé notre nouveau projet sur l'abstinence, je ne vais pas en créer un ici, mais ça va vous montrer qu'ils veulent cette option pour utiliser les données de base. Si vous aviez sélectionné une seule vue, elle n'était pas réellement disponible dans des choses comme une application d'onglet. Et c'est pourquoi nous sommes allés sur la voie de changer une vue unique en un appauvri parce qu' il était plus facile à faire et que nos données de base soient incluses. Maintenant, si vous ne l'avez pas inclus, alors ce que vous allez devoir faire est de créer un nouveau projet et de l'inclure cette fois. Copiez tous vos fichiers à travers vérifier tout fonctionne. Ou vous pouvez comparer les deux projets et ajouter le code de données de base de votre nouveau, qui est en approche. Je ne vous conseillerais pas de le faire. OK, mais vous auriez dû le sélectionner parce que je vous ai dit de le sélectionner. Ok, alors il est temps d'initialiser nos données de base. Alors créons une nouvelle classe. Il va faire toutes les données de base de levage lourd pour nous et nous allons appeler cela une aide de données cool car il y aura plus ou moins l'interface. Vous pouvez l'appeler interface si vous le souhaitez. Ça va nous aider à accéder à cette date. Et maintenant, la première chose que nous importons, bien sûr, c' est les données d'appel. D' accord. Et puis appelons cette aide de données de base de classe. Et maintenant on peut faire des trucs dedans. Donc la première chose qu'on va faire, c'est quand on initialisera ce cours. Tout d'abord, nous devons créer un conteneur pour nos données de base. Donc, laissez conteneur égal à et assistant sur le conteneur persistant Ennis, et cela nécessite un nom pour cela. Nous appellerons donc cette transcription. Ce conteneur a besoin de quelques magasins, et nous n'en mettons pas en place pour le moment. On laisse juste le code standard le faire pour nous. Donc ce qu'on va avoir, c'est un conteneur amarré de chargement. Tout ce qui fait est d'initialiser tout ça. Et en fait, nous voulons une différence. Un peu de code. Ce Essayons encore une fois. Oh, que ça a changé. Donc, nous avons une nouvelle chose ici, mesdames et messieurs. Ok, Donc, vous avez ce gestionnaire d'achèvement simplement appuyez sur Entrée et il vous dit que vous récupérez une description de magasin , vous pourriez revenir sur l'erreur et ensuite vous pouvez faire quelque chose dans votre bloc de code. Donc, évidemment, nous voulons vérifier si notre ère est là. Parce que si c'est le cas, ce n'est pas bon pour nous. Et nous allons imprimer les données de l'ère dans le tribunal, et ensuite nous pouvons ajouter, comme d'habitude, la description de l'erreur. D' accord, mais si c'est bon, nous pouvons nous imprimer un message et y dire des données de base. Très bien. Ok, donc maintenant nous avons l'aide de données de base. Ce que nous allons faire, c'est que nous allons aller à notre contrôleur de vue, qui est notre vue de transcriptions Come table view controller un intérieur d'ici dans vu il charge. En fait, on va l'initialiser. Donc, nous ne sommes pas en vue. Il a chargé. On peut l'initialiser ici. Nous pouvons dire que de notre tribunal Data Helper est égal à un nouvel assistant de données de base. Et puis je vais simplement l'exécuter sur notre simulateur juste pour m'assurer que tout se construit et qu'il fonctionne bien, et nous n'avons pas d'erreurs. Donc, les données de base sont assez complexes. Donc, c'est une bonne idée, en fait, de vérifier ce cadre tôt et souvent et de comprendre exactement ce qu'il fait est venu. Donc ce que nous voulons, nous voulons que Teoh vérifie nos sorties. Avons-nous nos résultats pour nos données de base ? C' est comme ça pour le noyau, non ? Donc, nous avons une ère n'a pas réussi à charger le modèle nommé Transcription. Et c'est très bien parce que nous n'avons pas encore créé le modèle de transcription. Ok, donc ça nous dit que dans notre aide de données de base, ce conteneur que vous avez demandé n'est pas réellement disponible, donc cela nous donne une erreur, et c'est bien. Cela prouve que notre vérification des erreurs fonctionne réellement. Ah, mais bien sûr qu'on doit réparer l'air. Et je viens de voir que j'ai fait une ère vraiment stupide. Ce que nous devons faire, c'est appeler ce transcripteur et pourquoi ? Parce que les données de base que nous faisons référence au conteneur sont plus d'un an. Et c'est ce nom transcriber dot sortie modèle de données D que nous devons être au courant. Donc transcriber est là maintenant si je lance cela sur ma carte SIM, nous ne devrions plus avoir cette erreur. Alors on y va. Notre initialisation des données de base est parfaite. Donc c'est mon mauvais. J' ai juste fait le mal, un peu mal, là. Et c'est pour ça que c'est bon. Teoh Aaron, vérifiez tout le temps parce que vous arrivez au fond avant qu'il ne devienne un problème profondément enterré. Une base de données fonctionne, non ? Alors, où ajoutons-nous nos modèles ? Eh bien, si nous regardons sur le côté gauche, nous pouvons voir une porte de transcription dépasser le modèle de données. Et à l'intérieur d'ici, vous pouvez penser à cela comme une sorte de base de données avec des tables. Maintenant, ce n'est probablement pas exactement vrai. Et c'est à vous de décider si vous voulez aller découvrir à quel point c'est vrai ou non et creuser dans la documentation de celui-ci plus en profondeur. Mais à toutes fins utiles, cela sert notre but. Maintenant, ce que nous allons faire est d'ajouter ce qu'on appelle une entité que vous pouvez penser est un peu comme une table. Si vous êtes familier avec SQL, cliquez sur ajouter et voyez en bas. Ici, vous remarquerez qu'il s'appelle Entity, et nous pouvons renommer cela juste en cliquant une fois pour transcription. Maintenant, cette entité, cette table, si vous voulez, besoin de quelques attributs pour que nous puissions les ajouter Mr Column ici dans les premiers attributs que nous pouvons donner, c'est un fichier texte. Vous Earl String et vous l'avez deviné sur le fichier audio. Votre force Earl et assurez-vous que vous les épelez mieux que moi sur ces deux vont être des cordes. Maintenant, j'aime vraiment les nommer avec le type qu'ils ont parce que c'est une référence pratique lorsque vous tapez réellement ceux-ci dans du code quelque part. C' est tout ce que nous avons vraiment besoin de faire ici. Alors, comment pouvons-nous enregistrer ces valeurs dans cette table dite ? Allons à notre aide de données de base. Heureusement, les données de base le rendent très, très facile pour nous. Donc, la première chose que nous devons faire est de trouver le contexte. Faisons une fonction pour le faire et cela va revenir. Et N s contexte d'objet géré, qui est un objet, représentait un espace d'objet unique ou un pavé de travail. Il est utilisé pour récupérer, créer et enregistrer des objets gérés. Donc, cela va être une sorte de plate-forme centrale pour l'édition, en ajoutant des choses à l'intérieur de notre base de données de base. Maintenant, la première chose que nous devons faire est d'obtenir notre application. Délégué Rappelez-vous, le délégué APP est la partie de notre application qui communique avec le système et permet au système de communiquer avec notre application et de guzzle diverses fonctions autour d'elle, y compris les données de base. Donc, tout d'abord, si laissez AP délicat est égal à notre application vous je ou plutôt simplement l'application, Je crois que ces jours-ci et nous ne l'avons pas montré. Et c'est probablement parce que nous avons besoin d'importer. Peut-être que vous, je les enfants, nous y voilà. Vous j'application sombre et nous allons obtenir le délégué partagé de l'instance singleton dumps , et cela vous renvoie. Je demande délicat. Mais ce dont nous avons réellement besoin, c'est d'essayer de convertir cela à notre propre application, déléguer. Et pourquoi c'est ça ? Eh bien, le délégué APP est l'endroit où nous pouvons réellement accéder à ce contexte dont nous avons besoin dans nos données de base . Donc, si nous pouvons rendre cet APD élégant et que nous devrions être en mesure de le faire, alors nous allons revenir. Qu' est-ce qu'on va retourner ? Le délégué de l'application Abdel Don't Assistance Container ancré contexte de vue et vous pouvez lire toutes les descriptions à ce sujet. Il vous dit de quoi il s'agit de toutes ces choses. Ok, maintenant, parce que ça pourrait échouer. Ça ne le fera pas. En réalité, ce qu'on va faire ici, c'est rendre cela facultatif. Et si nous ne pouvons pas l'obtenir chez le délégué, alors nous allons simplement retourner le repas afin que nous puissions vérifier plus tard afin que nous puissions réellement extraire ce contexte. Maintenant, nous sommes prêts une fois que nous avons cette référence de contexte pour créer une fonction appelée transcription de magasin . Et cela va évidemment prendre quelques éléments sont la chaîne audiophiles et notre fichier texte . Vous êtes en L string. Maintenant, il est intéressant de noter à cette jonction que vous voudrez peut-être créer une classe appelée simplement transcription ou transcription audio, quelque chose comme ça. Et puis vous pouvez passer sur un objet de cette classe à stocker. Pour le moment, nous n'avons que deux éléments, qui est le fichier audio. Vous êtes je vais juste le mettre comme ça, qui est une chaîne et le texte. Vous êtes dehors, ce qui est aussi une chaîne. Donc, je suis sûr que vous savez maintenant comment créer des classes et des objets que je ne vais pas faire cela à ce stade juste pour gagner un peu de temps. Alors laissez-nous ou si nous pouvons avoir notre contexte. Si let contexte est égal à self doc, obtenez le contexte alors nous pouvons aller de l'avant et faire quelque chose avec ce contexte. Donnons-nous un message. Imprimez la transcription d'enregistrement dans les données du tribunal. D' accord, alors de quoi avons-nous besoin ? Eh bien, tout d' abord, nous devons attraper l'entité. Et si vous vous souvenez, l'entité est ce que nous avons créé ici. Donc, nous allons une ville égale à la description de l'entité N Ne pas entité. Et il demande un nom d'entité, qui est une chaîne sur quel est ce nom d'entité ? Eh bien, ce sont des tendances Crip Shin et demande un contexte d'objet géré que nous avons déjà saisi en tant que CTX. Donc c'est ce qu'on a attrapé ici. Nous avons donc notre contexte. Nous avons l'entité, la référence Ce n'est pas encore l'entité réelle. C' est juste une référence à la table si vous voulez. Donc maintenant, nous devons créer l'entité réelle, la transcription elle-même. Donc laissez la transcription égale à N s contexte d'objet géré ou objet géré. Plutôt celle-là. Donc, il s'agit d'une classe générique imprime tous les comportements requis sur un objet de modèle de données de base . Donc, cela vous indique que c'est comment vous créez l'objet que vous êtes sur le point d'enregistrer. Et puis quelle est l'initialisation Avons-nous pour cela ce que nous voulons celui-là. Alors festival, Nous avons besoin de l'entité elle-même, et c'est celui que nous créons des trucs ici. Donc cette entité, maintenant c'est facultatif. Ça pourrait échouer. Donc, c'est à vous de décider si vous voulez le vérifier en pratique. Je ne l'ai jamais fait échouer tant que vous êtes codé correctement et vos données de base internes. Donc je vais juste forcer à déballer ça pour l'instant qui vont insérer ça dans le contexte que nous avons créé. Droit ? Nous avons donc notre transcription, l'objet de base. Maintenant, nous pouvons réellement transcrire point Définir la valeur quatre, nos clés et chaînes. Donc on va définir la valeur ici comme l'audio que vous êtes L. Et puis quelle est la clé ? Quoi ? Cette clé va être égale à ce qu'il y a ici ? Ces attributs. Maintenant, c'est à vous de décider si vous voulez créer une structure pour les stocker quelque part et vous assurer de la cohérence à travers l'Europe. Mais pour l'instant, encore pour la vitesse. Tu sais comment faire ça ? Je vais juste le faire ici, comme le visage. Je vais copier. C' est et nous ferons la même chose pour le texte déposé. Et puis je vais vérifier ces orthographes dans notre modèle de données. Fichier texte. Earl String. Oui, fichier audio. Vous êtes String. J' apprends de mes erreurs ici, les gars. Oui, la transcription Scott. Nous avons dit nos valeurs. Maintenant, nous devons le sauver. Et quand vous enregistrez, vous appelez simplement le contexte ou C T. X. Robbins. Mes parents ne sauvent pas et vous remarquerez que cela jette une erreur parce que cela pourrait échouer. On doit donc essayer. Et parce que nous essayons, nous devrions envelopper ça dans un do et une prise. Laissez l'ère est égale à cela. Donc, si nous réussissons à dépasser cet essai, nous devrions imprimer un message. Deux données de base ont été enregistrées avec succès. C' est une s ou deux s ? Je pense qu'il y a deux s là-dedans. Sinon, nous pouvons imprimer notre époque habituelle un corps de réception, moins de données, et nous pouvons avoir une description localisée point de l'ère, le truc habituel. Maintenant, on doit appeler cette transcription de magasin quand on en a besoin. Et où devrions-nous le faire ? Eh bien, je pense que nous devrions le faire dans notre bilan. contrôleur, évidemment. Et nous devrions tout d'abord, avant d'essayer de sauver quelque chose que nous devrions réellement rappeler ou devrait effectivement vérifier certaines variables enregistrées jusqu'à présent égales aux transcriptions fausses et lointaines, égales à fausses. Alors que nous traversons le processus d'enregistrement et de transcription, affaiblissons, transformons ces deux vrais. Et s'ils sont tous les deux vrais, alors bien sûr, nous pouvons aller de l'avant et les enregistrer dans des données de base. Nous ne devons évidemment pas sauver des choses qui n'ont pas encore fonctionné. Donc, à la place, créant un bouton supplémentaire pour l'enregistrer ou en réutilisant réellement le bouton, nous avons déjà une référence à quelque part ici ce bouton coupé que nous avons quand nous jouons la transcription et qu'il est transcrit. Ce qu'on peut faire, c'est penser à cette jupe, notre storyboard. Donc tu as quelque chose de pictural à regarder. Ce que nous pouvons faire ici, c'est que nous pouvons essayer d'être intelligents à ce sujet. Donc nous cliquons, arrêtons l'enregistrement. Il montre la lecture montre la transcription, et ce que nous pouvons faire est que nous pouvons réellement changer cet élément, peut-être sauver si nous le voulons. Mais par tous les moyens, une fois que nous avons cliqué dessus, nous allons sauvegarder notre transcription. C' est donc une proposition intéressante. Alors voyons ce qu'on a ici. Ce que nous pouvons faire pour enregistrer ceci à une sauvegarde est cliqué sur cette barre de Knave sur ce bouton de retour, nous pouvons changer le titre de celui-ci. Appelez ce coffre-fort lorsque vous appuyez sur Entrée Notice comment il change ici. Maintenant, ça va changer pour tout ce qui est épinglé de ça, juste pour que tu saches. De cette façon, nous n'avons pas besoin d'ajouter un bouton supplémentaire pour revenir à notre dossier. Peu de classe de contrôleur. Maintenant, nous pouvons chercher la vue, va disparaître ou décharger. Et nous avons en fait ce chemin en bas où nous arrêtons tout de courir. Donc, ici, nous pouvons dire si et ce qui a été enregistré. C' est vrai et transcrit est vrai. Ensuite, nous pouvons enregistrer les données pour appeler danger. Et puis créons une fonction pour faire cela. Nous devons donc tirer notre aide sur les données de base. Par exemple, la transcription des magasins jetés. Nous lui passons notre fichier audio. Vous êtes dehors. Qu' est-ce que j'ai appelé ça ? Revenez en arrière et voir ID Teoh Audio fichier enregistré et fichier texte. Earl. Alors on y va. Il suffit de stocker tout cela maintenant les U RL eux-mêmes sont Vous êtes d'autre et nous disons ceci pour stocker les chaînes. Donc, avant de changer quoi que ce soit, nous pouvons aller regarder notre modèle de données et nous pouvons cliquer sur les types et voir ce que nous pouvons faire ici . Maintenant, il n'y a pas de fille est une ressource universelle. Oublie ce que je représente un indicateur, mais je ne suis pas sûr que ce soit compatible. Donc, ce que nous devons faire est de convertir ces deux chaînes que vous RL. Donc, nous allons avoir point et nous pouvons définir notre chaîne absolue pour cela. Maintenant, ça devrait marcher. Je sais que l'ancienne façon de le faire était de supprimer cette chaîne absolue. Et vous pourriez le faire de cette façon aussi, je crois, comme une ficelle. En fait, nous allons le faire juste pour voir ce qui se passe. C' est ce que les revêtements de voir ce qui se passe. Ok, Donc si tout fonctionne dit ça et que nous avons notre ère décrivant ce que nous ne voulons pas décrire une sorte de chasse que nous allons ici, nous avons notre chaîne absolue stockée, et cela devrait nous donner une défense référence décente au fichier. Ok, alors maintenant vérifions à l'intérieur de la sim et encore comme d'habitude. Si cela ne fonctionne pas pour vous dans le même appareil réel Tran avant de changer quoi que ce soit, donc les données de base dedans. Très bien. Allons frapper Plus utilise mon horrible, horrible microphone qui sort pour obtenir la transcription a la transcription Maintenant je vais frapper sauver en haut et oh, qu'est-ce que j'ai oublié ? J' ai oublié de mettre mes drapeaux pour qu'il n'ait rien sauvé parce que nous avons enregistré et transcrit son faux Donc allons descendre pour arrêter l'enregistrement cliqué et ce que nous voulons Voyons voir terminé Si notre drapeau est vrai Enregistrement terminé Donc si le succès nous allons mettre enregistré égal voyage et puis nous allons le transcrire Et à l'intérieur d'ici nous allons mettre égaux transcrits vrai maintenant je vais courir que j'appuie sur commande sont d'exécuter Oh, plutôt auto-doctrine Scribe Dick était vrai Command sont Et maintenant nous devrions voir notre sortie où il essaie de l'enregistrer dans les données de base se plus utiliser mon horrible, horrible microphone d'ordinateur portable et arrêter de vous enregistrer. C' est ça. Ok, eh bien, c'est transcrire quelque chose maintenant que je vais frapper en sécurité et regarder vers le bas. Ici, nous avons notre initialisation est bien sauver la transcription et enregistrer avec succès Donc, dans notre aide de données de base, nous avons réussi à passer par ce bloc entier et nous sommes allés ici, qui signifie sûr a réellement fonctionné. Nous devrions donc avoir quelque chose dans notre base de données principale, mais nous ne pouvons pas le voir nulle part. Maintenant, vous pouvez installer des extensions au code X afin de visualiser ces données. Il y en a des tonnes. Il y a comme les 10 meilleurs articles, même pour les extensions que les gens utilisaient pour visualiser les données de base. Je n'ai pas tendance à le faire parce qu'une fois que vous connaissez la méthodologie ici, vous la testez plus tard, quand vous retirez les données du cordon pour montrer dans une liste de vous, donc j'ai tendance à ne pas en avoir besoin. Vous pouvez aller les chercher et les installer pour voir ce qui est stocké dans vos données de base si c'est ainsi que vous voulez procéder. Mais pour l'instant, cela complète la façon d'écrire sur les données de base 117. M13 11 de données de base et de résultats: maintenant que nous avons toutes nos données stockées et les données de base, il est temps d'apprendre à les récupérer. Et c'est très, très facile à faire et ensuite aussi montrer une vue de table basée sur les données que nous avons récupérées . Alors ouvrez le code X et faisons-le. La première étape de notre processus est de se diriger vers notre classe d'aide aux données de base et à l'intérieur d' ici cette fonction créative pour obtenir toutes nos transcriptions. Et cela va retourner un tableau, qui est facultatif les deux objets gérés par Ennis. Maintenant, si vous créez cette application et que vous avez créé une classe pour décrire votre modèle de données, alors vous voudriez probablement revenir sur le tableau de ce modèle de données particulier. Mais comme nous ne l'avons pas fait cette fois parce que nous voulons juste faire des données de base, alors nous devons retourner des objets gérés NS. D' accord, la première chose dont nous avons besoin, c'est ce qu'on appelle une demande de récupération, monsieur. Laissez chercher la requête et nous devons spécifier le type de cette requête de récupération, qui est une requête Ennis Finch. Et avec cela, nous donnons à ceci un type appelé transcription et cela passe à notre modèle de données de sortie de transcripteur , et il en retire la transcription. D' accord ? Et cela est égal à la transcription. Ne récupère pas la demande. Donc, il va se déclencher et obtenir que maintenant vous n'avez pas besoin de spécifier cela, bien sûr, après l'avoir spécifié. Donc, vous pouvez voir de sorte que vous pouvez finir avec un peu de code comme ça. instant, ce que nous devons faire est d'obtenir notre contexte afin que nous puissions accéder à nos données de base et ensuite récupérer les résultats réels. Maintenant, c'est en fait favorable, donc nous avons besoin d'une déclaration do try. Mais juste avant cela, nous avons ici un domaine qui est ambigu. Utilisez les requêtes off fetch. Je ne suis pas sûr de ce que ça veut dire, mais si on annule ce qu'on vient de faire, peut-être que cette époque disparaîtra. Ouais, je pense que cette époque est en fait de rester loin. Bien. Ok, donc il y avait une raison pour laquelle j'avais spécifié le type à cause d'une époque stupide et ambiguë. Bref, en revenant à nos résultats. Nous devons les avoir dans une déclaration do catch, parce que la chose que nous allons essayer peut,bien sûr, bien sûr, échouer pourrait avoir aucun résultat qui pourrait être incapable d'accéder à la base de données. Donc, ces résultats sont égaux à et nous allons essayer Get out contexte maintenant, contexte est en fait facultatif. Alors peut-être que nous ferions mieux de dire ici si c t x est égal à moi. Ne comprends pas le contexte. Alors on peut faire ce qu'on doit faire ici. Donc on peut essayer C t X ne pas chercher. Et cela va chercher quelque chose en utilisant nos requêtes récupérées et vous remarquerez qu'il retourne et n'importe quel tableau et jette aussi. Alors, quelle est notre demande ? Quoi ? Nous avons déjà créé cette requête de récupération. D' accord. Maintenant, nous pouvons nous envoyer un message. En tant que développeurs, nous avons une légère erreur ici. Qu' est-ce que j'ai fait ? Oups. Allons juste attraper ici. Ah, nous avons une légère erreur parce que et j'ai le sentiment que je sais pourquoi ici l'air est jeté d'ici ou pas manipulé. Qu' est-ce qui se passe ici, les gens ? Oh, c'est parce que mes supports ne sont pas en place. Mes accolades plutôt pour que je ne puisse pas faire ça. Et juste avant de le faire avec vous, mettez ces accolades en place. Tu vois ce que je veux dire sur les accolades ? Droit ? En revenant ici, nous pouvons obtenir nos résultats de recherche et nous pouvons imprimer Got pour les résultats de données juste pour que nous puissions vérifier. De plus, puis nous pouvons obtenir nos résultats de recherche et nous pouvons simplement retourner le compte. On peut leur dire numéro ou quelque chose comme ça. Ok, alors ce qu'on va faire, et on doit probablement tourner ça en ficelle. Ou en fait, tu sais, ce qu'on peut faire c'est le faire de la façon intelligente de faire quelque chose comme engourdi. On peut avoir des fouets, une barreoblique arrière, oblique arrière, et je ne le sais pas si vous vous en souvenez, mais je l'ai déjà fait avec vous. Vous pouvez ouvrir et fermer vos crochets, et ensuite vous pouvez me mettre votre I aujourd'hui. Et cela devrait chaîne de je lui. Ok, donc on a nos résultats de recherche. Maintenant, nous allons parcourir chaque puits, nous pouvons réellement parcourir chaque résultat de recherche, et nous pouvons imprimer ce que nous avons. Je ne pense pas qu'on ait vraiment besoin de faire ça. Tout ce que nous devons faire à ce stade est alors retourner de tels résultats sur un THE. Voyons quel type. Ce sont de tels résultats. C' est la transcription, donc vous pouvez réellement convertir cela comme un objet géré par Ennis. Donc, vous avez un objet générique. C' est totalement à vous de voir. Comment veux-tu recommencer ? Si vous aviez une classe où vous définiriez votre modèle de données, alors vous ne le feriez pas réellement. Vous retournerez simplement la classe de transcription elle-même pour le type de transcription. Plutôt. Ok, donc nous avons nos erreurs ici. Allons arranger ça. Qué attraper. Sinon, si ça ne marche pas et que nous ne tomberons pas et que nous ne comprenons pas ça, alors nous devons venir ici et nous devons revenir maintenant. Donc on n'a rien, n' est-ce pas ? Donc, une fois que nous avons récupéré ces données, alors nous pouvons aller chercher les données de stockage et mettre à jour notre contrôleur de vue de table sur notre écran d'origine . C' est donc ce fichier transcriptions, vue de table, contrôleur et rebelle avaient des éléments factices. Mais on peut changer tout ça. Maintenant, nous pouvons avoir des transcriptions lointaines. Est un tableau sur les objets gérés par ennis. Mais nous n'avons pas cela parce que nous devons importer des données de base ici. D' accord. Et juste pour faciliter, nous pouvons créer un nouveau tableau à partir d'objets gérés NS comme set. Donc, c'est un tableau vide pour le moment. Maintenant, en querelle, on peut aller chercher nos transcriptions. Donc sous contrôle. Autorisations, peut-être. Et puis créons une fonction. Alors, qu'est-ce que ça fait ? Eh bien, ça va et obtient ces résultats à partir de nos données de base. Aidez-nous. Donc, si les résultats sont égaux à un nouvel assistant de données de base que nous avons déjà créé ici. Donc, si les données de base aident son point à obtenir des transcriptions et rappelez-vous, c'est facultatif. C' est pourquoi nous avons si nous laissons alors nous pouvons assigner les transcriptions actuelles à ce résultat ou encore chemin autour. Plutôt. Ok, maintenant on doit juste mettre à jour tous les autres morceaux dont on a besoin. On va expliquer ce qu'on sait, Eric. Bon sur par d'autres morceaux et morceaux. Je veux dire, cette source de données de vue de table. Alors festival, nous devons changer le compte. Nous devons changer cela sur ce à quoi nous devons changer cela. Eh bien, nous devons changer cela peut-être aussi, aussi, en retirant la valeur de la transcription. Donc ce que je vais faire, c'est juste couper ça. Je vais juste mettre le fichier audio que vous êtes, ou plutôt j'allais mettre la transcription du feu. Ok, alors on peut en définir le texte. Alors, comment on en sort le texte ? Eh bien, c'est que nous obtenons que notre transcription n'a pas de valeur. Et on peut l'obtenir à partir d'une clé sur quelle clé est-ce ? Eh bien, si vous vous souvenez, c'est un fichier audio. Tu es sorti de la chaîne, et je sais qu'on n'a pas donné de nom ou quoi que ce soit, mais c'est bon. Nous vérifions simplement ce que nous obtenons. Maintenant, cette valeur, je crois, est facultative. Oui, nous avons un point d'interrogation. Donc, si vous êtes l chaîne est égale à ceci. Ensuite, nous pouvons insérer notre étiquette de texte de cellule. Le texte Doc est égal à vous êtes la chaîne de l. Maintenant, c'est un tout cela pourrait être n'importe quoi, mais nous sommes à peu près sûrs parce que c'est comme ça que nous pouvons le convertir en un flux. Ok, donc traiter une force réduite, les cordes ne seront jamais produites. Maintenant, on y va. On va faire ça n'a jamais été muté. Laissons donc la transcription égale à cela. Ok, donc c'est notre vue de table de base triée. Donc nous sortons pour des inscriptions. Nous obtenons des transcriptions égales à blond sanglant. Donc, si nous venons à notre vue de table, nous avons tout ce dont nous avons besoin maintenant. Cela devrait se produire en théorie avant que la vue de table ne soit chargée avec des données. Voyons si c'est vraiment le cas. Allons frapper jouer. J' ai fermé mes simulateurs. On doit attendre qu'il se charge. Droit ? Et nous l'avons là. Donc, nous avons notre transcription de base ici, ce qui, pour le moment, ne fait absolument rien. Mais nous savons que nous obtenons ça en fonction de la route. Que se passe-t-il si je frappe ? De plus, on commence à enregistrer une autre transcription et on s'arrête. Ça devrait sortir. Mon réseau est à nouveau en panne. Excusez-moi pendant que je répare ça. D' accord ? Ou fait. Allons frapper. En plus, enregistrons quelque chose et transcritons. D' accord. Plus appelé quelque chose n transcribe était assez proche. C' est assez proche. Ok, revenons en arrière et sauvegardons ça. Et nous avons une erreur parce que nous ne pouvons pas vraiment le voir à l'intérieur ici. Bien sûr, si nous balayons notre pomme, nous la rechargeons à partir d'ex corbeaux. Alors ça va charger exactement ce dont nous avons besoin. Nous devrions avoir des résultats. Ok, alors comment on peut contourner ça ? Eh bien, c'est assez simple. Tout ce qu'on a à faire, c'est appeler, obtenir des transcriptions. Donc je vais couper ça. Pas de charge opposée, mais la vue apparaîtra donc à chaque fois que la vue apparaît, elle va récupérer les données à nouveau. C' est bon. Si votre ensemble de données n'est pas absolument énorme, quelles données de base et juste du texte brut, vous devriez être absolument bien. Je veux dire, il faudra environ quelques milliers d'entrées avant que vous remarquiez n'importe quel type de ralentissement sur les appareils d' aujourd'hui. Donc, pour Hit Plus, on enregistre autre chose. On a arrêté d'enregistrer. Ça commence à transcrire. On est des enregistrements House, bien sûr, et on y retourne. On ne l'a pas. Et c'est parce que vous devez appeler une chose de plus parce que le contrôleur de vue ou le voleur de vue de table ne prend pas réellement. Il y a un changement que vous remarquerez ici dans le bogueur profond que nous avons trouvé qu'il y a trois résultats, mais il n'est pas seulement affiché dans notre vue de tableau. Donc ce que vous devez faire, c'est que nous avons des transcriptions ici, donc tout est trié. C' est tout fait. Une fois que vous obtenez ces transcriptions, vous pouvez appeler des fouets de vue de table juste une vieille vue de table. Ne recharge pas les données. Ok, donc maintenant nous pouvons exécuter ça, et il rechargera les données chaque fois qu'il aura ces transcriptions à nouveau. Maintenant, en fonction de votre ensemble de données. Si c'est comme des données, c'est bien de le recharger. Si ce sont des données lourdes, je fais ça pendant que je parle. S' il s'agit de données volumineuses, vous pouvez insérer une cellule plutôt que de récupérer toutes vos données à nouveau, car c'est un processus très coûteux à faire. Désolé, je suis distrait par la transcription ici. C' est un processus très coûteux à faire, c'est de me dire que je me trompe. Vous avez tellement tort de toute façon, montrer tout un tas de cellules encore et encore qui ont à dire des images en eux est un processus coûteux. Tu ne veux pas faire ça. Ok, alors revenons à la sécurité. Et maintenant, nous en avons quatre. Et bien sûr, nous pouvons le répéter autant de fois que nous le voulons. Et tant que la transcription a sauvé, je suis désolé, les gars. Son blâme Siri, pas moi. Oh, mon garçon. D' accord. On a cinq résultats maintenant et rien ne se passe. Évidemment, si on clique dessus, quelle chose à sauvegarder pour le coordonner. Bref, c'est comme ça qu'il a sauvé le coordonnateur. Mettez les données dans notre vue de table et comment nous mettons à jour la vue de table une fois que nous avons terminé avec l' actualisation 118. M13 12 EPIC sans RÉPONSES !: Ok, les gars, j'ai des défis pour vous. Ce sont des défis assez épiques sur je ne vais pas vous donner la réponse pour cela parce que je veux que vous alliez les comprendre vous-mêmes. Ils vont donc être difficiles. S' il vous plaît, ne me donnez pas une note d'une étoile parce qu'ils le sont. Je le fais pour améliorer vos compétences analytiques et votre capacité à chercher des réponses. Parce que c'est une compétence cruciale en tant que développeur, encore plus que d'être un Dieu de programmation, c'est à la recherche de choses. Droit ? Donc, votre première partie des devoirs est de donner la transcription du nom, parce que pour le moment nous montrons juste un fichier. Vous êtes moi dans notre bande d'unités. Un peu boiteux. Donc, vous voulez donner à l'utilisateur et la possibilité d'entrer un nom, peut-être dans une vue de texte sur l'écran d'enregistrement, puis dire que quand ils appuyez sur le bouton de sauvegarde maintenant quelques indices, tout ce que vous avez à faire est de donner le nom dans les données de base. Donc tu sais comment faire ça ? Vous avez un modèle pour ajouter des variables à lui de force, puis peut-être si l'utilisateur ne remplit pas le nom dans l'écran d'enregistrement. Vous pouvez donner à l'utilisateur une sorte d'alerte de désactivation pour lui faire savoir qu'il ne l'a pas encore fait. Ok, donc Paul était la vidéo ici. Allez-y et passez un bon coup à ça. Comme je l'ai dit, je ne vais pas vous donner de réponses pour ça parce que vous devez vraiment penser à tout ça par vous-même, non ? Si vous êtes de retour, alors vous avez terminé les premiers devoirs. Les devoirs suivants que je veux que vous fassiez maintenant, après cela, je veux que vous implémentez diapositive à supprimer pour les transcriptions indésirables. Maintenant, c'est un peu délicat parce que vous avez des fichiers, vous avez des données de base et vous avez une vue de table. Donc, principalement, vous voulez implémenter des slights, supprimer. Et vous pouvez le trouver sur le web. C' est très facile à trouver, et ce que vous devez faire est que vous devez supprimer les données de tout d'abord, la base de données principale. Deuxièmement, vous devez supprimer le fichier enregistré sur et le fichier texte de votre système de documents, et vous devriez savoir comment obtenir une référence à ceux maintenant parce que vous avez les données et les données de base et Troisièmement, vous avez besoin pour mettre à jour la vue de table ou simplement recharger les données, est-ce pas ? Alors va essayer ça. Maintenant. Pause la vidéo ici, et je te vois pour les prochains devoirs. J' espère que tu t'occupes bien de ce second devoir. Il est le 3ème 1 Nous avons un écran préféré qui n'a pas encore mis en œuvre Bean, donc je veux que vous fassiez ça. Je veux donner à l'utilisateur loin de favori ing un de leurs éléments. Comment tu le fais, c'est totalement à toi de décider. Et encore une fois, vous voudrez utiliser des données de base pour cela hors booléen, par exemple qui dit son favori oui ou non. Alors faites une pause ici. Va y aller et va y aller. Bonjour encore. C' est l'heure des devoirs numéro 4. Je pense que c'est le dernier. Vous devez autoriser l'utilisateur à réviser et modifier les transcriptions. Donc, quand ils pressent quelque chose sur la vue de table, il va les amener à un écran d'édition, qui montre que le transfert de leur transcription et leur permet de changer le texte de cette transcription s'ils le veulent, et puis enregistrez cela encore et encore. C' est tout ce que je vous ai montré, vous avez juste besoin de rassembler en ouvrant un nouveau contrôleur de vue à partir de la vue de table, le remplissant avec la transcription et en permettant l'utilisation de l'éditer, puis en enregistrant ce Changer si joli difficile, mais pas difficile. Si vous prenez étape par étape et pensez logiquement et encore aucune réponse. Alors pause juste ici et avoir un très bon aller il. 119. Résumé de l'application transcriber: Très bien joué, les gars. Vous avez atteint la fin de ce module. J' espère que tu n'as pas trop lutté avec les devoirs, mais c'était très difficile. Les devoirs. J' admets que voici un petit résumé de tout ce que vous avez fait. Vous avez créé une application agréable, simple transcriber et certaines des choses que vous avez appris tout au long de la façon dont vous avez appris à créer Tab APS. À partir d'une application à vue unique, vous avez appris des choses sur les autorisations pour l'enregistrement et l'enregistrement des fichiers par microphone. Vous avez appris où se trouvent les répertoires de documents, et vous avez appris où stocker ces éléments, ainsi que les transcriptions de Serie transformant notre voix en texte. Vous avez également appris à faire une lecture audio très basique et certains des problèmes de permissions autour de cela, car votre appareil ne peut prendre qu'une entrée microphone à la fois, vous devez donc demander l'autorisation du système. Nous avons également examiné les bases mêmes des données de base. Maintenant, vous pouvez écrire des volumes de livres sur des données de base. C' est très complexe et très utile. Mais ce n'est pas ce que sert ce cours. Ce cours sert à vous aider à mettre réellement APS sur le magasin APP et bien sûr , nous avons examiné comment enregistrer les fichiers texte. Et je suis désolé d'avoir fait tes devoirs pour aller avec tout ça. Droit ? Donc il ne reste plus qu'à dire, c'est un travail merveilleux. Bien joué. Et comme d'habitude, voici quelques feux d'artifice.