1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL ARMENDARIZ: Bonjour, tout le monde, accueillir au développement app iOS 3 00:00:14,340 --> 00:00:15,020 avec SWIFT. 4 00:00:15,020 --> 00:00:15,870 Je suis Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Je suis precepter de l'ordinateur la science ici à l'école 6 00:00:18,920 --> 00:00:21,200 de génie et sciences appliquées. 7 00:00:21,200 --> 00:00:24,310 Et rapide est en fait assez d'une langue vraiment bien. 8 00:00:24,310 --> 00:00:27,190 Et je ai des plans pour aujourd'hui. 9 00:00:27,190 --> 00:00:31,430 Donc, au cours de la prochaine heure ou nous allons regarder iOS app développement se 10 00:00:31,430 --> 00:00:36,640 utilisant Xcode et effectivement la création de certains applications très simples, très simples. 11 00:00:36,640 --> 00:00:40,070 Et en regardant la façon dont vous effectivement prendre ces applications, 12 00:00:40,070 --> 00:00:42,887 et les construire, et effectivement les mettre sur un appareil iOS. 13 00:00:42,887 --> 00:00:44,970 Certaines des choses qui nous ne allons pas à regarder 14 00:00:44,970 --> 00:00:47,540 va inclure des choses comme prendre réellement une demande 15 00:00:47,540 --> 00:00:48,940 et le mettre sur l'app store. 16 00:00:48,940 --> 00:00:52,930 Il ya beaucoup de tutoriels en ligne qui vous aidera à cet aspect des choses. 17 00:00:52,930 --> 00:00:56,230 Mais aussi parce que partie du CS50, vous obtenez 18 00:00:56,230 --> 00:00:59,780 à rejoindre le développement d'Apple équipe, l'équipe de développement d'applications de CS50. 19 00:00:59,780 --> 00:01:02,790 Si vous ne avez pas encore fait et vous êtes affilié CS50, 20 00:01:02,790 --> 00:01:04,810 Je ne vous recommande faire parce que 21 00:01:04,810 --> 00:01:08,820 comment vous êtes en mesure de créer certains programmes dans Xcode, 22 00:01:08,820 --> 00:01:11,890 les construire, et effectivement mis eux sur certains de vos appareils iOS 23 00:01:11,890 --> 00:01:14,087 si vous avez réellement un dispositif iOS physique. 24 00:01:14,087 --> 00:01:16,670 Si vous ne avez pas un physique iOS dispositif qui est plus que bien. 25 00:01:16,670 --> 00:01:19,810 Vous pouvez réellement développer pour iOS. 26 00:01:19,810 --> 00:01:22,390 Et Xcode a une simulateur vous permet 27 00:01:22,390 --> 00:01:26,570 pour voir votre application dans l'action sur votre ordinateur. 28 00:01:26,570 --> 00:01:30,440 Mais ce genre de chose est un pur pour réellement jouer et interagir 29 00:01:30,440 --> 00:01:34,235 avec votre demande sur un périphérique réel. 30 00:01:34,235 --> 00:01:37,360 Donc, il ya un couple d'exigences à réellement faire tout ce développement. 31 00:01:37,360 --> 00:01:39,151 L'un d'eux est que vous devez avoir un Mac. 32 00:01:39,151 --> 00:01:44,770 Il doit être exécuté 10.9.4 ou version ultérieure afin de faire du développement avec SWIFT. 33 00:01:44,770 --> 00:01:47,770 >> Vous pouvez utiliser une version antérieure Version d'élaborer 34 00:01:47,770 --> 00:01:50,810 avec Objective C pour iOS et Mac. 35 00:01:50,810 --> 00:01:53,990 Mais je recommande, et beaucoup de la exemples que nous allons voir aujourd'hui, 36 00:01:53,990 --> 00:01:55,700 utiliser 10,10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Donc, si vous ne avez pas encore mis à niveau, ce est une bonne excuse pour le faire. 38 00:02:00,910 --> 00:02:05,480 Maintenant Xcode 6.1 est la dernière version de l'environnement de développement intégré 39 00:02:05,480 --> 00:02:08,979 que Apple fournit gratuitement que vous pouvez télécharger hors l'app store. 40 00:02:08,979 --> 00:02:11,220 Et je vous recommande également exécuter la dernière version. 41 00:02:11,220 --> 00:02:14,700 >> Se il vous arrive de faire tourner une version antérieure Version, Xcode 5 et ci-dessous simplement 42 00:02:14,700 --> 00:02:16,741 il suffit de ne pas soutenir que ce soit rapide. 43 00:02:16,741 --> 00:02:19,490 Et les versions bêta de six, qui ont été libérés au cours de l'été, 44 00:02:19,490 --> 00:02:21,770 faire soutenir rapide, mais il ya été un très grand nombre 45 00:02:21,770 --> 00:02:25,220 des changements de la langue, assez de sorte que le code qui vous êtes 46 00:02:25,220 --> 00:02:28,320 aller à regarder et que vous pourrait trouver sur internet 47 00:02:28,320 --> 00:02:33,294 ne sera pas réellement compiler correctement dans ces versions précédentes de Xcode. 48 00:02:33,294 --> 00:02:35,460 Encore une fois, si vous ne avez pas encore avoir un compte de développeur, 49 00:02:35,460 --> 00:02:38,560 Je vous recommande d'aller à developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Inscrivez-vous, créer un compte développeur, et rejoindre l'équipe CS50 de développement d'applications. 51 00:02:42,240 --> 00:02:45,530 Cela va vous fournir une occasion pour compiler vos applications 52 00:02:45,530 --> 00:02:47,840 et mettez-les sur votre appareil. 53 00:02:47,840 --> 00:02:49,222 OK, alors nous allons commencer. 54 00:02:49,222 --> 00:02:50,930 La première chose nous allons faire, ce est 55 00:02:50,930 --> 00:02:55,140 pour réellement créer un très projet simple dans Xcode 56 00:02:55,140 --> 00:02:59,530 cela vous permettra de faire une demande. 57 00:02:59,530 --> 00:03:03,170 >> Donc, si vous ne avez pas encore Xcode ouvert, aller de l'avant et de l'ouvrir 58 00:03:03,170 --> 00:03:04,270 et de créer un nouveau projet. 59 00:03:04,270 --> 00:03:06,570 Un écran spécial de démarrage ouvrira et vous donnera 60 00:03:06,570 --> 00:03:08,800 certaines options sur ce ce est que vous voulez faire. 61 00:03:08,800 --> 00:03:12,170 Il suffit de dire que vous voulez créer un nouveau projet, une nouvelle application. 62 00:03:12,170 --> 00:03:15,650 Cette fenêtre se ouvrira, en supposant que vous utilisez Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 À l'heure actuelle, et pour la la durée de ce séminaire, 64 00:03:17,650 --> 00:03:19,990 nous allons être en utilisant applications de vue unique, juste 65 00:03:19,990 --> 00:03:22,590 une sorte de demande de base à se mouiller les pieds. 66 00:03:22,590 --> 00:03:25,200 Et vous pouvez ramifier sur votre propre à partir de là. 67 00:03:25,200 --> 00:03:27,660 >> Cliquez sur Suivant à ce stade. 68 00:03:27,660 --> 00:03:30,796 Maintenant, voici il ya un certain nombre de choses que vous pouvez entrer. 69 00:03:30,796 --> 00:03:32,670 Le nom du produit est le nom de votre projet. 70 00:03:32,670 --> 00:03:34,859 Dans ce cas, je suis juste va appeler Seminar1 71 00:03:34,859 --> 00:03:36,150 parce que ce est notre premier exemple. 72 00:03:36,150 --> 00:03:38,290 Nom de l'organisation, dans ce cas est juste mon nom. 73 00:03:38,290 --> 00:03:41,760 Vous pouvez bien sûr changer à votre propre nom, ou pour CS50. 74 00:03:41,760 --> 00:03:46,160 identificateur de l'organisation, si vous arrive d'avoir un site web juste prendre 75 00:03:46,160 --> 00:03:49,940 le nom de domaine en inverser, com.yourname. 76 00:03:49,940 --> 00:03:54,200 puis le nom du produit devrait apparaître automatiquement 77 00:03:54,200 --> 00:03:55,820 après que l'identificateur de paquet. 78 00:03:55,820 --> 00:03:59,200 >> Évidemment, le langage que nous sommes allez utiliser pour aujourd'hui est rapide. 79 00:03:59,200 --> 00:04:02,590 Vous pouvez, bien sûr, utiliser Objective C pour cela, mais aujourd'hui, sera rapide. 80 00:04:02,590 --> 00:04:04,920 Et nous disons pour l'instant dispositifs universels, donc 81 00:04:04,920 --> 00:04:06,900 qu'il fonctionne à la fois sur iPad et iPhone. 82 00:04:06,900 --> 00:04:10,040 Et nous laisserons coeur des données non vérifiées de garder 83 00:04:10,040 --> 00:04:12,830 le projet relativement simple pour le moment. 84 00:04:12,830 --> 00:04:14,430 Donc, nous allons aller de l'avant et cliquez sur Suivant. 85 00:04:14,430 --> 00:04:16,471 Et il va me demander où je veux l'enregistrer. 86 00:04:16,471 --> 00:04:19,250 Je vais l'enregistrer sur mon bureau pour le moment. 87 00:04:19,250 --> 00:04:22,267 >> Très bien, alors maintenant ce est ce qui se produire lorsque vous Xcode effectivement ouverte. 88 00:04:22,267 --> 00:04:24,100 Et remarquez que le première chose que vous voyez 89 00:04:24,100 --> 00:04:28,770 est ce point d'exclamation que dit pas d'identité de signature trouvé. 90 00:04:28,770 --> 00:04:31,520 Je ai fait intentionnellement ce sur mon ordinateur et je suis 91 00:04:31,520 --> 00:04:34,220 en espérant que je vais être en mesure de réellement régler le problème, 92 00:04:34,220 --> 00:04:37,860 vous parce que je veux voir comment cela fonctionne réellement sur votre propre machine. 93 00:04:37,860 --> 00:04:40,400 >> Allez-y et cliquez sur Correction d'un problème. 94 00:04:40,400 --> 00:04:45,400 Il vous demandera si vous avez une compte développeur de pomme existant. 95 00:04:45,400 --> 00:04:48,330 Ce est là que se joindre à la équipe de développement de l'application de CS50 96 00:04:48,330 --> 00:04:51,240 est important afin que vous ne ont seulement un compte de l'application, 97 00:04:51,240 --> 00:04:53,690 mais vous avez également la la capacité de signer les applications 98 00:04:53,690 --> 00:04:56,420 et mettez-les sur votre appareil iOS. 99 00:04:56,420 --> 00:04:58,957 Ce est en cliquant pas-- Correction d'un problème ne est pas nécessaire 100 00:04:58,957 --> 00:05:01,040 si vous allez juste construire et développer localement, 101 00:05:01,040 --> 00:05:03,520 entièrement dans le simulateur iOS. 102 00:05:03,520 --> 00:05:05,820 >> Mais pour l'instant je vais à développer et à mettre 103 00:05:05,820 --> 00:05:08,160 sur mon iPad, qui sera en mesure de diffuser ainsi. 104 00:05:08,160 --> 00:05:10,770 Donc, je ne veux effectivement ajouter ceci. 105 00:05:10,770 --> 00:05:13,670 Et ça va poser moi ma pomme ID. 106 00:05:13,670 --> 00:05:15,700 Donc ça va être ça. 107 00:05:15,700 --> 00:05:18,940 Et je dois chercher ma mot de passe, qui est ici. 108 00:05:18,940 --> 00:05:27,760 Alors donnez-moi une seconde pour constater que, et à le copier et le coller ici. 109 00:05:27,760 --> 00:05:28,580 >> Cliquez sur Ajouter. 110 00:05:28,580 --> 00:05:31,095 Il va me demander quelle équipe je veux rejoindre. 111 00:05:31,095 --> 00:05:33,240 Je vais faire école d'ingénieurs. 112 00:05:33,240 --> 00:05:35,680 Cliquez sur Joindre. 113 00:05:35,680 --> 00:05:37,780 Oups, ce est la mauvaise. 114 00:05:37,780 --> 00:05:40,730 Faisons celui-ci. 115 00:05:40,730 --> 00:05:42,060 Espérons que l'on va travailler. 116 00:05:42,060 --> 00:05:44,220 Que l'on ne fonctionne toujours pas. 117 00:05:44,220 --> 00:05:46,610 Nous manquons de bons ici. 118 00:05:46,610 --> 00:05:48,260 OK, celui-ci devrait fonctionner. 119 00:05:48,260 --> 00:05:50,816 Maintenant que fermer. 120 00:05:50,816 --> 00:05:54,450 Maintenant, nous allons faire de l'école ingénierie, cliquez sur Choisir. 121 00:05:54,450 --> 00:06:00,190 >> Et maintenant, je espère après une quelques secondes, vous can-- OK, 122 00:06:00,190 --> 00:06:02,550 Je révoque et demande. 123 00:06:02,550 --> 00:06:05,410 Oh man, ça va pas fonctionner. 124 00:06:05,410 --> 00:06:08,890 OK, je vais essayer un autre. 125 00:06:08,890 --> 00:06:11,167 Faisons celui-là. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Démonstrations en direct sont me parviennent. 128 00:06:19,310 --> 00:06:22,540 Nous pourrions avoir à revenir à tout Immeuble entièrement localement, 129 00:06:22,540 --> 00:06:25,050 mais ce serait OK dans ce cas. 130 00:06:25,050 --> 00:06:28,560 >> Donc ici, tandis que ce est en fait travail, ce que nous allons faire est juste 131 00:06:28,560 --> 00:06:31,190 créer une très simple Bonjour demande mondiale. 132 00:06:31,190 --> 00:06:32,340 Donc, ce est Xcode. 133 00:06:32,340 --> 00:06:37,300 Et si vous ne avez pas encore vu, il peut être un peu intimidant au début. 134 00:06:37,300 --> 00:06:41,430 Il ya beaucoup de vitres, il ya une beaucoup de gadgets dans divers domaines. 135 00:06:41,430 --> 00:06:44,300 Mais juste réaliser qu'il ya vraiment plusieurs composants principaux 136 00:06:44,300 --> 00:06:46,580 à cet environnement de développement. 137 00:06:46,580 --> 00:06:51,090 À l'extrême gauche sont tous les fichiers qui sont applicables à votre programme 138 00:06:51,090 --> 00:06:52,997 ou à votre projet particulier. 139 00:06:52,997 --> 00:06:55,080 Nous serons en cliquant autour certains d'entre eux et nous allons 140 00:06:55,080 --> 00:06:57,660 signaler le plus ceux importantes au fil du temps. 141 00:06:57,660 --> 00:06:59,650 À l'extrême droite, nous un ensemble d'attributs. 142 00:06:59,650 --> 00:07:02,920 Et tous ces attributs, il sont différents volets pour les attributs. 143 00:07:02,920 --> 00:07:06,770 Les vitres changeront en fonction de le contexte de la page principale, qui 144 00:07:06,770 --> 00:07:08,290 se trouve être dans le milieu. 145 00:07:08,290 --> 00:07:11,740 Maintenant, le milieu peut effectivement montrer vous une variété de choses, par exemple 146 00:07:11,740 --> 00:07:13,290 votre code lui-même. 147 00:07:13,290 --> 00:07:17,070 Ou vous pourriez réellement quand have-- vous cliquez sur le storyboard qui 148 00:07:17,070 --> 00:07:21,270 est, soit dit en passant, juste un graphique représentation de votre utilisateur 149 00:07:21,270 --> 00:07:25,350 interface pour votre Application-- alors les attributs volet 150 00:07:25,350 --> 00:07:27,334 à l'extrême droite très va effectivement changer. 151 00:07:27,334 --> 00:07:29,750 Maintenant, il ya un couple d'autres choses que je veux faire remarquer. 152 00:07:29,750 --> 00:07:33,360 Vous pouvez sorte d'explorer autour dans l'environnement sur votre propre. 153 00:07:33,360 --> 00:07:35,730 Mais l'une des choses qui a été très utile 154 00:07:35,730 --> 00:07:38,470 est ce bouton ici, le en haut à droite de la fenêtre. 155 00:07:38,470 --> 00:07:41,230 Il ya ce bouton ressemble à l'extrême 156 00:07:41,230 --> 00:07:46,090 il a laissé un paragraphe suivie de deux cercles et tri 157 00:07:46,090 --> 00:07:49,540 de deux flèches pointant l'un de l'autre. 158 00:07:49,540 --> 00:07:52,640 Si vous basculez entre le éditeur standard, qui 159 00:07:52,640 --> 00:07:55,560 est celle la plus à gauche, l'une Ce est sélectionnée par défaut, 160 00:07:55,560 --> 00:08:01,040 et les deux cercles qui se chevauchent l'autre, ce que vous obtenez en fait 161 00:08:01,040 --> 00:08:02,210 sont une vue à double vitrage. 162 00:08:02,210 --> 00:08:04,240 >> Et ce est en fait va être utile pour nous 163 00:08:04,240 --> 00:08:07,330 quand nous avons besoin de lier les articles dans l'interface utilisateur pour le code. 164 00:08:07,330 --> 00:08:09,330 Et nous parlerons plus en détail que dans un instant. 165 00:08:09,330 --> 00:08:12,050 Mais réalisez que si vous obtenez encore plus de panneaux de ce genre, 166 00:08:12,050 --> 00:08:15,830 vous pouvez simplifier votre point de vue juste un peu en cliquant retour 167 00:08:15,830 --> 00:08:20,680 sur votre éditeur unique. 168 00:08:20,680 --> 00:08:21,580 Jusqu'ici, tout va bien. 169 00:08:21,580 --> 00:08:24,560 Donc, fondamentalement, nous avons le code sur la gauche, les attributs sur la droite, 170 00:08:24,560 --> 00:08:28,260 et quoi que ce soit nous travaillons ici dans le centre. 171 00:08:28,260 --> 00:08:30,390 >> Donc ici, je ai cliqué sur le storyboard principale. 172 00:08:30,390 --> 00:08:33,350 Et le storyboard, encore une fois, est une façon dans Xcode 173 00:08:33,350 --> 00:08:38,110 que vous pouvez réellement créer votre utilisateur interface en utilisant simplement faire glisser et déposer 174 00:08:38,110 --> 00:08:39,130 techniques. 175 00:08:39,130 --> 00:08:41,190 Et donc pour notre très première application de cette 176 00:08:41,190 --> 00:08:42,720 est précisément ce que nous allons faire. 177 00:08:42,720 --> 00:08:45,950 Nous allons descendre à la partie très loin inférieur droit 178 00:08:45,950 --> 00:08:49,900 de l'écran, qui contient une variété d'éléments d'utilisateurs 179 00:08:49,900 --> 00:08:53,270 que vous pouvez alors cliquer et faire glisser pour créer votre interface utilisateur. 180 00:08:53,270 --> 00:08:55,550 >> Maintenant tous ces éléments sont appelés vues 181 00:08:55,550 --> 00:08:57,370 parce qu'ils fournissent une sorte de vue. 182 00:08:57,370 --> 00:09:00,190 Il ya une vue de l'image, pour par exemple, pour montrer effectivement 183 00:09:00,190 --> 00:09:01,740 une image sur l'interface utilisateur. 184 00:09:01,740 --> 00:09:04,310 Il ya une vue de tableau à montrer effectivement une table. 185 00:09:04,310 --> 00:09:05,190 Ainsi de suite et ainsi de suite. 186 00:09:05,190 --> 00:09:08,250 Il existe une grande variété de vues que vous pouvez sélectionner ici. 187 00:09:08,250 --> 00:09:11,100 Il suffit donc pour l'instant nous allons pour rechercher une étiquette. 188 00:09:11,100 --> 00:09:13,550 Vous pouvez simplement faire défiler toutes les listes qui est là. 189 00:09:13,550 --> 00:09:15,460 Mais il ya la recherche bar tout en bas 190 00:09:15,460 --> 00:09:19,460 qui le rend plus facile à identifier vues spécifiques que vous avez réellement 191 00:09:19,460 --> 00:09:22,020 vouloir glisser dans votre interface utilisateur. 192 00:09:22,020 --> 00:09:23,560 >> Trouvé mon label. 193 00:09:23,560 --> 00:09:28,430 Je vais glisser ici, directement sur mon exemple d'application. 194 00:09:28,430 --> 00:09:30,130 Juste là au milieu semble bon. 195 00:09:30,130 --> 00:09:33,180 Et je vais taper "Bonjour tout le monde!" 196 00:09:33,180 --> 00:09:33,810 Appuyez sur Entrée. 197 00:09:33,810 --> 00:09:34,877 Maintenant, je ai une étiquette. 198 00:09:34,877 --> 00:09:36,960 Il ne semble pas que ce est centré à juste titre. 199 00:09:36,960 --> 00:09:38,500 Donc, je peux essayer de le recentrer. 200 00:09:38,500 --> 00:09:42,100 Heureusement, il offre à ces guide pour rendre les choses beaucoup plus facile. 201 00:09:42,100 --> 00:09:44,130 Je vais essayer de le compiler. 202 00:09:44,130 --> 00:09:46,570 Je espère que ce sera effectivement travailler ici. 203 00:09:46,570 --> 00:09:52,870 Et si ce ne est pas, dans un instant il sera en effet apparaître sur mon iPad. 204 00:09:52,870 --> 00:09:54,360 Ce est ici. 205 00:09:54,360 --> 00:09:55,060 Il est là. 206 00:09:55,060 --> 00:09:56,590 >> OK, donc ce est tout. 207 00:09:56,590 --> 00:09:57,160 Nous avons terminé. 208 00:09:57,160 --> 00:09:58,868 Nous avons créé notre très première application. 209 00:09:58,868 --> 00:10:01,330 Maintenant, évidemment, cela ne fait rien. 210 00:10:01,330 --> 00:10:02,280 Ce est juste une étiquette. 211 00:10:02,280 --> 00:10:07,350 Il ya aucun lien entre l'interface utilisateur et le code. 212 00:10:07,350 --> 00:10:10,130 Donc, si nous voulions vraiment pour créer cette connexion, 213 00:10:10,130 --> 00:10:14,790 si nous voulions vraiment avoir une sorte de communication entre les éléments 214 00:10:14,790 --> 00:10:17,540 qui existent sur la écran et le code qui 215 00:10:17,540 --> 00:10:19,810 nous permet de contrôler ces éléments, puis 216 00:10:19,810 --> 00:10:23,570 nous avons réellement besoin de regarder le code lui-même. 217 00:10:23,570 --> 00:10:27,000 >> Donc, ce est ce qu'on appelle ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 Et pour, en particulier pour vos premiers programmes, 219 00:10:30,080 --> 00:10:33,120 cela va être une sorte de la vrac du code que vous enter-- 220 00:10:33,120 --> 00:10:35,980 va être dans ce document ici. 221 00:10:35,980 --> 00:10:38,390 Il ya beaucoup de choses ce est ici jusqu'à présent, non? 222 00:10:38,390 --> 00:10:42,660 Il ya kit interface d'importation de classe, de la correction, [? funk,?] toutes ces différentes choses. 223 00:10:42,660 --> 00:10:45,820 Et ce ne est pas tout à fait clair ce que ce est que tous ces moyens. 224 00:10:45,820 --> 00:10:48,570 Alors prenons un peu de recul de suite à partir de Xcode pour un peu 225 00:10:48,570 --> 00:10:52,420 et de regarder le langage lui-même, rapide. 226 00:10:52,420 --> 00:10:56,370 >> Donc, avec rapide, ce était en la conception et le développement 227 00:10:56,370 --> 00:10:58,645 chez Apple pendant environ quatre année à ma compréhension. 228 00:10:58,645 --> 00:11:01,270 Et il ya un couple de fonctionnalités à ce sujet qui sont vraiment bien. 229 00:11:01,270 --> 00:11:03,910 Tout d'abord, il est compilé la langue, tout comme C. 230 00:11:03,910 --> 00:11:06,120 Donc, vous devez d'abord compiler et puis exécutez-le 231 00:11:06,120 --> 00:11:09,580 Avant de pouvoir exécuter le code qui en résulte. 232 00:11:09,580 --> 00:11:14,250 Mais il est, contrairement à C, un outil interactif invite que vous pouvez réellement fonctionner 233 00:11:14,250 --> 00:11:16,680 et taper des commandes arbitraires en. 234 00:11:16,680 --> 00:11:20,280 Et très bien comme une console JavaScript que vous connaissez peut-être maintenant, 235 00:11:20,280 --> 00:11:24,506 il sera en fait ceux évaluer commandes et vous fournir la sortie. 236 00:11:24,506 --> 00:11:26,380 Et ils ont même pris que à l'étape suivante 237 00:11:26,380 --> 00:11:29,100 et ils ont créé quelque chose appelés terrains de jeux dans Xcode 238 00:11:29,100 --> 00:11:31,720 qui vous permettra de travailler visuellement avec code. 239 00:11:31,720 --> 00:11:34,910 Et nous allons réellement voir quelques exemples cela dans un tout petit peu. 240 00:11:34,910 --> 00:11:41,680 Il est basé sur C. C est sous-jacente , parce que tous les compilateurs 241 00:11:41,680 --> 00:11:46,820 créer un code de C et créer le code de l'objet de celle-ci. 242 00:11:46,820 --> 00:11:49,240 Mais en réalité il part relativement peu de syntaxe. 243 00:11:49,240 --> 00:11:50,721 Il se penchera assez différente. 244 00:11:50,721 --> 00:11:51,970 Il y aura quelques similitudes. 245 00:11:51,970 --> 00:11:54,140 Mais il va y avoir des un bon nombre de différences 246 00:11:54,140 --> 00:11:57,200 par rapport à, disons, JavaScript ou PHP. 247 00:11:57,200 --> 00:11:59,070 Et nous signalerons dans un instant. 248 00:11:59,070 --> 00:12:01,420 >> Maintenant une des choses les plus importantes À propos de SWIFT ce est gentil 249 00:12:01,420 --> 00:12:05,650 ce est que, surtout par rapport à C, il est destiné à être en sécurité. 250 00:12:05,650 --> 00:12:08,100 Tout en elle est destinée à être très fortement typé dans. 251 00:12:08,100 --> 00:12:10,780 En fait, il est presque gênant au début, lors de la première 252 00:12:10,780 --> 00:12:15,610 commencer à travailler avec SWIFT, à quel autant il applique types partout. 253 00:12:15,610 --> 00:12:17,860 Tout ce qui est une chaîne doit rester une chaîne. 254 00:12:17,860 --> 00:12:22,100 Il est très difficile de trier de converti ou contraindre dans une autre forme. 255 00:12:22,100 --> 00:12:23,800 >> Et encore une fois, nous montrons des exemples. 256 00:12:23,800 --> 00:12:26,830 Mais finalement réaliser que cela est censé vous protéger, 257 00:12:26,830 --> 00:12:32,010 et par vous je veux dire votre code, à partir de se écraser en quelque sorte horrible quand 258 00:12:32,010 --> 00:12:34,330 vous avez une sorte de Type incompatibles. 259 00:12:34,330 --> 00:12:36,040 Et encore, travailler avec elle. 260 00:12:36,040 --> 00:12:40,210 Parce que ce sera frustrant au début que vous essayez de comprendre pourquoi exactement 261 00:12:40,210 --> 00:12:43,070 vous obtenez cette inhabituelle traitement des erreurs types. 262 00:12:43,070 --> 00:12:45,350 Mais il en vaut la peine à la fin. 263 00:12:45,350 --> 00:12:47,267 >> Il ne traite avec automatique gestion de la mémoire, 264 00:12:47,267 --> 00:12:49,100 donc ne vous faire avoir à traiter avec les choses 265 00:12:49,100 --> 00:12:51,400 comme malloc et free et tout de ces sortes de choses. 266 00:12:51,400 --> 00:12:53,066 Et il est également conçu pour des généralités. 267 00:12:53,066 --> 00:12:58,360 Ainsi, alors que nous pouvons utiliser un Xcode à créer des applications iOS et les applications Mac, 268 00:12:58,360 --> 00:13:00,380 nous pouvons aussi simplement l'utiliser comme un langage de script. 269 00:13:00,380 --> 00:13:03,660 Et afin que nous puissions l'utiliser tri de la place de ou à la place PHP 270 00:13:03,660 --> 00:13:07,800 de Python à fait analyser et de traiter rapidement 271 00:13:07,800 --> 00:13:09,800 certaines données que nous avons sur notre ordinateur. 272 00:13:09,800 --> 00:13:13,290 >> Il dispose d'une grande variété de moderne caractéristiques, optionnels, mutabilité, 273 00:13:13,290 --> 00:13:17,900 génériques, les fermetures, et beaucoup de ce choses que vous pouvez ou ne pouvez pas reconnaître. 274 00:13:17,900 --> 00:13:22,810 Et ce est juste une sorte de malheureux une partie de la langue que certains d'entre eux 275 00:13:22,810 --> 00:13:26,700 sorte d'éléments modernes, futuristes sont contenus dans les éléments sont 276 00:13:26,700 --> 00:13:34,520 si profondément enracinée que je ai effectivement volonté avoir à vous apprendre CS50.5 un peu. 277 00:13:34,520 --> 00:13:37,305 >> Nous devons apprendre un peu plus à propos de certaines des caractéristiques afin 278 00:13:37,305 --> 00:13:40,180 pour vraiment comprendre ce qui se passe suite et ainsi que vous pouvez regarder le code 279 00:13:40,180 --> 00:13:42,450 et ne pas se sentir totalement perdu. 280 00:13:42,450 --> 00:13:44,820 Et vous verrez ce que je veux dire par ce en seulement une minute. 281 00:13:44,820 --> 00:13:47,830 OK, donc let's-- assez de cette genre de choses théorique. 282 00:13:47,830 --> 00:13:52,450 Disons effectivement regardons notre tout premier programme rapide. 283 00:13:52,450 --> 00:13:53,590 Ce est une ligne de code. 284 00:13:53,590 --> 00:13:57,690 Ligne 14 ici, il dit l impression n bonjour CS50. 285 00:13:57,690 --> 00:14:01,160 >> Il ya donc un certain nombre de choses qui est très différente sur ce rapport 286 00:14:01,160 --> 00:14:04,140 à des choses que vous pourriez être utilisé à partir de C, par exemple. 287 00:14:04,140 --> 00:14:08,390 L'un d'eux est qu'il n'y a pas intmain, il n'y a pas comprennent article, 288 00:14:08,390 --> 00:14:10,790 il ya rien de tout cela trucs supplémentaires. 289 00:14:10,790 --> 00:14:13,790 La comprennent, comme norme I / O, comme les bibliothèques 290 00:14:13,790 --> 00:14:16,580 fournir le fait que caractéristiques standard de la langue, 291 00:14:16,580 --> 00:14:19,180 sont automatiquement inclus en tant partie de la bibliothèque standard de SWIFT 292 00:14:19,180 --> 00:14:20,680 et qui sont automatiquement importés. 293 00:14:20,680 --> 00:14:23,740 Vous ne avez pas à faire que l'importation manuellement. 294 00:14:23,740 --> 00:14:27,360 >> Intmain ne existe pas parce que le principal point d'entrée le code 295 00:14:27,360 --> 00:14:29,470 est en fait à la début du code. 296 00:14:29,470 --> 00:14:32,000 Donc, ne importe quel code que vous avez à partir du début 297 00:14:32,000 --> 00:14:34,940 seront effectivement exécutés au début. 298 00:14:34,940 --> 00:14:36,520 Donc, ce qui simplifie grandement vraiment. 299 00:14:36,520 --> 00:14:38,470 Notez aussi qu'il n'y a aucune virgule. 300 00:14:38,470 --> 00:14:41,040 Il n'y a pas des points-virgules dans cette langue. 301 00:14:41,040 --> 00:14:43,261 Vous mettez une déclaration sur une ligne individuelle 302 00:14:43,261 --> 00:14:45,510 puis la ligne suivante représente l'autre déclaration. 303 00:14:45,510 --> 00:14:47,420 Si vous voulez mettre mulitiple déclarations en ligne, 304 00:14:47,420 --> 00:14:49,086 alors vous devez séparer par des points-virgules. 305 00:14:49,086 --> 00:14:50,940 Mais la plupart du temps, pour de bon style, nous sommes 306 00:14:50,940 --> 00:14:56,530 jamais aller voir des points-virgules pour les fins des états de séparation 307 00:14:56,530 --> 00:14:58,420 à Swift. 308 00:14:58,420 --> 00:14:59,820 Alors, comment cela fonctionne? 309 00:14:59,820 --> 00:15:04,080 Eh bien très bien comme nous C en fait avoir pour compiler ce. 310 00:15:04,080 --> 00:15:10,640 Et afin que nous puissions le faire en utilisant c rapide et puis 1.swift. 311 00:15:10,640 --> 00:15:13,850 Et puis après quelques Cela va compiler minutes 312 00:15:13,850 --> 00:15:16,340 et puis je peux courir une article. 313 00:15:16,340 --> 00:15:19,691 Et qu'il va juste dire "Bonjour CS50." 314 00:15:19,691 --> 00:15:20,690 Impressionnant, alors là nous allons. 315 00:15:20,690 --> 00:15:22,273 Il est notre premier programme bonjour de monde. 316 00:15:22,273 --> 00:15:24,790 Passons au numéro deux. 317 00:15:24,790 --> 00:15:30,450 >> Or, dans this-- cela a changé légèrement, parce que normalement vous 318 00:15:30,450 --> 00:15:34,720 do-- en fait toujours que vous avez à compiler une application rapide avant 319 00:15:34,720 --> 00:15:37,180 fait fonctionner une it-- des grandes caractéristiques 320 00:15:37,180 --> 00:15:40,230 que je ai fait allusion étais avant cette SWIFT peut effectivement être utilisé dans une sorte 321 00:15:40,230 --> 00:15:43,390 d'un mode de pseudo-interprétation, y est en fait comme un interprète. 322 00:15:43,390 --> 00:15:46,690 Mais qu'est-ce que cela va faire est là est, en fait, une application rapide 323 00:15:46,690 --> 00:15:47,520 que vous pouvez exécuter. 324 00:15:47,520 --> 00:15:51,050 >> Ainsi, par exemple si vous tapez simplement rapide ici, ce qui va arriver 325 00:15:51,050 --> 00:15:52,330 ce est que vous obtiendrez une invite. 326 00:15:52,330 --> 00:15:59,040 Et vous pouvez taper votre rapide code, imprimer bonjour, et l'exécuter. 327 00:15:59,040 --> 00:16:01,867 Et il sera effectivement print-- ainsi, il ne se imprime pas dans ce cas 328 00:16:01,867 --> 00:16:04,450 parce qu'il imprime à centré out, ce qui ne est pas visible ici. 329 00:16:04,450 --> 00:16:06,660 Mais il est en fait en mesure de fonctionner. 330 00:16:06,660 --> 00:16:09,580 Et dans ce cas, je suis juste aller à l'utiliser comme un script. 331 00:16:09,580 --> 00:16:11,259 Et je peux effectivement exécuter ce code là. 332 00:16:11,259 --> 00:16:13,800 Ainsi, la manière que je dirige effectivement il sera légèrement différente, 333 00:16:13,800 --> 00:16:15,710 mais vous verrez que dans un instant. 334 00:16:15,710 --> 00:16:18,890 Maintenant, dans ce cas, ce que nous allons à faire est de définir d'abord une variable. 335 00:16:18,890 --> 00:16:22,160 Donc, ce est la façon dont nous définissons une variable dans rapide, 336 00:16:22,160 --> 00:16:25,900 ce est que nous utilisons le mot-clé let, suivi par le nom de la variable, 337 00:16:25,900 --> 00:16:29,280 puis nous fournissons un certain initialisation des données éventuellement. 338 00:16:29,280 --> 00:16:34,660 Donc ce cas, nous allons définir une constante appelée nom, 339 00:16:34,660 --> 00:16:37,775 et nous allons utiliser que la sortie de notre ligne d'impression 340 00:16:37,775 --> 00:16:39,590 tout en bas, bonjour nom. 341 00:16:39,590 --> 00:16:43,260 >> Maintenant, remarquez que, plutôt que d'utiliser% s, nous pouvons encapsuler le nom de cette 342 00:16:43,260 --> 00:16:49,960 variable / () et pouvoir concaténer dans le contenu de ce 343 00:16:49,960 --> 00:16:51,790 chaîne dans cette chaîne. 344 00:16:51,790 --> 00:16:56,510 Maintenant contrairement au C, est une chaîne réelle type réel à Swift. 345 00:16:56,510 --> 00:16:59,240 Et il se trouve à côté ints et aux côtés 346 00:16:59,240 --> 00:17:02,220 double très facilement et naturellement rapport 347 00:17:02,220 --> 00:17:05,450 à une partie de l'autre langues que nous avons vu. 348 00:17:05,450 --> 00:17:07,980 Donc, ce serait effectivement fonctionner tout comme on peut s'y attendre. 349 00:17:07,980 --> 00:17:10,540 >> Je peux courir 2.swift. 350 00:17:10,540 --> 00:17:14,390 Et nous voyons que mon nom est effectivement épissé dans «Bonjour Dan." 351 00:17:14,390 --> 00:17:16,050 OK, impressionnant. 352 00:17:16,050 --> 00:17:17,485 Passant à numéro trois. 353 00:17:17,485 --> 00:17:19,359 Maintenant, ce était un peu d'un mensonge que je 354 00:17:19,359 --> 00:17:23,369 dit que la façon dont nous déclarons les variables était d'utiliser le mot-clé let. 355 00:17:23,369 --> 00:17:27,640 Autant de fois que vous le pouvez-vous faire vouloir utiliser laisser, parce ce que cela fait 356 00:17:27,640 --> 00:17:29,280 est-il définit une constante. 357 00:17:29,280 --> 00:17:33,010 Et que dit rapidement qu'il peut optimiser la vitesse de votre application 358 00:17:33,010 --> 00:17:36,230 parce qu'il sait que ce variable est ne va pas changer. 359 00:17:36,230 --> 00:17:38,760 >> Donc évaluer soigneusement quand vous allez utiliser 360 00:17:38,760 --> 00:17:41,382 une variable pour le fins de le changer. 361 00:17:41,382 --> 00:17:43,340 Et quand vous allez créer une variable simplement 362 00:17:43,340 --> 00:17:47,010 de tenir certaines données et ce est pas réellement va changer. 363 00:17:47,010 --> 00:17:50,150 Donc, cette notion d'immuabilité, ce ne est pas fait va changer, 364 00:17:50,150 --> 00:17:53,740 est importante alors même que loin que la définition de variables. 365 00:17:53,740 --> 00:17:56,870 Donc, ici, nous avons défini un nom, laissez nom, et dans ce cas 366 00:17:56,870 --> 00:18:02,120 Ce est une constante, ce est de type chaîne, et il est égal à Dan. 367 00:18:02,120 --> 00:18:05,580 >> Ainsi, alors que dans le précédant version, il infers-- et par «il» 368 00:18:05,580 --> 00:18:08,220 Je veux dire rapide swift-- déduit le type de données 369 00:18:08,220 --> 00:18:10,850 que nous sommes entrés dans la variable. 370 00:18:10,850 --> 00:18:12,930 Dans ce cas, nous pouvons être explicite. 371 00:18:12,930 --> 00:18:17,590 Alors laissez alors le nom de cette variable est le nom, puis un colon. 372 00:18:17,590 --> 00:18:21,350 Et après les deux points-nous spécifier le type de données. 373 00:18:21,350 --> 00:18:24,694 Donc, ce ne est plus int nom ou nom de chaîne ou quelque chose comme ça. 374 00:18:24,694 --> 00:18:26,860 Mais au lieu laissez étiquette, nous sommes définir si oui ou non 375 00:18:26,860 --> 00:18:29,090 il est constant ou variable, suivi du nom, 376 00:18:29,090 --> 00:18:31,870 éventuellement suivie de la signalétique. 377 00:18:31,870 --> 00:18:34,730 >> Donc dans ce cas nous définissons ce nom est une chaîne. 378 00:18:34,730 --> 00:18:35,790 Nous disons, ce est Dan. 379 00:18:35,790 --> 00:18:39,270 Et maintenant, je ai une autre variable, dans ce cas il est appelé étiquette. 380 00:18:39,270 --> 00:18:42,090 Mais remarquez que ce est préfixé avec le mot-clé var. 381 00:18:42,090 --> 00:18:44,430 Les moyens var mot-clé que cette variable peut 382 00:18:44,430 --> 00:18:48,720 être changé à un point plus tard dans temps, quelque part dans le code 383 00:18:48,720 --> 00:18:52,480 pouvons-nous réellement changer et il ne nous donnera aucune erreur particulière. 384 00:18:52,480 --> 00:18:56,760 >> Nous pouvons faire concaténation norme opérateur ici en utilisant le symbole plus 385 00:18:56,760 --> 00:19:00,130 pour réellement ajouter notre nom dans cette chaîne. 386 00:19:00,130 --> 00:19:02,921 Et puis nous pouvons imprimer comme nous avons vu il ya quelques instants. 387 00:19:02,921 --> 00:19:04,920 Maintenant, disons que vous vouloir créer une variable 388 00:19:04,920 --> 00:19:06,586 mais vous ne voulez pas initialiser encore. 389 00:19:06,586 --> 00:19:08,590 Vous ne voulez pas encore mettre toutes les données qu'il contient. 390 00:19:08,590 --> 00:19:11,760 Eh bien vous avez à dire rapidement ce que le type de données 391 00:19:11,760 --> 00:19:16,430 va être avant de pouvoir effectivement définir correctement. 392 00:19:16,430 --> 00:19:20,360 >> Donc dans ce cas, quand nous avons défini une variable appelée année nous devons être 393 00:19:20,360 --> 00:19:24,450 explicite sur son type, parce il ne peut pas déduire simplement à la recherche 394 00:19:24,450 --> 00:19:27,300 au données initialisées que vous lui fournissez. 395 00:19:27,300 --> 00:19:30,050 Il nous donnera une erreur si vous tapez simplement grade var, par exemple, 396 00:19:30,050 --> 00:19:31,830 car il a donc aucun type. 397 00:19:31,830 --> 00:19:33,353 Donc année = 100. 398 00:19:33,353 --> 00:19:35,790 Alors que 100 est un nombre entier, il se adapte très bien dans cette. 399 00:19:35,790 --> 00:19:36,998 Il continuera à fonctionner. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Nous pouvons voir comment nous peut concaténer ceci dans. 402 00:19:43,022 --> 00:19:44,730 Maintenant, vous pourriez être tentés, si vous avez réellement 403 00:19:44,730 --> 00:19:48,610 voulu concaténer la année dans une autre chaîne de texte, 404 00:19:48,610 --> 00:19:52,560 dans une autre chaîne, que vous feriez tout utiliser le même opérateur de concaténation. 405 00:19:52,560 --> 00:19:54,630 Et ce serait normalement être vrai. 406 00:19:54,630 --> 00:20:00,540 Mais ne sera pas rapide vous permettra de implicitement changer le type de données. 407 00:20:00,540 --> 00:20:03,440 Donc dans ce cas, ce ligne 25, va échouer 408 00:20:03,440 --> 00:20:06,650 parce qualité est une entier et non une chaîne. 409 00:20:06,650 --> 00:20:08,760 Et donc il ya une inadéquation ensemble de types. 410 00:20:08,760 --> 00:20:11,780 Donc, vous devez être explicite lorsque vous souhaitez modifier ces données, 411 00:20:11,780 --> 00:20:14,080 quand vous voulez pour contraindre ce données en un type différent 412 00:20:14,080 --> 00:20:17,250 et dire, OK, je veux prendre ce niveau, ce qui est un nombre entier, 413 00:20:17,250 --> 00:20:19,050 et le convertir en une chaîne. 414 00:20:19,050 --> 00:20:23,970 >> Donc, je prends Chaîne de capital tous les types, vous remarquerez, sont capitalisés, 415 00:20:23,970 --> 00:20:26,280 Int, Double, String, ainsi de suite et ainsi de suite. 416 00:20:26,280 --> 00:20:28,930 Tout d'entre eux sont capitalisés juste pour rendre les choses plus faciles. 417 00:20:28,930 --> 00:20:32,240 Et nous dirons capitaliser Chaîne passer dans ce grade. 418 00:20:32,240 --> 00:20:35,020 Et il va créer un ficelle de cette entier. 419 00:20:35,020 --> 00:20:37,970 Et puis nous pouvons concaténer les deux très bien. 420 00:20:37,970 --> 00:20:40,500 Des questions sur ce genre de choses jusqu'à présent? 421 00:20:40,500 --> 00:20:43,770 Très bien, nous allons charrue grâce à numéroter quatre. 422 00:20:43,770 --> 00:20:47,870 >> Maintenant, nous allons parler un peu plus avancée structures, comme les tableaux et les boucles. 423 00:20:47,870 --> 00:20:54,920 Et contrairement à C, les tableaux à Swift ne sont pas représentés par des pointeurs. 424 00:20:54,920 --> 00:20:58,730 Pointeurs dans rapide, même si elles existent, appelé 425 00:20:58,730 --> 00:21:02,840 comme des pointeurs dangereuses ou un certain type semblable comme ceci, 426 00:21:02,840 --> 00:21:04,950 ils ne sont pas exposés à vous normalement. 427 00:21:04,950 --> 00:21:07,300 Ainsi, il devient très difficile pour vous de manipuler 428 00:21:07,300 --> 00:21:10,020 la mémoire directement de votre ordinateur. 429 00:21:10,020 --> 00:21:11,670 >> Donc, les tableaux sont juste un type de données. 430 00:21:11,670 --> 00:21:16,830 Et ils sont référencés en utilisant ce genre la notation de maintenant la norme de crochet 431 00:21:16,830 --> 00:21:18,280 que vous avez vu avant. 432 00:21:18,280 --> 00:21:21,130 Mais quand vous voulez réellement définir un type d'une variable 433 00:21:21,130 --> 00:21:24,330 comme un tableau de certains type particulier, alors vous 434 00:21:24,330 --> 00:21:27,150 mettre ce type entre crochets. 435 00:21:27,150 --> 00:21:30,260 Donc ce que je dis ici est que Je crée une variable appelée 436 00:21:30,260 --> 00:21:33,930 grades de type int tableau. 437 00:21:33,930 --> 00:21:37,380 Et je suis la mise que l'égalité dans une certaine données initialisées, qui dans ce cas 438 00:21:37,380 --> 00:21:42,960 est 100, 0, 90, 85, qui est juste un collection de qualités arbitraires ici. 439 00:21:42,960 --> 00:21:46,480 Or, dans ce cas je le pouvais, rappelez-vous, supprimer le type, 440 00:21:46,480 --> 00:21:49,580 et il serait en mesure de déduire qu'il sur la base des données initialisées. 441 00:21:49,580 --> 00:21:51,990 Mais si je ai enlevé cela et Je avais besoin de mettre plus tard, 442 00:21:51,990 --> 00:21:56,840 alors je aurais à assurer que je ai le type là. 443 00:21:56,840 --> 00:21:58,750 Très bien, passons le long. 444 00:21:58,750 --> 00:22:03,010 Donc, nous can-- tableaux nous fournir une variété 445 00:22:03,010 --> 00:22:07,130 des méthodes à travers cette notation par point vous êtes probablement au désormais familier. 446 00:22:07,130 --> 00:22:10,360 Donc grades.count, par exemple, nous dit précisément le nombre 447 00:22:10,360 --> 00:22:13,680 des éléments qui sont contenues dans ce tableau. 448 00:22:13,680 --> 00:22:17,260 >> Si je veux ajouter additional-- Maintenant, remarquez que ce est un var 449 00:22:17,260 --> 00:22:20,140 pas-- et ce est une variable et un pas constant, ce qui 450 00:22:20,140 --> 00:22:24,410 signifie que je peux changer le contenu de ce tableau, je peux y ajouter des objets. 451 00:22:24,410 --> 00:22:28,870 Mais je ne peux pas juste dire grades et ensuite entre crochets 452 00:22:28,870 --> 00:22:33,280 quatre, parce que ce sera un sur erreur de limites dans ce cas. 453 00:22:33,280 --> 00:22:36,190 Si je veux vraiment changer la taille de ce tableau, 454 00:22:36,190 --> 00:22:41,140 Je dois utiliser la méthode dot Ajout pour ajouter quelque chose à la fin de celui-ci. 455 00:22:41,140 --> 00:22:46,900 Je peux cependant, le changement indices individuels. 456 00:22:46,900 --> 00:22:48,920 >> Donc je pourrais utiliser grades et puis parenthèses carrés 457 00:22:48,920 --> 00:22:52,480 zéro pour manipuler ce premier indice et ainsi de suite, comme vous le feriez normalement se attendre. 458 00:22:52,480 --> 00:22:56,530 Et je peux faire la même chose pour réellement recevoir les données en provenance de ce même. 459 00:22:56,530 --> 00:23:00,420 Maintenant, il ya aussi une sorte de méthode de fantaisie de le faire, ainsi que les grades égaux 460 00:23:00,420 --> 00:23:02,525 puis un autre indice, qui append-- 461 00:23:02,525 --> 00:23:04,400 ou non une autre index-- mais une autre liste qui 462 00:23:04,400 --> 00:23:07,340 ajoutera cette liste à l'arrière de notes. 463 00:23:07,340 --> 00:23:09,780 Et les notes seront alors contenir tout ça. 464 00:23:09,780 --> 00:23:13,850 Mais ce est une sorte de chose supplémentaire que je viens de vous montrer pour le plaisir. 465 00:23:13,850 --> 00:23:14,910 >> Maintenant, il ya une boucle for. 466 00:23:14,910 --> 00:23:18,970 Et ce est le début de l'endroit où les choses commencent à changer un peu. 467 00:23:18,970 --> 00:23:22,920 Remarquez comment cette boucle est différent de boucles pour C. 468 00:23:22,920 --> 00:23:26,470 Maintenant, je vais noter que pour les boucles à Swift peut 469 00:23:26,470 --> 00:23:30,650 être fait pour ressembler à des boucles en C, mais il ya beaucoup de constructions plus utiles 470 00:23:30,650 --> 00:23:37,840 qui éliminent essentiellement la nécessité avoir pour var i est égal à 0 virgule i 471 00:23:37,840 --> 00:23:40,340 est inférieur à une certaine longueur, ainsi de suite et ainsi de suite, non? 472 00:23:40,340 --> 00:23:42,940 Et cette construction est juste l'un d'eux. 473 00:23:42,940 --> 00:23:49,030 >> Pour l'index, l'indice est nouveau variables, dans ce cas, dans la gamme. 474 00:23:49,030 --> 00:23:52,730 Et ce que je dis, ce est qu'il ya une plage de 0 tout le chemin jusqu'à 475 00:23:52,730 --> 00:23:55,870 mais ne comprenant pas grades.count. 476 00:23:55,870 --> 00:23:58,470 Donc, ce point point de moins que le signe représente 477 00:23:58,470 --> 00:24:05,040 une plage de valeurs à partir de zéro tout le chemin jusqu'à grades.count moins 1. 478 00:24:05,040 --> 00:24:07,070 Il est séparé opérateur qui existe, 479 00:24:07,070 --> 00:24:13,320 qui est dot dot dot, qui serait dire que je veux la fourchette de zéro 480 00:24:13,320 --> 00:24:16,310 aux grades compter inclusivement. 481 00:24:16,310 --> 00:24:19,130 >> Mais dans ce cas, parce que ces les tableaux sont l'indice zéro, nous avons bien sûr 482 00:24:19,130 --> 00:24:23,290 ne veulent pas aller à la nombre maximum de notes. 483 00:24:23,290 --> 00:24:26,390 Je peux résumer les qualités, comme vous le feriez se attendre, et la sortie tous ces trucs. 484 00:24:26,390 --> 00:24:29,620 OK, passer. 485 00:24:29,620 --> 00:24:32,270 Maintenant parlons de fonctions. 486 00:24:32,270 --> 00:24:35,465 Afin de définir une fonction vous utilisez le mot-clé de funk. 487 00:24:35,465 --> 00:24:38,090 Et encore, à Swift vous devez être très prudent avec les types. 488 00:24:38,090 --> 00:24:41,530 Vous lui fournissez Paramètres en définissant, par exemple, 489 00:24:41,530 --> 00:24:45,440 le nom du paramètre et puis en colin, le type de données 490 00:24:45,440 --> 00:24:47,690 que vous attendez à ce que paramètre à accepter. 491 00:24:47,690 --> 00:24:50,700 >> Donc dans ce cas nous avons une fonction appelée comptage de qualité d'impression. 492 00:24:50,700 --> 00:24:54,630 Il accepte une variable appelée carnet de notes, ou plutôt un paramètre appelé carnet de notes. 493 00:24:54,630 --> 00:24:59,267 Et nous nous attendons à ce que gradebook être un tableau d'entiers. 494 00:24:59,267 --> 00:25:01,350 Si ce carnet de notes est vide, nous imprimons une chose. 495 00:25:01,350 --> 00:25:06,090 Sinon, nous allons imprimer le nombre de nuances que cela a fait. 496 00:25:06,090 --> 00:25:09,470 >> Maintenant, si nous voulons revenir une certaine valeur, alors la voie 497 00:25:09,470 --> 00:25:14,595 que nous modifions cette définition est d'utiliser effectivement cette flèche mot-clé, 498 00:25:14,595 --> 00:25:16,870 ou d'utiliser cette flèche signifiant. 499 00:25:16,870 --> 00:25:19,440 Donc, nous allons définir ici une fonction appelée moyenne. 500 00:25:19,440 --> 00:25:21,940 Nous allons accepter une liste de numéros. 501 00:25:21,940 --> 00:25:25,430 Et nous allons revenir un double, qui, espérons- 502 00:25:25,430 --> 00:25:31,270 à la moyenne de ce tableau. 503 00:25:31,270 --> 00:25:34,570 Et pour ce faire, afin calculer réellement cette moyenne, 504 00:25:34,570 --> 00:25:38,651 nous allons prendre une somme et nous allons de Bien sûr résumer tous les objets 505 00:25:38,651 --> 00:25:39,400 dans ce tableau. 506 00:25:39,400 --> 00:25:41,480 >> Notez qu'il ya une nouvelle style de boucle ici. 507 00:25:41,480 --> 00:25:45,450 Nous ne avons pas à être explicite sur itération sur chaque élément, 508 00:25:45,450 --> 00:25:48,280 mais nous pouvons dire à la place de grade et carnet de notes, sens 509 00:25:48,280 --> 00:25:50,930 que pour chaque simple élément que nous avons dans ce domaine, 510 00:25:50,930 --> 00:25:53,482 fournir cet élément dans ce variable appelée grade. 511 00:25:53,482 --> 00:25:54,940 Et je veux faire quelque chose avec elle. 512 00:25:54,940 --> 00:26:00,350 Donc, je vais résumer toutes ces données et effectivement retourner la double division. 513 00:26:00,350 --> 00:26:04,436 >> Maintenant, remarquez ici encore il ya la concept de division entière à Swift. 514 00:26:04,436 --> 00:26:06,810 Si vous voulez doubler division parce que vous voulez décimales, 515 00:26:06,810 --> 00:26:09,460 alors vous devez être explicite, pas seulement sur un côté, 516 00:26:09,460 --> 00:26:14,030 car il ne va pas vous permettre pour contraindre les données de chaque côté de cela, 517 00:26:14,030 --> 00:26:17,030 vous avez à fait sûr les deux côtés dans doubles 518 00:26:17,030 --> 00:26:19,440 de sorte que vous êtes très explicite à se assurer 519 00:26:19,440 --> 00:26:23,370 que vous faites à double division. 520 00:26:23,370 --> 00:26:26,150 >> Passons. 521 00:26:26,150 --> 00:26:31,150 Donc, si je veux vraiment accept-- Donc, dans cet exemple particulier, 522 00:26:31,150 --> 00:26:34,260 ce est encore une commande application de ligne. 523 00:26:34,260 --> 00:26:37,920 Et nous commençons à voir quelques-uns des les limites de la jeune langue 524 00:26:37,920 --> 00:26:41,850 en ce que nous pouvons bien accéder aux arguments en utilisant 525 00:26:41,850 --> 00:26:44,940 ce process.arguments, ce est toujours pas nécessairement le plus propre 526 00:26:44,940 --> 00:26:46,200 chose que nous ayons jamais vu. 527 00:26:46,200 --> 00:26:49,142 Mais, fondamentalement, je vous encourage en quelque sorte de regarder ce code 528 00:26:49,142 --> 00:26:51,100 et essayer de comprendre ce qui se passe exactement. 529 00:26:51,100 --> 00:26:55,030 >> Essentiellement, ce qui se passe, ce est que nous prenons une liste d'arguments 530 00:26:55,030 --> 00:26:57,610 et ont été les contraindre à entiers, puis nous sommes 531 00:26:57,610 --> 00:27:03,620 aller à l'utiliser comme un moyen d'imprimer la moyenne de toutes nos qualités. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Passons. 534 00:27:07,350 --> 00:27:11,190 Maintenant, il ya un autre type de data-- un autre type de données plutôt que de tableaux 535 00:27:11,190 --> 00:27:14,940 appelés dictionnaires, qui sont très semblable aux différentes tables ou de cartes de hachage 536 00:27:14,940 --> 00:27:18,560 et sont similaires aussi Tableaux associatifs de PHP. 537 00:27:18,560 --> 00:27:20,770 Ils ont donc la notion des clés et des valeurs. 538 00:27:20,770 --> 00:27:23,780 >> Et ils ont également défini avec cette notation de crochet, 539 00:27:23,780 --> 00:27:26,750 mais la différence est que les dictionnaires ont 540 00:27:26,750 --> 00:27:29,370 l'intérieur du support carré, un colon. 541 00:27:29,370 --> 00:27:33,850 Et le côlon sépare les données saisissez qui est la clé et la valeur. 542 00:27:33,850 --> 00:27:38,540 Donc dans ce cas, je vais créer un dictionnaire d'accepter certaines qualités. 543 00:27:38,540 --> 00:27:44,200 Et il va être de type chaîne: int, 544 00:27:44,200 --> 00:27:46,940 ce qui signifie que la totalité de la clés vont être des chaînes, 545 00:27:46,940 --> 00:27:53,080 et toutes les valeurs de ceux clés vont être entiers. 546 00:27:53,080 --> 00:27:55,780 >> Ce que cela signifie, ce est que je peux ensuite référencer les données spécifiques 547 00:27:55,780 --> 00:28:00,490 que je veux utiliser ces touches plutôt à l'aide d'indices numériques comme je 548 00:28:00,490 --> 00:28:04,350 aurait pour un tableau standard. 549 00:28:04,350 --> 00:28:06,470 Voyons maintenant, il ya une chose importante 550 00:28:06,470 --> 00:28:10,790 que je tiens également à mentionner au sujet de cette séquence de code particulier. 551 00:28:10,790 --> 00:28:12,910 Et ce est qu'il ya un autre type de données, 552 00:28:12,910 --> 00:28:15,580 ou plutôt il ya cette idée de données qui est 553 00:28:15,580 --> 00:28:18,340 contenue dans Swift appelé optionnels. 554 00:28:18,340 --> 00:28:21,270 >> Et ce est signifie optionnels qu'il reconnaît le fait 555 00:28:21,270 --> 00:28:27,500 que, parfois, vous ne allez pas obtenir les données que vous attendez réellement. 556 00:28:27,500 --> 00:28:31,400 Et donc ce que je veux dire par là, nous allons est-- jetez un oeil à cette séquence code 557 00:28:31,400 --> 00:28:38,910 qui parcourt sur toute la arguments qui ont été adoptées à ce code 558 00:28:38,910 --> 00:28:43,460 et tente de les convertir, essais à diviser en une série de cordes, 559 00:28:43,460 --> 00:28:47,310 car il accepte une très type particulier d'argument. 560 00:28:47,310 --> 00:28:51,530 Et puis, il va essayer de contraindre les chaînes qui représentent des nombres 561 00:28:51,530 --> 00:28:55,460 en nombres entiers qui sont les grades, que je peux alors calculer. 562 00:28:55,460 --> 00:28:58,230 >> Donc, fondamentalement, je vais utiliser cette fonction de scission qui 563 00:28:58,230 --> 00:29:00,080 existe dans la Bibliothèque standard Swift. 564 00:29:00,080 --> 00:29:03,720 Je vais passer en elle la chaîne que je veux partager. 565 00:29:03,720 --> 00:29:06,980 Et puis dans l'utilisation de ce type de syntaxe génial, qui 566 00:29:06,980 --> 00:29:09,670 Je ne sais pas si nous allons arrivons à, mais peut-être, nous 567 00:29:09,670 --> 00:29:14,320 seront effectivement préciser le précise caractère que nous voulons couper à. 568 00:29:14,320 --> 00:29:16,030 Alors qu'est-ce que cela ressemble? 569 00:29:16,030 --> 00:29:18,740 Jetons un oeil à exécutant effectivement ce code. 570 00:29:18,740 --> 00:29:22,000 >> Ainsi, par exemple, disons que je ai un quiz et je ai eu 50 à ce sujet. 571 00:29:22,000 --> 00:29:23,960 Et je ai psets et Je ai eu une centaine à ce sujet. 572 00:29:23,960 --> 00:29:29,180 Et je got-- il ya un autre quizz et je ai eu un 40 sur ce point. 573 00:29:29,180 --> 00:29:33,520 Je ai frappé Entrez, et finalement ce qui va se passer, ce est que ce qu'il fait 574 00:29:33,520 --> 00:29:37,730 est la prise de ces paramètres, le fractionnement les cordes à ces deux points, 575 00:29:37,730 --> 00:29:41,390 reconnaissant qu'il ya deux éléments dans chacun, 576 00:29:41,390 --> 00:29:43,700 et ce est essentiellement garder la trace de chaque. 577 00:29:43,700 --> 00:29:49,226 >> Donc, je ai dans mon dictionnaire un quiz, dont le valeur est représentée par le nombre 50, 578 00:29:49,226 --> 00:29:54,290 Je ai un PSET qui a une valeur de 100, et un autre quiz qui a une valeur de 40. 579 00:29:54,290 --> 00:29:57,400 Puis, plus tard dans le code que je ai fait la moyenne de toutes ces valeurs 580 00:29:57,400 --> 00:30:01,160 et la liste de toutes les touches de ce dictionnaire spécifique. 581 00:30:01,160 --> 00:30:03,217 Mais ce est important de sorte que vous pouvez le constater 582 00:30:03,217 --> 00:30:06,050 ce qui se passe, ce est que ce que nous vouloir faire est de prendre cette chaîne 583 00:30:06,050 --> 00:30:11,450 et diviser à ce caractère, que nous pouvons faire à nouveau avec cette scission 584 00:30:11,450 --> 00:30:15,690 fonction en utilisant ce genre de syntaxe intéressante qui existe ici. 585 00:30:15,690 --> 00:30:17,880 >> Juste pour l'instant supposer que ce est OK. 586 00:30:17,880 --> 00:30:19,980 Nous allons examiner plus à ce en seulement un peu de temps. 587 00:30:19,980 --> 00:30:23,230 Mais maintenant il ya un intéressant aspect qui nous fait 588 00:30:23,230 --> 00:30:27,250 essayer de convertir cette chaîne en un entier. 589 00:30:27,250 --> 00:30:29,720 Mais dans d'autres langues ce qui pourrait arriver est 590 00:30:29,720 --> 00:30:33,440 que nous essaierions probablement de le faire et soit revenir 591 00:30:33,440 --> 00:30:36,185 une sorte de sentinelle comme valeur négative 592 00:30:36,185 --> 00:30:39,420 ou peut-être une valeur nulle ou quelque chose comme ça. 593 00:30:39,420 --> 00:30:41,070 Ou peut-être il serait tout simplement provoqué une erreur. 594 00:30:41,070 --> 00:30:42,820 Et nous aurions à puis prendre cette erreur 595 00:30:42,820 --> 00:30:44,820 puis essayer de faire quelque chose sur la base du fait 596 00:30:44,820 --> 00:30:48,280 que cette conversion à un nombre entier échoué. 597 00:30:48,280 --> 00:30:50,460 Ce est là que cette idée d'optionnels entre en jeu. 598 00:30:50,460 --> 00:30:56,120 Vous pouvez effectivement créer un type de données qui est un int interrogation, par exemple. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Cela signifie que cet entier est, en fait, en option. 601 00:31:01,910 --> 00:31:05,980 Et ce qui va arriver, ce est qu'il peut contenir un entier, ou il ne peut pas. 602 00:31:05,980 --> 00:31:10,650 Il peut, en effet, être cette autre idée, appelée entièrement nulle. 603 00:31:10,650 --> 00:31:14,900 Dans lequel cela signifie qu'il ya aucune valeur dans ce. 604 00:31:14,900 --> 00:31:16,810 Il ne est même pas zéro, il ya juste aucune valeur. 605 00:31:16,810 --> 00:31:18,790 Il n'y a absolument aucune valeur représentée. 606 00:31:18,790 --> 00:31:21,650 >> Et ce est ce que cette ligne 71 est fait. 607 00:31:21,650 --> 00:31:25,990 Est-ce que ce est dire que je essayer de définir une valeur, 608 00:31:25,990 --> 00:31:31,790 une variable appelée classe, égale à la conversion de cette chaîne en un int. 609 00:31:31,790 --> 00:31:34,010 Je ai donc pris cette chaîne, ces premiers éléments, 610 00:31:34,010 --> 00:31:37,680 ou plutôt la seconde composants, parce que ce 611 00:31:37,680 --> 00:31:40,770 est zéro indexés, de ce chaîne que je ai divisé. 612 00:31:40,770 --> 00:31:42,930 Et je veux convertir que pour un nombre entier. 613 00:31:42,930 --> 00:31:46,730 Mais il ne est pas toujours procéder normalement, imaginez parce 614 00:31:46,730 --> 00:31:50,710 ce qui arriverait si, plutôt que par type un certain nombre, je tape bien sûr, comme asdf. 615 00:31:50,710 --> 00:31:51,534 >> Il va à l'échec. 616 00:31:51,534 --> 00:31:54,200 Ce ne est pas fait va être capable de convertir en un nombre entier 617 00:31:54,200 --> 00:31:55,510 comme je m'y attendais. 618 00:31:55,510 --> 00:31:58,660 Ainsi, plutôt que le coup d'envoi une sorte d'erreur, 619 00:31:58,660 --> 00:32:01,210 nous avons cette idée d'une option. 620 00:32:01,210 --> 00:32:04,240 Et cela signifie que l'utilisation cette interrogation que je peux dire, 621 00:32:04,240 --> 00:32:09,100 OK, est-il possible que je peux prendre cela, converti en un int, 622 00:32:09,100 --> 00:32:12,630 et le mettre dans une variable, qui sera également un int. 623 00:32:12,630 --> 00:32:15,420 Si oui, alors que des moyens ce qui a réussi 624 00:32:15,420 --> 00:32:18,720 et cette première partie de le bloc peut continuer. 625 00:32:18,720 --> 00:32:21,040 >> Sinon, il a échoué. 626 00:32:21,040 --> 00:32:25,840 Il n'y a aucune valeur dans grade-- ou plutôt il n'y a pas valeur existante, 627 00:32:25,840 --> 00:32:30,220 et je ai fait pour essayer de gérer cette condition d'erreur. 628 00:32:30,220 --> 00:32:33,340 Vous allez voir ce Aide à la recherche tout le temps 629 00:32:33,340 --> 00:32:35,990 à Swift et exemple de code pour Swift. 630 00:32:35,990 --> 00:32:40,980 Et en fait, l'opérateur Nill, ce genre point d'interrogation, la partie des optionnels, 631 00:32:40,980 --> 00:32:45,057 va être probablement l'un des choses les plus difficiles 632 00:32:45,057 --> 00:32:47,640 en quelque sorte d'envelopper votre tête autour que vous travaillez effectivement avec elle. 633 00:32:47,640 --> 00:32:48,490 >> Il pourrait faire sens aujourd'hui. 634 00:32:48,490 --> 00:32:50,760 Et en fait, quand je étais l'écriture de code de l'échantillon pour cette, 635 00:32:50,760 --> 00:32:52,780 certainement je ai compris ce qui se passait, 636 00:32:52,780 --> 00:32:55,570 mais toujours m'a pris par la surprise de temps en temps 637 00:32:55,570 --> 00:32:58,370 quand je trouverais cela certaines données étaient effectivement 638 00:32:58,370 --> 00:33:04,024 une version nul, une version optionnelle des données que je me attendais. 639 00:33:04,024 --> 00:33:06,190 Il suffit donc de se rendre compte que si vous disposer d'une version en option 640 00:33:06,190 --> 00:33:09,360 vous devez décompresser que les données de cette boîte. 641 00:33:09,360 --> 00:33:15,870 >> Donc, ce est un peu comme si vous imaginer I-- avoir une boîte et il contient quelque chose. 642 00:33:15,870 --> 00:33:18,490 Et ce que vous devez faire est de poser la question, 643 00:33:18,490 --> 00:33:22,800 est-il possible que cette boîte fait contient les données que je suis à la recherche? 644 00:33:22,800 --> 00:33:28,180 Si oui, puis tirez sur les données et mettre dans cette variable existante. 645 00:33:28,180 --> 00:33:32,080 Si pas, alors je ai juste à ignorer le contenu de cette boîte 646 00:33:32,080 --> 00:33:34,310 complètement, car il contient littéralement rien. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Vous avez des questions à ce sujet? 649 00:33:40,400 --> 00:33:44,430 OK, nous allons sortir de cette genre de chose sur la base ligne de commande 650 00:33:44,430 --> 00:33:47,610 et commencer à regarder une partie de la technologie 651 00:33:47,610 --> 00:33:53,060 que Xcode fournit à nous sous la forme de terrains de jeux. 652 00:33:53,060 --> 00:33:56,669 Donc, il ya beaucoup de capacité à Swift ici. 653 00:33:56,669 --> 00:33:59,210 Et si vous ouvrez Xcode et il vous demande ce que vous voulez faire, 654 00:33:59,210 --> 00:34:01,340 vous pouvez ouvrir l'aire de jeux et juste jouer 655 00:34:01,340 --> 00:34:06,200 avec beaucoup de différentes structures et aspects de la langue 656 00:34:06,200 --> 00:34:11,800 avant même de commencer toucher le SDK iOS ou Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Donc ce cas, disons que je have-- Je ai un exemple relativement artificiel 658 00:34:15,670 --> 00:34:18,460 ici, mais garder avec moi que nous trions de travailler à travers cet exemple. 659 00:34:18,460 --> 00:34:22,639 Disons que nous devons faire beaucoup d'exposants d'une valeur fixe, 660 00:34:22,639 --> 00:34:26,397 comme nous savons que nous allons avoir besoin de faire beaucoup de pouvoirs carrés, par exemple. 661 00:34:26,397 --> 00:34:28,980 Donc, nous allons prendre une certaine valeur x, nous allons au carré, 662 00:34:28,980 --> 00:34:30,540 nous allons prendre une certaine valeur y et nous allons au carré. 663 00:34:30,540 --> 00:34:31,780 Ainsi de suite et ainsi de suite. 664 00:34:31,780 --> 00:34:35,549 >> Maintenant, nous pourrions en fait juste créer un puissance de 2 pour cette fonction, non? 665 00:34:35,549 --> 00:34:37,090 Nous aimerions donc créons une puissance de 2 fonction. 666 00:34:37,090 --> 00:34:38,600 Nous acceptons un double. 667 00:34:38,600 --> 00:34:41,489 Nous allons output-- ou nous allons retourner un type double. 668 00:34:41,489 --> 00:34:46,159 Nous allons prendre ce résultat puis deux fois 669 00:34:46,159 --> 00:34:52,040 ce que nous prenons effectivement les résultats, qui a été initialisé à la valeur de l'un, 670 00:34:52,040 --> 00:34:53,090 et le multiplier par x. 671 00:34:53,090 --> 00:34:56,540 Donc, en substance nous avons x fois x ici. 672 00:34:56,540 --> 00:35:01,860 >> Et alors je ai peut alors, comme nous pourrions attendre, prendre ce, pouvoir fonctionner de 2, 673 00:35:01,860 --> 00:35:03,680 fournir à elle certaines données, je aime 2.0. 674 00:35:03,680 --> 00:35:05,756 Et nous arrivons à voir les résultats ici 4.0. 675 00:35:05,756 --> 00:35:09,200 Exécutez puissance de 2 sur 3.2 et nous la chance de voir nos résultats, 10,24. 676 00:35:09,200 --> 00:35:10,840 Jusqu'ici tout va bien, non? 677 00:35:10,840 --> 00:35:12,070 Nous sommes en train de penser, eh bien, OK. 678 00:35:12,070 --> 00:35:15,530 Maintenant je ai besoin de faire beaucoup de pouvoirs de trois. 679 00:35:15,530 --> 00:35:19,180 Donc, je vais copier coller tout ce code, changer le nom de la fonction à partir de 680 00:35:19,180 --> 00:35:24,440 puissance de 2 à puissance de 3, et tout sera le même, sauf pour cette valeur 681 00:35:24,440 --> 00:35:26,740 ici, cette gamme, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Ainsi, plutôt que de répéter cette boucle double, 683 00:35:29,590 --> 00:35:31,880 Je tiens à répéter cette boucle trois fois. 684 00:35:31,880 --> 00:35:36,330 Donc, je viens de changer cette valeur de 1 à 3-- ou plutôt entre 2 et 3. 685 00:35:36,330 --> 00:35:39,230 Encore une fois, le même code, ce est le seul changement. 686 00:35:39,230 --> 00:35:40,080 Maintenant cela fonctionne aussi. 687 00:35:40,080 --> 00:35:43,860 Puissance de 3 fournis dans une certaine valeur de 2. 688 00:35:43,860 --> 00:35:44,420 Nous obtenons 8. 689 00:35:44,420 --> 00:35:45,370 Donc, deux cubes. 690 00:35:45,370 --> 00:35:48,060 Et 3,2 cube est 32,768. 691 00:35:48,060 --> 00:35:50,597 Et jusqu'ici tout va bien, non? 692 00:35:50,597 --> 00:35:52,930 Mais je espère que ce est un peu peu d'un drapeau rouge pour vous 693 00:35:52,930 --> 00:35:55,530 en ce que nous avons maintenant certains chevauchements code 694 00:35:55,530 --> 00:35:58,800 sauf pour certains très mineur changer de l'un à l'autre. 695 00:35:58,800 --> 00:36:02,170 Donc, il ya une certaine façon que nous pourrions être en mesure de simplifier 696 00:36:02,170 --> 00:36:06,080 ce problème, où nous pouvons effectivement, au moment de l'exécution, comprendre certains, 697 00:36:06,080 --> 00:36:11,320 nous fournir une fonction qui a précisément la puissance de ce que nous voulons. 698 00:36:11,320 --> 00:36:13,960 >> Et il ya cette idée de fermetures, qui est vraiment, vraiment 699 00:36:13,960 --> 00:36:18,180 importante dans le contexte de Swift, et dans de nombreux autres langues. 700 00:36:18,180 --> 00:36:21,580 Mais sans doute vous verrez il a utilisé plus dans Swift 701 00:36:21,580 --> 00:36:23,650 parce qu'il est intégré à l'intérieur de la langue 702 00:36:23,650 --> 00:36:28,280 que vous voulez dans les autres aussi les langues modernes. 703 00:36:28,280 --> 00:36:31,140 Donc, l'idée d'une fermeture est cela, ce est que nous 704 00:36:31,140 --> 00:36:35,430 peut avoir une fonction qui est destiné à être une fonction générique, une puissance générique 705 00:36:35,430 --> 00:36:36,860 de la fonction. 706 00:36:36,860 --> 00:36:41,010 >> Et cette fonction va accepter cet exposant que nous fait 707 00:36:41,010 --> 00:36:42,990 vouloir créer. 708 00:36:42,990 --> 00:36:46,550 Ainsi, par exemple, la première exemple, nous voulions une puissance de 2. 709 00:36:46,550 --> 00:36:50,050 Nous serions donc fournir de l'énergie de puis entre parenthèses 2. 710 00:36:50,050 --> 00:36:52,490 Et maintenant remarquer ce cela renvoie effectivement. 711 00:36:52,490 --> 00:36:57,680 Ceci prend une entrée d'une amorce appelé qui y est un nombre entier, 712 00:36:57,680 --> 00:37:03,090 et il revient cette folle recherche chose entre parenthèses parentheses-- 713 00:37:03,090 --> 00:37:06,230 double puis double flèche. 714 00:37:06,230 --> 00:37:10,270 >> Ce que cela signifie ce est que je suis va retourner une fonction. 715 00:37:10,270 --> 00:37:13,510 Je ne suis pas de retour un autre type de données, je suis 716 00:37:13,510 --> 00:37:16,350 en fait une fonction de retour qui présente ce paramètre, qui 717 00:37:16,350 --> 00:37:22,680 accepte une double comme entrée et une double sorties comme une valeur de retour. 718 00:37:22,680 --> 00:37:29,750 Et en conséquence, parce que maintenant je ai appelé puissance de, en passant une certaine valeur pour y, 719 00:37:29,750 --> 00:37:32,280 et je crée cette autre function-- avis qu'il ya 720 00:37:32,280 --> 00:37:35,980 une autre fonction qui est en cours de création intérieur de this-- ce que je fais 721 00:37:35,980 --> 00:37:37,830 ce est que je peux alors changer de cette valeur, que l'on 722 00:37:37,830 --> 00:37:41,010 la valeur que je avais changé 2-3, je fais maintenant, il y. 723 00:37:41,010 --> 00:37:42,500 >> Et cela persiste. 724 00:37:42,500 --> 00:37:48,530 Ainsi, chaque fois que je appelle le pouvoir de, ce qui se produit essentiellement 725 00:37:48,530 --> 00:37:51,030 ce est que je me retournai une fonction. 726 00:37:51,030 --> 00:37:54,310 Remarquez qu'ici je ai défini une nouvelle variable appelée carré. 727 00:37:54,310 --> 00:37:59,340 Je l'ai établie égale à la puissance de, fourni cette valeur 2 à la puissance de. 728 00:37:59,340 --> 00:38:02,030 Et ce que cela est retourné la fonction. 729 00:38:02,030 --> 00:38:05,970 Donc carré, la variable carré, est maintenant de type fonction 730 00:38:05,970 --> 00:38:11,390 qui a this-- oops, faites défiler jusqu'à une peu bit-- qui a cette signature, 731 00:38:11,390 --> 00:38:15,560 accepter une double et une double sortie. 732 00:38:15,560 --> 00:38:17,330 >> Alors maintenant, ce que je ai fait ce est que je ai essentiellement 733 00:38:17,330 --> 00:38:22,890 créé un carré de fonction appelée que accepte toute valeur et seront au carré. 734 00:38:22,890 --> 00:38:24,960 Nous pouvons voir ce qui se passe ici. 735 00:38:24,960 --> 00:38:29,960 Place 3 par exemple, signifie que je vais de prendre la valeur 3 et carré il. 736 00:38:29,960 --> 00:38:32,010 Alors, comment fait exactement ce travail? 737 00:38:32,010 --> 00:38:37,800 Quand je passe puissance de 2-- quand je passer 2 dans ce pouvoir de la fonction, 738 00:38:37,800 --> 00:38:44,430 cette variable y est peuplé avec cette valeur 2. 739 00:38:44,430 --> 00:38:46,340 Et ce est une sorte de lieu de mémoire. 740 00:38:46,340 --> 00:38:49,430 Ce est un peu comme lieu en Etat quelque part dans l'ordinateur, 741 00:38:49,430 --> 00:38:51,980 nous ne nous soucions pas vraiment comment ou si à ce stade. 742 00:38:51,980 --> 00:38:54,692 >> Mais je reviens cette fonction appelé exponentiate. 743 00:38:54,692 --> 00:38:57,400 Et encore, il n'a pas vraiment d'importance ce cette fonction est appelée, 744 00:38:57,400 --> 00:39:01,730 nous pouvons vraiment appeler ça, que accepte un double et retourne un double, 745 00:39:01,730 --> 00:39:05,640 mais utilise cette valeur y l'intérieur de celui-ci. 746 00:39:05,640 --> 00:39:09,290 Ainsi, même si ce est cette fonction, cette fonction de exponentiater ce est 747 00:39:09,290 --> 00:39:13,600 été retourné à ma variable qui je ai appelé carré, 748 00:39:13,600 --> 00:39:17,980 il est contenu dans ce cette notion de ce qui y était. 749 00:39:17,980 --> 00:39:19,070 Et il se en souvient. 750 00:39:19,070 --> 00:39:24,810 >> Ainsi, chaque fois que je appelle cette fonction que qui est maintenant appelé carré, il utilise cela. 751 00:39:24,810 --> 00:39:27,990 Mais cela signifie aussi que je peux créer une autre variable à l'aide 752 00:39:27,990 --> 00:39:29,120 une puissance différente de. 753 00:39:29,120 --> 00:39:33,240 Donc, je peux créer une variable de cube, pour par exemple, fournir à ce pouvoir de trois. 754 00:39:33,240 --> 00:39:37,230 Maintenant cube sera effectivement prendre un certain la valeur et cube et le retourner. 755 00:39:37,230 --> 00:39:39,570 Donc, nous pouvons voir que je reçois une valeur 8 sur cela. 756 00:39:39,570 --> 00:39:42,720 >> Mais cette valeur y n'a pas changé parce qu'ils sont 757 00:39:42,720 --> 00:39:44,980 tenue dans une sorte de variables indépendantes. 758 00:39:44,980 --> 00:39:47,480 Ils sont en quelque sorte des détenus dans espaces indépendants dans la mémoire. 759 00:39:47,480 --> 00:39:51,290 Donc cube aura toujours x à la puissance trois. 760 00:39:51,290 --> 00:39:55,380 Et carré aura toujours x à la puissance de deux, qui 761 00:39:55,380 --> 00:39:58,470 signifie que la place sera toujours nombres carrés, que je attends. 762 00:39:58,470 --> 00:40:01,794 Et cube sera toujours coupé en cubes numéros, comme je l'attendent. 763 00:40:01,794 --> 00:40:04,960 Cela signifie aussi que, parfois, vous pouvez obtenir une sorte de syntaxe regardant génial 764 00:40:04,960 --> 00:40:09,030 où vous avez le pouvoir d'au très bas de l'écran ici, puissance de 5. 765 00:40:09,030 --> 00:40:11,410 Et vous passez dans le résultat. 766 00:40:11,410 --> 00:40:14,670 Vous appelez cette fonction qui est été retourné avec le numéro 4. 767 00:40:14,670 --> 00:40:17,440 Et qu'est-ce essentiellement ce 4 est le cinquième puissance, 768 00:40:17,440 --> 00:40:20,830 nous pouvons voir les résultats là-bas. 769 00:40:20,830 --> 00:40:23,690 Avec moi jusqu'ici? 770 00:40:23,690 --> 00:40:26,620 >> Donc, cette idée se appelle une fermeture, parce que ce que nous sommes essentiellement faire 771 00:40:26,620 --> 00:40:30,610 est que nous sommes encapsulation certaines données into-- tri 772 00:40:30,610 --> 00:40:33,050 à enfermer ces données dans une fonction et nous sommes 773 00:40:33,050 --> 00:40:36,240 pouvoir réutiliser cette fonction. 774 00:40:36,240 --> 00:40:41,480 Maintenant cette syntaxe peut bien fait simplifier une grande quantité. 775 00:40:41,480 --> 00:40:45,005 Et il ya beaucoup de possibilité à Swift pour cette simplification. 776 00:40:45,005 --> 00:40:47,780 Et ce est ce genre de la les suivantes regardez vraiment. 777 00:40:47,780 --> 00:40:51,400 Donc, en 7b par exemple, nous prendre ce même code. 778 00:40:51,400 --> 00:40:54,360 >> Mais maintenant, plutôt que effectivement définir une fonction 779 00:40:54,360 --> 00:40:57,910 l'intérieur de ce pouvoir de fonctionner et lui donner un nom, 780 00:40:57,910 --> 00:41:00,150 puis retourner le nom de cette fonction, ce qui 781 00:41:00,150 --> 00:41:02,357 puis est utilisé dans le cadre de cette fermeture, la place nous sommes 782 00:41:02,357 --> 00:41:03,440 aller juste pour le simplifier. 783 00:41:03,440 --> 00:41:06,580 Nous ne avons pas besoin de cette fonction pour être nommé. 784 00:41:06,580 --> 00:41:09,760 Donc, ce est le concept d'un fonction anonyme où l'on peut ensuite 785 00:41:09,760 --> 00:41:15,180 accepter comme entrée, entre parenthèses ici, la variable x qui est de type double. 786 00:41:15,180 --> 00:41:17,250 >> Nous allons retourner la double type. 787 00:41:17,250 --> 00:41:19,830 Et puis le mot-clé, n, est le début de cette fonction. 788 00:41:19,830 --> 00:41:22,180 Donc remarquer que tout cela est entre accolades 789 00:41:22,180 --> 00:41:25,310 et nous définissons une anonyme fonctionne ici. 790 00:41:25,310 --> 00:41:29,910 Juste une façon plus simple de définir exactement la même chose. 791 00:41:29,910 --> 00:41:30,810 D'ACCORD? 792 00:41:30,810 --> 00:41:36,740 Mais attendez, Swift nous permet effectivement aller plus loin et de simplifier encore plus, 793 00:41:36,740 --> 00:41:40,180 parce que vraiment nous ne avons pas soin que ce paramètre est 794 00:41:40,180 --> 00:41:41,700 nommé quelque chose de particulier. 795 00:41:41,700 --> 00:41:48,090 Il peut vraiment être appelé ne importe quoi et nous pouvons encore utiliser ce premier paramètre. 796 00:41:48,090 --> 00:41:53,800 >> Donc, en fait, il ya cette spéciale type de données dans des fonctions anonymes, 797 00:41:53,800 --> 00:41:57,710 il ya ce nom spécial de variables dans des fonctions anonymes 798 00:41:57,710 --> 00:42:00,280 qui commencent avec le signe de dollar et représentent 799 00:42:00,280 --> 00:42:03,785 les numéros de paramètres, zéro indexées, pour cette fonction. 800 00:42:03,785 --> 00:42:05,410 Donc, il ya un couple de choses qui se passent. 801 00:42:05,410 --> 00:42:08,550 Ici, je vais revenir, et puis un accolade représentant une fonction, 802 00:42:08,550 --> 00:42:09,050 droit? 803 00:42:09,050 --> 00:42:13,920 >> Remarquez que je ne ai pas défini la types paramètres ou le type de retour. 804 00:42:13,920 --> 00:42:16,460 Il peut effectivement être déduite en raison de la signature 805 00:42:16,460 --> 00:42:18,360 de cette fonction d'origine. 806 00:42:18,360 --> 00:42:20,500 Donc, nous pouvons éliminer que comme une possibilité. 807 00:42:20,500 --> 00:42:25,120 Mais aussi je peux utiliser le signe de dollar zéro à représenter ce premier paramètre qui est 808 00:42:25,120 --> 00:42:28,200 passé dans cette fonction anonyme. 809 00:42:28,200 --> 00:42:31,630 Simplifiant ainsi encore plus. 810 00:42:31,630 --> 00:42:32,750 D'ACCORD? 811 00:42:32,750 --> 00:42:33,820 Jusqu'ici, tout va bien? 812 00:42:33,820 --> 00:42:36,980 >> Maintenant, ce est ce bien---vous rappelez-vous ce signe dollar zéro 813 00:42:36,980 --> 00:42:40,130 que nous avons vu dans cette accolade que nous avons vu juste un peu de temps 814 00:42:40,130 --> 00:42:43,870 Il ya dans ce six exemple Swift? 815 00:42:43,870 --> 00:42:46,560 Ce est ici. 816 00:42:46,560 --> 00:42:48,430 Notez que ce est exactement ce que nous cherchons à, 817 00:42:48,430 --> 00:42:51,580 ce est que nous avons passé dans cette fonction rattrapante 818 00:42:51,580 --> 00:42:55,140 une fonction anonyme qui vérifie le premier paramètre 819 00:42:55,140 --> 00:42:57,830 pour voir se il est égal au symbole du côlon. 820 00:42:57,830 --> 00:42:59,830 Et ce est exactement ce qui est passe, ce est que tous les 821 00:42:59,830 --> 00:43:02,320 nous doing-- le retour mot-clé est implicite 822 00:43:02,320 --> 00:43:05,800 dans ce case-- nous retour cette valeur lorsque nous comparons 823 00:43:05,800 --> 00:43:10,020 le premier paramètre contre ce colon de caractère. 824 00:43:10,020 --> 00:43:11,730 Et ce genre de démystifie cette. 825 00:43:11,730 --> 00:43:17,210 Et vous allez voir cette construction beaucoup dans la syntaxe Swift, il ne faut garder que 826 00:43:17,210 --> 00:43:19,400 à l'esprit lorsque vous êtes jeter un oeil à ce sujet. 827 00:43:19,400 --> 00:43:21,970 Maintenant, nous pouvons descendre les rails un peu 828 00:43:21,970 --> 00:43:25,460 et aller vraiment envie que les spectacles même un peu plus de la puissance de Swift. 829 00:43:25,460 --> 00:43:27,950 Vous pourriez même voir de ceux-ci dans des exemples de codes. 830 00:43:27,950 --> 00:43:29,790 Donc, ce est pourquoi je vais le montrer à vous. 831 00:43:29,790 --> 00:43:37,260 >> Fondamentalement, ce que nous pouvons faire est que, premièrement de tous, il était un peu inutile pour moi 832 00:43:37,260 --> 00:43:41,710 mettre en œuvre toute cette puissance de Code parce que si vous importez le Darwin 833 00:43:41,710 --> 00:43:46,490 bibliothèque, il comprend en fait une fonction appelé pow qui fait cela pour vous. 834 00:43:46,490 --> 00:43:50,570 Donc, nous pouvons simplifier encore plus et avoir notre fonction de puissance jusqu'à maintenant juste 835 00:43:50,570 --> 00:43:54,890 être un merveilleux une chemise où nous venons de retourner cette fonction anonyme 836 00:43:54,890 --> 00:44:00,780 accepte signe dollar 0 comme base et y comme exposant. 837 00:44:00,780 --> 00:44:02,582 >> Mais nous pouvons être vraiment, vraiment envie quand nous 838 00:44:02,582 --> 00:44:04,790 réaliser que Swift a un beaucoup de puissance sous le capot. 839 00:44:04,790 --> 00:44:07,010 Un grand nombre des opérateurs nous avons eu affaire à, 840 00:44:07,010 --> 00:44:11,270 ainsi que les signes et les symboles de la division et toutes ces choses que vous normalement 841 00:44:11,270 --> 00:44:15,620 fonctionner avec des types de données dans un langage de programmation, 842 00:44:15,620 --> 00:44:17,600 sont en fait extensible à Swift. 843 00:44:17,600 --> 00:44:21,460 Donc ce que cela signifie que nous en peut définir nos propres opérateurs. 844 00:44:21,460 --> 00:44:26,020 >> Alors maintenant, je suis fatigué de taper tout cela pow, puis un parenthèses puis 845 00:44:26,020 --> 00:44:26,520 la base. 846 00:44:26,520 --> 00:44:27,520 Je ne veux pas faire ça. 847 00:44:27,520 --> 00:44:30,190 Je veux réellement avoir un opérateur qui me permet de faire cela. 848 00:44:30,190 --> 00:44:34,510 Donc, je peux dire que je veux Swift pour créer un opérateur, étoile 849 00:44:34,510 --> 00:44:39,472 star-- par la façon dont je ne peux pas utiliser le carat parce que le carat est un opérateur qui 850 00:44:39,472 --> 00:44:40,680 fait tout autre chose. 851 00:44:40,680 --> 00:44:42,720 Donc, je ne veux pas trier d'entrer en collision avec cela. 852 00:44:42,720 --> 00:44:45,750 Et ce que vous voyez dans une variété des langues, y compris Python, 853 00:44:45,750 --> 00:44:48,810 ce est comme opérateur de star pour représenter exposants. 854 00:44:48,810 --> 00:44:50,730 >> Donc, ce est la seule raison pourquoi je ai fait cela. 855 00:44:50,730 --> 00:44:53,067 Et il va être un opérateur de type infixe. 856 00:44:53,067 --> 00:44:54,900 Et je dois fournir pour elle des informations 857 00:44:54,900 --> 00:44:58,386 au sujet de la priorité de cette opérateur, il est si associative gauche. 858 00:44:58,386 --> 00:45:00,260 Ce est comme relativement priorité élevée comparée 859 00:45:00,260 --> 00:45:02,432 à la sommation ou la multiplication. 860 00:45:02,432 --> 00:45:04,140 Ce est une priorité plus élevée que tous ceux. 861 00:45:04,140 --> 00:45:04,931 Ainsi de suite et ainsi de suite. 862 00:45:04,931 --> 00:45:07,410 Et puis je définis le fonction qui fait 863 00:45:07,410 --> 00:45:10,070 dicte ce que cet opérateur fait. 864 00:45:10,070 --> 00:45:14,150 Donc, en supposant que je ai une gauche côté et du côté droit, 865 00:45:14,150 --> 00:45:17,330 qui serait peut-être un meilleur nom variable pour cela. 866 00:45:17,330 --> 00:45:20,690 Côté gauche et côté droit. 867 00:45:20,690 --> 00:45:26,740 Je peux alors prendre ce pouvoir de la gauche à la droite 868 00:45:26,740 --> 00:45:28,980 et retourner cette valeur. 869 00:45:28,980 --> 00:45:30,370 Alors maintenant, ce est super doux. 870 00:45:30,370 --> 00:45:33,790 Tout ce que nous avons à faire est de 2 étoiles 3 étoiles et ce est 2 à la puissance trois, 871 00:45:33,790 --> 00:45:35,290 et nous obtenons une valeur de 8. 872 00:45:35,290 --> 00:45:40,280 Étoiles 2 étoiles 10 est 2 à la Puissance 10, nous obtenons 1024. 873 00:45:40,280 --> 00:45:43,630 >> Alors maintenant, notre pouvoir de la fonction, qui encore une fois est différent, 874 00:45:43,630 --> 00:45:47,030 parce que l'idée derrière cette ce est que nous avons une fonction qui 875 00:45:47,030 --> 00:45:50,700 prend toujours une certaine valeur et it-- multiplie ou plutôt 876 00:45:50,700 --> 00:45:53,240 prend l'exposant à la même puissance. 877 00:45:53,240 --> 00:45:54,300 Alors maintenant, ce est encore plus simple. 878 00:45:54,300 --> 00:45:57,070 Alors maintenant, ce est juste dollar signer étoiles 0 étoiles y. 879 00:45:57,070 --> 00:46:01,190 Nous ne avons même pas plus d'utiliser pow. 880 00:46:01,190 --> 00:46:03,020 >> OK, qui a perdu? 881 00:46:03,020 --> 00:46:03,700 Faisons-nous OK? 882 00:46:03,700 --> 00:46:05,090 Des questions sur ce genre de choses? 883 00:46:05,090 --> 00:46:05,815 Ouais? 884 00:46:05,815 --> 00:46:09,500 >> AUDIENCE: Lorsque vous-- [inaudible] la puissance de funk de y double. 885 00:46:09,500 --> 00:46:11,441 Alors, quand vous êtes de retour d'une fonction. 886 00:46:11,441 --> 00:46:13,190 DANIEL ARMENDARIZ: Funk puissance de y double. 887 00:46:13,190 --> 00:46:14,270 Oh oui, je ne sais pas ce que les nombres y sont. 888 00:46:14,270 --> 00:46:15,708 Désolé à ce sujet. 889 00:46:15,708 --> 00:46:19,420 >> AUDIENCE: Pourquoi êtes-vous retournez une fonction [inaudible] enceinte. 890 00:46:19,420 --> 00:46:24,214 Ne est pas zéro dollar étoiles étoiles y [inaudible] 891 00:46:24,214 --> 00:46:29,710 cet opérateur à trouver que renvoyant un double [inaudible] doubler? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL ARMENDARIZ: Alors laissez- moi de répondre à votre question 893 00:46:32,742 --> 00:46:35,950 ce que je comprends et vous pouvez me dire si je ne ai pas compris votre question. 894 00:46:35,950 --> 00:46:42,850 Donc, cette construction, l'accolade signe de zéro dollar star y, 895 00:46:42,850 --> 00:46:44,280 est une fonction. 896 00:46:44,280 --> 00:46:50,080 Et il accepte un paramètre qui est représenté par ce signe de zéro dollar. 897 00:46:50,080 --> 00:46:55,830 Le mot-clé return est implicite dans ce très court, anonyme syntaxe de la fonction. 898 00:46:55,830 --> 00:46:57,870 >> Ce qui signifie que l'essentiel ce que cela veut dire 899 00:46:57,870 --> 00:47:01,270 ce est que je suis la définition d'une function-- et puis je vais 900 00:47:01,270 --> 00:47:05,320 simplement l'appeler quelque chose-- où je ai une certaine valeur y. 901 00:47:05,320 --> 00:47:08,300 Je ai y, qui est double. 902 00:47:08,300 --> 00:47:10,750 Et je retourne un double. 903 00:47:10,750 --> 00:47:19,010 Et je ai dans ce retour y-- désolé, Je ne aurais pas appelé cette y-- x. 904 00:47:19,010 --> 00:47:20,240 Oh, oh dear, oh dear. 905 00:47:20,240 --> 00:47:27,440 Star y de X-. 906 00:47:27,440 --> 00:47:29,720 >> Donc, ce est juste une version simplifiée de ce produit. 907 00:47:29,720 --> 00:47:33,990 Et la raison pour laquelle je ai dollar signe nulle est que l'utilisation de cette enceinte 908 00:47:33,990 --> 00:47:41,050 signifie que je ne ai plus taper pow, ou n'y répondent plus 909 00:47:41,050 --> 00:47:45,570 Je dois faire quelque chose un 3 étoiles 2 étoiles. 910 00:47:45,570 --> 00:47:48,530 Je peux juste avoir un seul fonction appelée carré 911 00:47:48,530 --> 00:47:50,820 qui va toujours prendre une certaine valeur en tant qu'entrée 912 00:47:50,820 --> 00:47:52,980 et effectivement retourner la place de cela. 913 00:47:52,980 --> 00:47:56,460 >> Donc, tout le but de la fermeture est à juste une sorte de encapsuler le fait 914 00:47:56,460 --> 00:47:59,920 que je veux toujours y utiliser chaque fois Je appelle cette fonction en tant que puissance 915 00:47:59,920 --> 00:48:01,710 lors de la prise cet exposant. 916 00:48:01,710 --> 00:48:04,650 Donc, retour donc une fonction qui accepte 917 00:48:04,650 --> 00:48:08,460 un double, qui est la base, et retourner le résultat de cette exposant 918 00:48:08,460 --> 00:48:10,740 est la clé ici. 919 00:48:10,740 --> 00:48:12,790 Et ce est la principale différence. 920 00:48:12,790 --> 00:48:14,430 Il y avait juste un peu de beauté. 921 00:48:14,430 --> 00:48:17,970 >> Ce ne est pas différent par rapport aux exemples précédents, 922 00:48:17,970 --> 00:48:20,530 mais ce était juste un peu de un que nous pouvons réellement se épanouir 923 00:48:20,530 --> 00:48:24,500 créer un opérateur à Swift et à faire réellement ce avec elle, 924 00:48:24,500 --> 00:48:26,396 qui est une sorte de quelque chose de cool. 925 00:48:26,396 --> 00:48:27,520 Ai-je répondu à votre question? 926 00:48:27,520 --> 00:48:28,390 Sweet. 927 00:48:28,390 --> 00:48:31,350 Rien d'autre avant de passer? 928 00:48:31,350 --> 00:48:33,570 D'ACCORD. 929 00:48:33,570 --> 00:48:36,430 >> Maintenant ce genre de pose la question est that-- bien OK, 930 00:48:36,430 --> 00:48:40,870 nous avons maintenant la possibilité pour les fonctions pour être retournés. 931 00:48:40,870 --> 00:48:48,950 Pouvons-nous passer également des fonctions que les données ou en tant que paramètres à d'autres fonctions? 932 00:48:48,950 --> 00:48:50,710 Et en fait, nous le pouvons. 933 00:48:50,710 --> 00:48:53,480 Alors disons que nous avons toutes le même code. 934 00:48:53,480 --> 00:48:56,120 Nous avons la variable carré qui se affronteront ce code. 935 00:48:56,120 --> 00:48:59,320 Et nous avons la variable de cube qui sera cube certaines données. 936 00:48:59,320 --> 00:49:02,440 Et nous voulons effectivement à appliquer à une large gamme de nombres. 937 00:49:02,440 --> 00:49:06,870 >> Donc, ce que nous pourrions être tentés de le faire, bien sûr, ce qui est certainement valable, 938 00:49:06,870 --> 00:49:15,430 est d'itérer sur cette liste de numéros et appliquer mes fonctions carré et le cube 939 00:49:15,430 --> 00:49:22,270 et obtenir deux nouvelles listes que les résultats qui sont cette liste originale carré 940 00:49:22,270 --> 00:49:24,970 et en cubes, respectivement. 941 00:49:24,970 --> 00:49:26,880 Parfaitement acceptable. 942 00:49:26,880 --> 00:49:29,130 Mais quelle est la chose qui nous voyons ici est que nous avons, 943 00:49:29,130 --> 00:49:31,310 nouveau, la duplication de notre code. 944 00:49:31,310 --> 00:49:34,310 Et il ya peut-être une occasion pour nous de simplifier un peu cette question. 945 00:49:34,310 --> 00:49:41,260 Que faire si il y avait un moyen pour nous de fait toujours itérer sur une certaine liste 946 00:49:41,260 --> 00:49:45,450 et il suffit de passer à cette magique fonctionner une variable qui 947 00:49:45,450 --> 00:49:47,350 représente une fonction que nous voulons appliquer 948 00:49:47,350 --> 00:49:50,336 à chaque article dans cette liste. 949 00:49:50,336 --> 00:49:53,210 Ceci nous amène à la notion de ce sont appelées fonctions d'ordre supérieur. 950 00:49:53,210 --> 00:49:57,150 Et ce est essentiellement ce que cette est, ce est que nous pouvons créer une fonction. 951 00:49:57,150 --> 00:50:00,210 >> Et dans ce cas on appelle ça un mappeur, juste pour lui donner un nom, juste 952 00:50:00,210 --> 00:50:02,510 cartographie sur chaque seul élément dans une liste. 953 00:50:02,510 --> 00:50:06,191 Lorsque je prends une liste et je prends une fonction. 954 00:50:06,191 --> 00:50:08,440 Et cette fonction, bien sûr, a une certaine signature. 955 00:50:08,440 --> 00:50:11,980 Il accepte en tant que paramètre à double et il sera sortie est un double. 956 00:50:11,980 --> 00:50:14,310 Et toute la suite de cette fonction va 957 00:50:14,310 --> 00:50:18,921 être une nouvelle liste qui est de type double. 958 00:50:18,921 --> 00:50:19,420 D'ACCORD? 959 00:50:19,420 --> 00:50:22,650 >> Et ce que je vais faire est d'appliquer cette fonction f 960 00:50:22,650 --> 00:50:24,960 à chaque élément dans ma liste. 961 00:50:24,960 --> 00:50:30,280 Et reply-- et plutôt revenir cette nouvelle la liste à la suite, ce qui est vraiment cool. 962 00:50:30,280 --> 00:50:31,820 Maintenant, je peux passer autour de fonctions. 963 00:50:31,820 --> 00:50:35,290 Et cette idée d'ordre supérieur fonctions est vraiment important. 964 00:50:35,290 --> 00:50:39,260 Et ce est vraiment juste mappeur la mise en œuvre du pauvre 965 00:50:39,260 --> 00:50:43,130 d'une fonction qui est construit dans Swift appelée carte. 966 00:50:43,130 --> 00:50:45,690 Et il le fait précisément cela, peut-être même un peu mieux. 967 00:50:45,690 --> 00:50:48,260 >> Ce est juste une sorte de générique, version simplifiée que 968 00:50:48,260 --> 00:50:51,270 nous permet de voir les concept qui se applique ici. 969 00:50:51,270 --> 00:50:54,630 Maintenant, regardez la façon dont je peut réellement appliquer mon carré 970 00:50:54,630 --> 00:50:57,850 et mes fonctions de cube à cette liste de numéros. 971 00:50:57,850 --> 00:50:58,780 Je dirige ma mappeur. 972 00:50:58,780 --> 00:51:00,280 Je fournis à elle ma liste de nombres. 973 00:51:00,280 --> 00:51:02,155 Je fournis à elle la la fonction qui va 974 00:51:02,155 --> 00:51:04,170 se appliquer à chacun de ces indices. 975 00:51:04,170 --> 00:51:07,120 Et il va être sortie en conséquence. 976 00:51:07,120 --> 00:51:11,810 Et je vais arriver à voir que je ai au carré et cubes mes numéros à la suite. 977 00:51:11,810 --> 00:51:14,660 >> Et bien sûr le mappeur aura toute sorte de fonction anonyme. 978 00:51:14,660 --> 00:51:17,640 Nous pouvons même voir que je ai créé une nouvelle fonction anonyme 979 00:51:17,640 --> 00:51:20,220 prend juste un paramètre et divise par deux. 980 00:51:20,220 --> 00:51:24,340 Et nous pouvons voir que je ai, en fait, divisé par deux ma liste à la place. 981 00:51:24,340 --> 00:51:25,250 Cool? 982 00:51:25,250 --> 00:51:27,340 Jusqu'ici, tout va bien? 983 00:51:27,340 --> 00:51:29,650 Très bien, maintenant nous allons revenir à cette idée. 984 00:51:29,650 --> 00:51:36,160 Implémentons ce retour dans le contexte d'un carnet de notes. 985 00:51:36,160 --> 00:51:41,860 >> Et si je fais cela, nous pouvons voir que je peux appliquer une grande variété de ces dire les options 986 00:51:41,860 --> 00:51:44,330 ou une grande variété de ceux-ci fonctions d'ordre supérieur 987 00:51:44,330 --> 00:51:51,450 pour réellement simplifier ma capacité à faire variété de choses sur des listes de numéros. 988 00:51:51,450 --> 00:51:53,660 Ainsi, par exemple, si je prendre une liste de numéros, 989 00:51:53,660 --> 00:51:57,060 l'une des fonctions d'ordre supérieur qui existe est appelé réduire. 990 00:51:57,060 --> 00:52:00,080 Que fait plutôt réduire à la carte, est réduite sera 991 00:52:00,080 --> 00:52:03,710 prendre deux éléments dans la liste, aura une fonction qui 992 00:52:03,710 --> 00:52:07,420 compare les deux éléments de la liste, et il sera alors 993 00:52:07,420 --> 00:52:09,610 sorte de output-- la la sortie de cette fonction 994 00:52:09,610 --> 00:52:13,790 sera un autre élément qui puis vous comparez à d'autres. 995 00:52:13,790 --> 00:52:18,190 >> Donc, vous pouvez utiliser ceci pour effectivement somme des nombres dans votre liste. 996 00:52:18,190 --> 00:52:20,640 Par exemple, si vous aviez une liste de 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 vous prenez les premiers éléments, 1 et 2. 998 00:52:22,940 --> 00:52:27,270 Vous pouvez demander à un ajout fonction qui prend ces deux éléments 999 00:52:27,270 --> 00:52:30,980 et crache un de ces éléments, ce qui serait la valeur 3. 1000 00:52:30,980 --> 00:52:35,684 Puis nous prenons cette valeur 3 avec la prochaine élément de la liste, résumer ces deux, 1001 00:52:35,684 --> 00:52:37,100 puis continuer la liste. 1002 00:52:37,100 --> 00:52:40,410 >> Nous réduisons la la liste à une seule valeur. 1003 00:52:40,410 --> 00:52:42,700 Et il se trouve que le symbole plus 1004 00:52:42,700 --> 00:52:44,670 est un opérateur, tout comme nous venons de le voir. 1005 00:52:44,670 --> 00:52:47,500 Cet opérateur est une fonction qui fait 1006 00:52:47,500 --> 00:52:53,100 a précisément cette liste que nous voudrait plutôt ces propriétés 1007 00:52:53,100 --> 00:52:54,770 que nous voudrions. 1008 00:52:54,770 --> 00:52:56,760 Je vous encourage donc à jetez un oeil à ce. 1009 00:52:56,760 --> 00:52:59,290 Je tiens à trier de déménagement sur de certains de ce code 1010 00:52:59,290 --> 00:53:05,330 afin que nous puissions effectivement examiner certains réelle, vraie, vraie Swift dans Xcode, 1011 00:53:05,330 --> 00:53:06,880 dans le développement iOS. 1012 00:53:06,880 --> 00:53:08,630 Mais jetez un oeil à cela et voir si vous pouvez 1013 00:53:08,630 --> 00:53:11,171 analyser à travers ce qui se passe avec certains d'entre eux d'ordre supérieur 1014 00:53:11,171 --> 00:53:13,790 fonctions y compris le filtre, réduire, et vous aurez même 1015 00:53:13,790 --> 00:53:17,060 voir quelque part dans la liste des cartes ainsi. 1016 00:53:17,060 --> 00:53:17,910 Ce est ici. 1017 00:53:17,910 --> 00:53:20,410 Où il prendra une séquence des qualités et il sera fait 1018 00:53:20,410 --> 00:53:24,230 la carte à l'aide du concept de commutation, que vous pourriez reconnaître à partir de C, 1019 00:53:24,230 --> 00:53:27,640 mais en fait ce est beaucoup plus puissant que la construction de l'interrupteur 1020 00:53:27,640 --> 00:53:29,810 que nous avons en C. 1021 00:53:29,810 --> 00:53:31,930 >> Et nous allons l'appliquer à chaque élément de la liste 1022 00:53:31,930 --> 00:53:34,540 et assurer effectivement la lettre de chaque année 1023 00:53:34,540 --> 00:53:40,780 de ces grades en utilisant tous ces concepts que nous venons de parler avant. 1024 00:53:40,780 --> 00:53:44,760 Maintenant, nous allons contourner pour seulement minute et parler de structures. 1025 00:53:44,760 --> 00:53:49,680 Et structs sont une attente dans C que nous ont réussi à définir un nouveau type de données. 1026 00:53:49,680 --> 00:53:53,590 Structures existent dans Swift. 1027 00:53:53,590 --> 00:53:58,980 Et ainsi de faire beaucoup d'autres constructions appelés énumérations et les classes, qui a vraiment 1028 00:53:58,980 --> 00:54:01,175 prendre cette idée à un toute autre niveau. 1029 00:54:01,175 --> 00:54:05,300 >> Et au fond, ce est juste une façon de définition d'un nouveau type de données. 1030 00:54:05,300 --> 00:54:11,010 Donc, si vous get-- si vous venez dans la classe ou structs ou énumérations, 1031 00:54:11,010 --> 00:54:13,290 ne pas confondre par elle. 1032 00:54:13,290 --> 00:54:16,280 Ce est juste la façon de définir un nouveau type de données. 1033 00:54:16,280 --> 00:54:20,230 Et ce est vraiment important quand nous parlons de développement d'applications iOS 1034 00:54:20,230 --> 00:54:24,630 car tout ce qui existe au sein de l'app iOS 1035 00:54:24,630 --> 00:54:27,460 est essentiellement un objet quelconque. 1036 00:54:27,460 --> 00:54:31,980 Et un objet est essentiellement un classe ou d'une énumération ou une structure. 1037 00:54:31,980 --> 00:54:34,760 >> Donc, dans ce cas, je suis la définition d'un nouveau type de données 1038 00:54:34,760 --> 00:54:37,740 que je appelle l'évaluation ce est certaines propriétés, y compris 1039 00:54:37,740 --> 00:54:41,040 un nom et une séquence de notes. 1040 00:54:41,040 --> 00:54:43,470 Donc, un type d'évaluation que je pourrais avoir à l'esprit 1041 00:54:43,470 --> 00:54:44,760 serait quiz, par exemple. 1042 00:54:44,760 --> 00:54:48,180 Je voudrais avoir une évaluation qui était un quiz 1043 00:54:48,180 --> 00:54:51,460 et qui avaient une variété de qualités associée à ce que, pour une quizz, 1044 00:54:51,460 --> 00:54:52,840 quizz deux, ainsi de suite et ainsi de suite. 1045 00:54:52,840 --> 00:54:55,720 >> Ou je pourrais avoir un autre type de l'évaluation pour les ensembles de problèmes. 1046 00:54:55,720 --> 00:54:56,650 Et je peux faire des choses. 1047 00:54:56,650 --> 00:54:59,860 Je peux effectivement avoir fonctions au sein de ce type 1048 00:54:59,860 --> 00:55:02,645 des données, qui sont maintenant appelées méthodes. 1049 00:55:02,645 --> 00:55:04,520 Donc si jamais vous voyez la méthode de mot, ce est vraiment 1050 00:55:04,520 --> 00:55:08,190 est juste une fonction qui se applique à une classe très spécifique, 1051 00:55:08,190 --> 00:55:10,100 ou à un type très spécifique de données. 1052 00:55:10,100 --> 00:55:12,350 Il nous permet de modifier les données au sein. 1053 00:55:12,350 --> 00:55:15,510 >> Donc, en d'autres termes, si je veux ajouter une note à mon évaluation, 1054 00:55:15,510 --> 00:55:18,630 alors tout ce que je dois faire est de ajouter le score qui était entrée 1055 00:55:18,630 --> 00:55:22,660 à cette fonction à ma propriété interne. 1056 00:55:22,660 --> 00:55:25,880 Il ya une autre construction soignée ici à Swift, qui est cette dot dot dot 1057 00:55:25,880 --> 00:55:31,780 l'opérateur, ce qui signifie que les scores peuvent désormais accepter ne importe quel nombre d'entiers. 1058 00:55:31,780 --> 00:55:33,940 Et les scores seront une tableau d'entiers 1059 00:55:33,940 --> 00:55:39,030 ont été adoptées à ma fonction, qui signifie que je peux faire des trucs comme ça. 1060 00:55:39,030 --> 00:55:42,360 >> Je peux ajouter ne grades et juste offrir un nombre arbitraire de nombres entiers en elle 1061 00:55:42,360 --> 00:55:47,420 et fournir réellement un réseau de ces valeurs dans ma fonction 1062 00:55:47,420 --> 00:55:50,270 ou ma méthode, comme ce est le cas. 1063 00:55:50,270 --> 00:55:54,040 Maintenant, ce est important parce que tout dans Xcode, tout dans iOS, 1064 00:55:54,040 --> 00:55:56,250 est en fait un objet. 1065 00:55:56,250 --> 00:55:59,630 Donc, gardez cela à l'esprit lorsque nous buste Xcode ouverte 1066 00:55:59,630 --> 00:56:04,890 et passez au-delà iOS versions deux et trois 1067 00:56:04,890 --> 00:56:08,820 et effectivement passer à la version quatre. 1068 00:56:08,820 --> 00:56:11,940 >> Et encore une fois, tout cela sera être posté sur la page de séminaire. 1069 00:56:11,940 --> 00:56:16,980 iOS quatre est une sorte de Full Blown mise en œuvre d'une application très basique. 1070 00:56:16,980 --> 00:56:23,920 Et ce que cette application ne est-il charge une interface utilisateur, qui ressemble à ceci. 1071 00:56:23,920 --> 00:56:28,680 Encore une fois, si l'on clique sur le storyboard nous pouvons voir que ce est à quoi il ressemble. 1072 00:56:28,680 --> 00:56:31,320 Ce est l'interface utilisateur. 1073 00:56:31,320 --> 00:56:33,676 Il a un titre au sommet. 1074 00:56:33,676 --> 00:56:34,800 Je l'ai appelé galerie Web. 1075 00:56:34,800 --> 00:56:38,400 >> Au milieu, il ya un élément appelé la vue de l'image de l'interface utilisateur. 1076 00:56:38,400 --> 00:56:41,340 Et au fond il ya un barre d'outils avec un bouton unique qui 1077 00:56:41,340 --> 00:56:46,850 a espaces extensibles qu'il permettent de centre au milieu de cette barre d'outils. 1078 00:56:46,850 --> 00:56:51,780 Et ce qui se passe est que lorsque cette charges, il télécharge un fichier JSON qui est 1079 00:56:51,780 --> 00:56:55,540 contenue sur un serveur ailleurs, parse ce fichier JSON, 1080 00:56:55,540 --> 00:56:58,130 et le fichier JSON ressemble un peu à cela. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 Le fichier JSON ressemble à ceci. 1083 00:57:06,230 --> 00:57:08,650 Il est là. 1084 00:57:08,650 --> 00:57:11,730 >> Il dispose d'un nom d'album et il dispose d'une panoplie de photos. 1085 00:57:11,730 --> 00:57:13,490 Chacun de ces photos avoir un nom et aussi 1086 00:57:13,490 --> 00:57:19,460 une URL qui représentent eux-mêmes la Version jpeg de cette photo individuelle. 1087 00:57:19,460 --> 00:57:24,780 Donc ce qui se passe, ce est que lorsque ce programme charges, il télécharge le fichier JSON, 1088 00:57:24,780 --> 00:57:30,590 il analyse, met tout cela en l'équivalent d'un tableau dans iOS 1089 00:57:30,590 --> 00:57:33,020 le développement de l'application, qui est un NSArray. 1090 00:57:33,020 --> 00:57:37,520 Et puis, je peux alors charger ces données dans une application 1091 00:57:37,520 --> 00:57:41,100 et le charger sur mon écran. 1092 00:57:41,100 --> 00:57:44,760 >> Il se agit d'une image qui a été chargé avec le bouton tout en bas. 1093 00:57:44,760 --> 00:57:49,190 Si je clique Obtenez Image suivante, il a ensuite tire cette image à partir d'Internet 1094 00:57:49,190 --> 00:57:53,370 et remplace cette image dans la vue de l'image de l'interface utilisateur. 1095 00:57:53,370 --> 00:57:57,820 Donc, vous pouvez télécharger ce fait et prendre un coup d'oeil sur votre ordinateur. 1096 00:57:57,820 --> 00:58:00,940 Et construire et effectivement compiler sur votre appareil. 1097 00:58:00,940 --> 00:58:04,710 Mais essentiellement le processus était cela, créer le storyboard-- 1098 00:58:04,710 --> 00:58:08,080 ou plutôt pas create-- mais sélectionnez le storyboard. 1099 00:58:08,080 --> 00:58:15,030 Et we'll-- fait, si vous ne avez pas mind-- nous prenons juste un couple de secondes 1100 00:58:15,030 --> 00:58:18,390 vous montrer réellement comment cela a été fait. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Juste pour que la façon dont nous pouvons effectivement parvenir est faite un peu plus 1103 00:58:27,820 --> 00:58:28,360 apparente. 1104 00:58:28,360 --> 00:58:30,651 Une seule application de vue, je suis vais appeler ce séminaire 1105 00:58:30,651 --> 00:58:35,330 quatre représentant cette notamment nombre. 1106 00:58:35,330 --> 00:58:36,335 Enregistrez-le sur le bureau. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, allez cliquer sur le storyboard. 1109 00:58:42,110 --> 00:58:47,030 Et ce que je vais faire est de trouver mon image vue, 1110 00:58:47,030 --> 00:58:50,940 faites-le glisser sur mon utilisateur interface et le centrer. 1111 00:58:50,940 --> 00:58:54,850 Maintenant, il suffit centrant malheureusement ne va pas faire beaucoup, 1112 00:58:54,850 --> 00:58:58,680 sauf pour un écran ce est cette taille exacte. 1113 00:58:58,680 --> 00:59:03,950 >> Donc, nous pouvons nous en convaincre par cliquant sur ce double chose de cercle, 1114 00:59:03,950 --> 00:59:08,290 faire baisser cette fenêtre menu ici et changeant 1115 00:59:08,290 --> 00:59:11,110 prévisualiser, où nous allons effectivement obtenir une chance de prévisualiser 1116 00:59:11,110 --> 00:59:13,530 Ce sera effectivement chercher sur d'autres appareils. 1117 00:59:13,530 --> 00:59:16,500 Comme nous pouvons le voir, nous ne avons même pas voir sur ce cas particulier. 1118 00:59:16,500 --> 00:59:18,500 Donc, je vais fermer cette pour l'instant. 1119 00:59:18,500 --> 00:59:22,100 >> Et je vais sélectionner cette icône vers le bas à la très 1120 00:59:22,100 --> 00:59:23,910 partie inférieure de l'écran. 1121 00:59:23,910 --> 00:59:26,584 Il dit de résoudre les problèmes de mise en page de l'automobile. 1122 00:59:26,584 --> 00:59:28,000 Désolé, il est coupé en bas. 1123 00:59:28,000 --> 00:59:36,360 Mais si je clique sur ce que, ce que je se est cette pop up-- disparaître. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Qu'est-ce que je obtiens est ce pop up qui me permet d'ajouter des contraintes manquantes. 1126 00:59:51,220 --> 00:59:53,780 Et en faisant qu'il triera alors de verrouiller 1127 00:59:53,780 --> 00:59:56,640 dans la partie centrale de la écran comme je pourrait se attendre. 1128 00:59:56,640 --> 01:00:00,520 >> Or, pour obtenir ce bouton sur dessus d'elle, je ai besoin d'aller à l'éditeur. 1129 01:00:00,520 --> 01:00:05,010 Aller pour intégrer et cliquez sur Navigation Controller. 1130 01:00:05,010 --> 01:00:08,900 Qu'est-ce qui va faire, ce est ce que va ajouter ce tout autre composant à elle, 1131 01:00:08,900 --> 01:00:11,310 mais il fait le lien revenir à mon interface originale. 1132 01:00:11,310 --> 01:00:14,450 Et les détails, encore une fois, nous ne vraiment besoin de se soucier de ce moment. 1133 01:00:14,450 --> 01:00:16,710 Mais je ne veux avoir une barre d'outils en bas. 1134 01:00:16,710 --> 01:00:18,530 Donc, je vais vérifier Spectacles barre d'outils. 1135 01:00:18,530 --> 01:00:21,870 >> Et cela donne dans mon point de vue, qui est maintenant un autre endroit, 1136 01:00:21,870 --> 01:00:23,900 nous pouvons voir qu'il est lié ici. 1137 01:00:23,900 --> 01:00:28,710 Il prévoit désormais une barre d'outils au fond de mon interface. 1138 01:00:28,710 --> 01:00:34,770 Alors maintenant, plutôt que de choisir un vue de l'image, je peux trouver un label, 1139 01:00:34,770 --> 01:00:41,140 ou plutôt un toolbar-- Voyons, où est-ce? 1140 01:00:41,140 --> 01:00:41,890 Quel est son nom? 1141 01:00:41,890 --> 01:00:49,760 Un élément de button-- bar-- item-- sorry-- objet de barre de bouton. 1142 01:00:49,760 --> 01:00:54,590 Plop qu'il ya et appliquer un couple espaces flexibles de chaque côté 1143 01:00:54,590 --> 01:00:57,429 à centrer fait que. 1144 01:00:57,429 --> 01:00:58,970 Alors maintenant, je ai créé mon interface, essentiellement. 1145 01:00:58,970 --> 01:01:01,428 Et je peux lui donner un nom par double-cliquant au sommet 1146 01:01:01,428 --> 01:01:04,880 dire ici et galerie Web et ainsi de suite. 1147 01:01:04,880 --> 01:01:08,100 Maintenant encore, ce sont des éléments qui existent par eux-mêmes. 1148 01:01:08,100 --> 01:01:10,400 Et je dois vous connecter eux de mon code qui 1149 01:01:10,400 --> 01:01:14,297 Je peux le faire par à nouveau apporter jusqu'à ce double icône de cercle, 1150 01:01:14,297 --> 01:01:15,380 évolution de l'aperçu. 1151 01:01:15,380 --> 01:01:18,950 Qui, soit dit en passant, maintenant nous pouvons voir est bien centré et aura l'air bien 1152 01:01:18,950 --> 01:01:23,720 sur une variété de dispositifs. 1153 01:01:23,720 --> 01:01:27,280 >> Basculer vers automatique, qui sera faire apparaître le code ViewController. 1154 01:01:27,280 --> 01:01:29,030 Et maintenant, cette partie est importante. 1155 01:01:29,030 --> 01:01:34,590 Afin de vous connecter ci deux éléments, votre code à l'interface utilisateur, 1156 01:01:34,590 --> 01:01:36,680 vous sélectionnez l'élément vous voulez vous connecter. 1157 01:01:36,680 --> 01:01:39,570 Donc dans ce cas, nous voulez réellement encoder 1158 01:01:39,570 --> 01:01:43,520 changer l'image qui est contenue au sein de ce point de vue de l'image de l'interface utilisateur. 1159 01:01:43,520 --> 01:01:47,070 Donc, si vous contrôlez cliquez partir la vue de l'image et glisser, 1160 01:01:47,070 --> 01:01:51,960 vous remarquerez que vous obtenez un petit bar, lorsque vous lâchez tout ce que cette pop 1161 01:01:51,960 --> 01:01:53,550 jusqu'à se produira. 1162 01:01:53,550 --> 01:01:56,470 >> Et il est dit que nous allons créer une connexion. 1163 01:01:56,470 --> 01:01:59,300 Et d'ici, je veux lui donner un nom, quelque chose comme la galerie. 1164 01:01:59,300 --> 01:02:00,240 Appuyez sur Entrée. 1165 01:02:00,240 --> 01:02:03,040 Et cela donne effectivement une galerie de variable appelée 1166 01:02:03,040 --> 01:02:08,600 que je peux ensuite référencer dans mon code pour changer l'image, par exemple. 1167 01:02:08,600 --> 01:02:10,430 Alors, comment est-ce que le code fait regarder? 1168 01:02:10,430 --> 01:02:13,030 Bien plus, je ne veux pas passer trop de temps sur elle. 1169 01:02:13,030 --> 01:02:15,430 Et je vous encourage à télécharger et jeter un oeil. 1170 01:02:15,430 --> 01:02:18,330 Mais l'un des plus aspect important est le code 1171 01:02:18,330 --> 01:02:20,980 qui récupère effectivement une image. 1172 01:02:20,980 --> 01:02:26,470 >> Donc, dans ce cas, je veux pour obtenir au sein de mes photos 1173 01:02:26,470 --> 01:02:28,520 réseau, qui est contenue au sein de ma classe. 1174 01:02:28,520 --> 01:02:33,390 Je veux définir le nom et l'URL cela a été analysé hors de cette JSON. 1175 01:02:33,390 --> 01:02:39,810 En fait poser l'appareil pour obtenir le URL, pour aller chercher l'URL de cela, 1176 01:02:39,810 --> 01:02:44,060 puis récupérer les données à partir de le contenu de cette URL. 1177 01:02:44,060 --> 01:02:49,430 Puis de convertir ces données en une image en passant dans l'image de l'interface utilisateur. 1178 01:02:49,430 --> 01:02:52,880 Encore une fois, ce sont tous les différents types des objets, des différents types de classes. 1179 01:02:52,880 --> 01:02:58,410 >> Et puis, je peux alors placé mon gallery.image égale à celle des données. 1180 01:02:58,410 --> 01:03:00,750 Et ce est une sorte de la viande de celui-ci qui est en fait ensuite 1181 01:03:00,750 --> 01:03:08,250 capable de changer le changement de données l'image de l'un à l'autre. 1182 01:03:08,250 --> 01:03:10,660 Encore une fois, je espère maintenant un grand nombre de constructions 1183 01:03:10,660 --> 01:03:12,240 fera un peu plus de sens. 1184 01:03:12,240 --> 01:03:15,260 Notez qu'il ya une points d'exclamation ici. 1185 01:03:15,260 --> 01:03:19,810 Les points d'exclamation sont essentiellement liée aux optionnels. 1186 01:03:19,810 --> 01:03:22,657 >> Ce que je veux dire, ce est essentiellement que, sans même vérifier 1187 01:03:22,657 --> 01:03:24,490 pour voir se il ya des données au sein de cette option, 1188 01:03:24,490 --> 01:03:27,140 Je vais aller de l'avant et assumer qu'il ya et déballer. 1189 01:03:27,140 --> 01:03:31,340 Ne oubliez pas que nous avons utilisé l'analogie de une sorte de package pour les optionnels 1190 01:03:31,340 --> 01:03:34,700 et nous avons besoin de déballer le emballage et tirez sur les données. 1191 01:03:34,700 --> 01:03:37,570 Le point d'exclamation forces qui se produisent effectivement. 1192 01:03:37,570 --> 01:03:39,590 >> Mais je sais que ce est en sécurité parce que je ai vérifié 1193 01:03:39,590 --> 01:03:42,070 pour voir si les données d'image est égale à zéro, je ai fait vérifier 1194 01:03:42,070 --> 01:03:45,420 pour voir si cela option était, en fait, a échoué. 1195 01:03:45,420 --> 01:03:47,110 Si cela avait, en fait, déjà échoué. 1196 01:03:47,110 --> 01:03:52,450 Et donc je suis sûr qu'une fois que je reçois à ce point que je peux déballer que les données en toute sécurité. 1197 01:03:52,450 --> 01:03:55,710 Vous pouvez également voir dans la forme d'un point d'interrogation. 1198 01:03:55,710 --> 01:03:59,100 Donc, si nous faisons défiler à l'endroit où je ai doivent effectivement analyser les données. 1199 01:03:59,100 --> 01:04:01,850 >> Alors ne soyez pas rebutés par ce genre de longs noms. 1200 01:04:01,850 --> 01:04:06,580 Vous pouvez trouver dans l'Apple développeur emplacement beaucoup 1201 01:04:06,580 --> 01:04:09,620 des références à l'ensemble de la les objets et tous les procédés 1202 01:04:09,620 --> 01:04:11,170 qui fait que cela soit possible. 1203 01:04:11,170 --> 01:04:15,990 Mais remarquez que ce est essentiellement une fonction où je transmets des données. 1204 01:04:15,990 --> 01:04:18,410 Et je reviens une sorte de données. 1205 01:04:18,410 --> 01:04:24,190 Et je ai besoin de l'utiliser comme mot-clé pour convertir en ce NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Qui est encore, un NSDictionary facultatif. 1207 01:04:26,490 --> 01:04:31,070 Que je ai ensuite besoin de vérifier pour voir si elle existe. 1208 01:04:31,070 --> 01:04:37,130 >> Donc je ne peux utiliser que si laisser égaux réussies analysées, 1209 01:04:37,130 --> 01:04:40,620 alors je sais que ce option contient effectivement certaines données. 1210 01:04:40,620 --> 01:04:43,840 Ou ce que je ai fait ici était de simplement supposer que se il 1211 01:04:43,840 --> 01:04:49,067 avait pas d'erreurs que ce est en fait en toute sécurité. 1212 01:04:49,067 --> 01:04:51,400 Très bien, je tiens à remercier vous tous d'être venus. 1213 01:04:51,400 --> 01:04:53,540 Je sais que ce était beaucoup, mais ce est seulement une heure 1214 01:04:53,540 --> 01:04:55,920 pour parler de certains trucs assez avancé. 1215 01:04:55,920 --> 01:04:59,640 Et alors je espère que vous aurez un chance de télécharger la totalité du code 1216 01:04:59,640 --> 01:05:01,657 et de prendre une meilleure, plus regard approfondi sur elle. 1217 01:05:01,657 --> 01:05:04,240 Sorte de vous convaincre de tous des choses qui se passe. 1218 01:05:04,240 --> 01:05:06,800 Et je tiens à vous remercier tout, à nouveau, d'être venus. 1219 01:05:06,800 --> 01:05:08,760 Et bonne chance dans vos projets finaux. 1220 01:05:08,760 --> 01:05:10,600 Passez une bonne journée. 1221 01:05:10,600 --> 01:05:11,467