1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL ARMENDARIZ: Hallo, Leute, herzlich willkommen auf iOS App-Entwicklung 3 00:00:14,340 --> 00:00:15,020 mit schnellen. 4 00:00:15,020 --> 00:00:15,870 Ich bin Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Ich bin precepter von Computer Wissenschaft hier an der Schule 6 00:00:18,920 --> 00:00:21,200 Technik & angewandte Wissenschaften. 7 00:00:21,200 --> 00:00:24,310 Und schnell ist eigentlich Art eine wirklich nette Sprache. 8 00:00:24,310 --> 00:00:27,190 Und ich habe einige Pläne für heute. 9 00:00:27,190 --> 00:00:31,430 Also während der nächsten Stunde oder so werden wir auf iOS App-Entwicklung selbst zu suchen 10 00:00:31,430 --> 00:00:36,640 mit Xcode und tatsächlich die Entwicklung von einigen sehr einfach, sehr einfache Anwendungen. 11 00:00:36,640 --> 00:00:40,070 Und Blick auf die Weise, dass Sie tatsächlich nehmen die Anwendungen, 12 00:00:40,070 --> 00:00:42,887 und bauen sie, und tatsächlich legte sie auf einem iOS-Gerät. 13 00:00:42,887 --> 00:00:44,970 Einige der Dinge, wir werden nicht zu sehen 14 00:00:44,970 --> 00:00:47,540 Dinge wie sind tatsächlich statt eine Anwendung 15 00:00:47,540 --> 00:00:48,940 und legt es auf den App Store. 16 00:00:48,940 --> 00:00:52,930 Es gibt eine Menge von Tutorials online, dass werden Sie mit diesem Aspekt von ihm zu helfen. 17 00:00:52,930 --> 00:00:56,230 Aber auch, weil, wie Teil der CS50, erhalten Sie 18 00:00:56,230 --> 00:00:59,780 die Apple-Entwicklung anzuschließen Team, CS50 der App-Entwicklungsteam. 19 00:00:59,780 --> 00:01:02,790 Wenn Sie nicht das getan haben und noch Ihnen CS50 verbunden sind, 20 00:01:02,790 --> 00:01:04,810 Ich empfehle, dass Sie tun, weil die 21 00:01:04,810 --> 00:01:08,820 ist, wie Sie in der Lage zu schaffen einige Programme in Xcode, 22 00:01:08,820 --> 00:01:11,890 bauen sie, und tatsächlich legte sie auf einige Ihrer iOS-Geräte 23 00:01:11,890 --> 00:01:14,087 wenn Sie tatsächlich haben eine physische iOS-Gerät. 24 00:01:14,087 --> 00:01:16,670 Wenn Sie nicht über eine physische iOS Gerät, das mehr als in Ordnung ist. 25 00:01:16,670 --> 00:01:19,810 Sie können tatsächlich für iOS zu entwickeln. 26 00:01:19,810 --> 00:01:22,390 Und Xcode hat ein Simulator, der es Ihnen erlaubt 27 00:01:22,390 --> 00:01:26,570 Ihre Anwendung in zu sehen Aktion auf dem Computer. 28 00:01:26,570 --> 00:01:30,440 Aber irgendwie ist eine saubere Sache tatsächlich spielen und interagieren 29 00:01:30,440 --> 00:01:34,235 mit Ihrer Anwendung auf einem Gerät. 30 00:01:34,235 --> 00:01:37,360 So gibt es eine Reihe von Anforderungen zu tatsächlich all dieser Entwicklung. 31 00:01:37,360 --> 00:01:39,151 Einer davon ist, dass müssen Sie einen Mac haben. 32 00:01:39,151 --> 00:01:44,770 Es hat zu laufen 10.9.4 oder neuer um die Entwicklung mit schnell zu tun. 33 00:01:44,770 --> 00:01:47,770 >> Sie können eine frühere verwenden Version zu entwickeln 34 00:01:47,770 --> 00:01:50,810 mit Objective C für iOS und Mac. 35 00:01:50,810 --> 00:01:53,990 Aber ich empfehle, und viele der Beispiele, die wir heute sehen, 36 00:01:53,990 --> 00:01:55,700 verwenden 10.10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Also, wenn Sie noch nicht aktualisiert haben, es ist eine gute Ausrede, um dies zu tun. 38 00:02:00,910 --> 00:02:05,480 Jetzt Xcode 6.1 ist die neueste Version von Die integrierte Entwicklungsumgebung 39 00:02:05,480 --> 00:02:08,979 dass Apple bietet gratis dass Sie off downloaden können die App-Store. 40 00:02:08,979 --> 00:02:11,220 Und ich empfehlen, führen auch die neueste Version. 41 00:02:11,220 --> 00:02:14,700 >> Wenn Sie geschehen, werden eine frühere Version, Xcode 5 und unten gerade 42 00:02:14,700 --> 00:02:16,741 einfach nicht unterstützt schnelle haupt nicht. 43 00:02:16,741 --> 00:02:19,490 Und die Beta-Versionen von sechs, die wurden im Laufe des Sommers veröffentlicht, 44 00:02:19,490 --> 00:02:21,770 Sie unterstützt schnell, aber es gibt war eine enorme Anzahl 45 00:02:21,770 --> 00:02:25,220 von Änderungen in der Sprache, genug so dass der Code, den Sie 46 00:02:25,220 --> 00:02:28,320 Zukunft an, und dass man sich könnte im Internet finden 47 00:02:28,320 --> 00:02:33,294 nicht wirklich richtig kompilieren in diesen früheren Versionen von Xcode. 48 00:02:33,294 --> 00:02:35,460 Also noch einmal, wenn Sie das tun noch nicht einen Entwickler-Konto, 49 00:02:35,460 --> 00:02:38,560 Ich empfehle Ihnen, zu gehen developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Registrieren, ein Entwickler-Konto zu erstellen, und kommen Sie mit den CS50 App-Entwicklungsteam. 51 00:02:42,240 --> 00:02:45,530 Das wird, um Ihnen eine Chance Ihre Anwendungen kompilieren 52 00:02:45,530 --> 00:02:47,840 und sie auf Ihrem Gerät. 53 00:02:47,840 --> 00:02:49,222 OK, also lasst uns loslegen. 54 00:02:49,222 --> 00:02:50,930 Das erste, was wir tun werden ist 55 00:02:50,930 --> 00:02:55,140 um tatsächlich eine sehr einfaches Projekt in Xcode 56 00:02:55,140 --> 00:02:59,530 das wird Sie zulassen einen Antrag stellen. 57 00:02:59,530 --> 00:03:03,170 >> Also, wenn Sie noch nicht über Xcode offen, gehen Sie vor und öffnen Sie sie 58 00:03:03,170 --> 00:03:04,270 und erstellen Sie ein neues Projekt. 59 00:03:04,270 --> 00:03:06,570 Ein besonderes Begrüßungsbildschirm Es öffnet sich und gibt Ihnen 60 00:03:06,570 --> 00:03:08,800 einige Optionen, über das, was es ist, dass Sie tun möchten. 61 00:03:08,800 --> 00:03:12,170 Sagen Sie einfach, dass Sie erstellen möchten ein neues Projekt, eine neue Anwendung. 62 00:03:12,170 --> 00:03:15,650 Dieses Fenster öffnet sich, vorausgesetzt, Sie verwenden Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Gerade jetzt, und für die Dauer des Seminars, 64 00:03:17,650 --> 00:03:19,990 wir werden verwenden Einzelanwendungen Blick, nur 65 00:03:19,990 --> 00:03:22,590 Art von einer Anmeldung um Ihre Füße nass. 66 00:03:22,590 --> 00:03:25,200 Und Sie können sich verzweigen auf eigene Faust von dort. 67 00:03:25,200 --> 00:03:27,660 >> Klicken Sie auf Weiter an dieser Stelle. 68 00:03:27,660 --> 00:03:30,796 Nun, hier gibt es ein paar Dinge, dass Sie vielleicht zu gelangen. 69 00:03:30,796 --> 00:03:32,670 Der Produktname ist der Name des Projekts. 70 00:03:32,670 --> 00:03:34,859 In diesem Fall, ich bin nur werde es nennen Seminar1 71 00:03:34,859 --> 00:03:36,150 denn es ist unser erstes Beispiel. 72 00:03:36,150 --> 00:03:38,290 Name der Organisation, in Dieser Fall ist nur meinen Namen. 73 00:03:38,290 --> 00:03:41,760 Selbstverständlich können Sie ändern, um Ihren eigenen Namen oder den CS50. 74 00:03:41,760 --> 00:03:46,160 Organisations-ID, wenn Sie passieren, um eine Website haben nur nehmen 75 00:03:46,160 --> 00:03:49,940 der Domain-Name in umzukehren, com.yourname. 76 00:03:49,940 --> 00:03:54,200 und dann wird der Name des Produkts, sollte automatisch angezeigt werden 77 00:03:54,200 --> 00:03:55,820 Danach, wenn das Bündel-Kennung. 78 00:03:55,820 --> 00:03:59,200 >> Offensichtlich ist die Sprache, die wir sind werde mit Hilfe werden für heute ist schnell getan. 79 00:03:59,200 --> 00:04:02,590 Sie können natürlich auch verwenden Objective C für das, aber heute wird schnell sein. 80 00:04:02,590 --> 00:04:04,920 Und wir werden jetzt sagen, Universal-Geräte, so 81 00:04:04,920 --> 00:04:06,900 dass es funktioniert sowohl iPad und iPhone. 82 00:04:06,900 --> 00:04:10,040 Und wir werden Kern verlassen Daten ungeprüft zu halten 83 00:04:10,040 --> 00:04:12,830 das Projekt relativ einfach für den Augenblick. 84 00:04:12,830 --> 00:04:14,430 Also lassen Sie uns fortfahren und klicken Sie auf Weiter. 85 00:04:14,430 --> 00:04:16,471 Und es geht um mich zu fragen, Wo möchten Sie sie zu speichern. 86 00:04:16,471 --> 00:04:19,250 Ich werde einfach speichern Sie es auf dem Desktop für den Moment. 87 00:04:19,250 --> 00:04:22,267 >> Na gut, ist so jetzt das, was wird passieren, wenn Sie tatsächlich offen Xcode. 88 00:04:22,267 --> 00:04:24,100 Und beachten Sie, dass die allererste, was Sie sehen, 89 00:04:24,100 --> 00:04:28,770 ist dieses Ausrufezeichen, dass sagt nein Unterzeichnung Identität gefunden. 90 00:04:28,770 --> 00:04:31,520 Ich tat dies mit Absicht auf meinem Computer und ich bin 91 00:04:31,520 --> 00:04:34,220 in der Hoffnung, dass ich zu gehen in der Lage, wirklich zu beheben, 92 00:04:34,220 --> 00:04:37,860 weil ich möchte, dass Sie, wie diese zu sehen, tatsächlich auf Ihrem eigenen Rechner zu arbeiten. 93 00:04:37,860 --> 00:04:40,400 >> Gehen Sie weiter und klicken fix Thema. 94 00:04:40,400 --> 00:04:45,400 Es wird Sie fragen, ob Sie eine haben bestehende Apfel Entwickler-Konto. 95 00:04:45,400 --> 00:04:48,330 Dies ist, wo der Beitritt zur CS50 App-Entwicklungsteam 96 00:04:48,330 --> 00:04:51,240 ist wichtig, damit Sie sich nicht nur eine App Konto, 97 00:04:51,240 --> 00:04:53,690 aber Sie haben auch die Fähigkeit, die Apps zu unterzeichnen 98 00:04:53,690 --> 00:04:56,420 und sie auf Ihrem iOS-Gerät. 99 00:04:56,420 --> 00:04:58,957 Dies ist nicht-- Klick Fix Problem ist nicht notwendig, 100 00:04:58,957 --> 00:05:01,040 wenn Sie gerade dabei, bauen und vor Ort zu entwickeln, 101 00:05:01,040 --> 00:05:03,520 vollständig im iOS Simulator. 102 00:05:03,520 --> 00:05:05,820 >> Aber jetzt werde ich zu entwickeln und sie 103 00:05:05,820 --> 00:05:08,160 auf meinem iPad, was sein wird, Lage, als auch zu senden. 104 00:05:08,160 --> 00:05:10,770 Also ich möchte tatsächlich fügen Sie diese. 105 00:05:10,770 --> 00:05:13,670 Und es wird zu fragen, mich nach meinem Apfel ID. 106 00:05:13,670 --> 00:05:15,700 Also, es wird das sein. 107 00:05:15,700 --> 00:05:18,940 Und ich meine holen Passwort, das hier ist. 108 00:05:18,940 --> 00:05:27,760 Also gib mir nur eine Sekunde, um das zu finden, und kopieren Sie das, und fügen Sie ihn hier. 109 00:05:27,760 --> 00:05:28,580 >> Klicken Sie auf Hinzufügen. 110 00:05:28,580 --> 00:05:31,095 Es wird mich fragen, das Team Ich möchte mitmachen. 111 00:05:31,095 --> 00:05:33,240 Ich werde Ingenieurschule zu tun. 112 00:05:33,240 --> 00:05:35,680 Klicken Sie auf Verbinden. 113 00:05:35,680 --> 00:05:37,780 Hoppla, das ist die falsche. 114 00:05:37,780 --> 00:05:40,730 Lassen Sie uns diese. 115 00:05:40,730 --> 00:05:42,060 Hoffentlich angegebene. 116 00:05:42,060 --> 00:05:44,220 Dass man immer noch nicht funktioniert. 117 00:05:44,220 --> 00:05:46,610 Wir sind aus der guten Lauf hier. 118 00:05:46,610 --> 00:05:48,260 OK, sollte dies ein zu arbeiten. 119 00:05:48,260 --> 00:05:50,816 Schließen Sie nun das. 120 00:05:50,816 --> 00:05:54,450 Jetzt machen wir Schule Engineering, klicken Sie auf Auswahl. 121 00:05:54,450 --> 00:06:00,190 >> Und nun hoffentlich nach einer paar Sekunden can-- OK, 122 00:06:00,190 --> 00:06:02,550 Ich werde zu widerrufen und Anfrage. 123 00:06:02,550 --> 00:06:05,410 Oh Mann, das wird nicht funktionieren. 124 00:06:05,410 --> 00:06:08,890 OK, ich werde ein anderes zu versuchen. 125 00:06:08,890 --> 00:06:11,167 Packen wir hier. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Live-Demos sind mir versagt. 128 00:06:19,310 --> 00:06:22,540 Vielleicht müssen wir nur zurück lokal bauen ganz, 129 00:06:22,540 --> 00:06:25,050 aber das wäre in Ordnung in diesem Fall. 130 00:06:25,050 --> 00:06:28,560 >> Also hier, und das ist eigentlich Arbeits, was wir tun werden, ist nur 131 00:06:28,560 --> 00:06:31,190 erstellen eine sehr einfache Hallo Welt Anwendung. 132 00:06:31,190 --> 00:06:32,340 Also das ist Xcode. 133 00:06:32,340 --> 00:06:37,300 , Und wenn Sie ihn noch nicht gesehen, es kann zunächst ein wenig einschüchternd sein. 134 00:06:37,300 --> 00:06:41,430 Es gibt eine Menge von Scheiben, es gibt eine Menge doodads in verschiedenen Bereichen. 135 00:06:41,430 --> 00:06:44,300 Aber nur erkennen, dass es wirklich mehreren Hauptkomponenten 136 00:06:44,300 --> 00:06:46,580 dieser Entwicklungsumgebung. 137 00:06:46,580 --> 00:06:51,090 Ganz links sind alle Dateien , die für das Programm sind 138 00:06:51,090 --> 00:06:52,997 oder auf Ihr Projekt. 139 00:06:52,997 --> 00:06:55,080 Wir werden um einen Klick auf einigen von ihnen und wir werden 140 00:06:55,080 --> 00:06:57,660 weisen darauf hin, die wichtigsten im Laufe der Zeit. 141 00:06:57,660 --> 00:06:59,650 Auf der rechten Seite haben wir einen Satz von Attributen. 142 00:06:59,650 --> 00:07:02,920 Und all diese Attribute gibt verschiedene Scheiben für die Attribute. 143 00:07:02,920 --> 00:07:06,770 Die Scheiben sind je nach ändern der Kontext der Hauptbereich, die 144 00:07:06,770 --> 00:07:08,290 zufällig in der Mitte sein. 145 00:07:08,290 --> 00:07:11,740 Nun kann der mittlere tatsächlich zeigen Sie eine Vielzahl von Dingen, zum Beispiel 146 00:07:11,740 --> 00:07:13,290 Code selbst. 147 00:07:13,290 --> 00:07:17,070 Oder man könnte in der Tat, wenn have-- Sie auf dem Storyboard klicken Sie die 148 00:07:17,070 --> 00:07:21,270 ist übrigens nur eine grafische Darstellung Ihrer Benutzer 149 00:07:21,270 --> 00:07:25,350 Schnittstelle für Ihre application-- dann Fenster die Attribute 150 00:07:25,350 --> 00:07:27,334 auf der weit rechts tatsächlich zu ändern. 151 00:07:27,334 --> 00:07:29,750 Jetzt gibt es ein paar andere Dinge, die ich möchte darauf hinweisen. 152 00:07:29,750 --> 00:07:33,360 Sie können Art erkunden rund in der Umgebung auf eigene Faust. 153 00:07:33,360 --> 00:07:35,730 Aber eines der Dinge, dass war sehr nützlich 154 00:07:35,730 --> 00:07:38,470 ist diese Taste hier, die oben rechts im Fenster. 155 00:07:38,470 --> 00:07:41,230 Es gibt diese Schaltfläche, sieht wie auf der anderen 156 00:07:41,230 --> 00:07:46,090 ließ es einen Absatz hat gefolgt von zwei Kreise und Art 157 00:07:46,090 --> 00:07:49,540 von zwei Pfeilen voneinander entfernt. 158 00:07:49,540 --> 00:07:52,640 Wenn Sie zwischen dem Schalter Standard-Editor, die 159 00:07:52,640 --> 00:07:55,560 ist ganz links ein, die eine das ist standardmäßig aktiviert, 160 00:07:55,560 --> 00:08:01,040 und die beiden Kreise überlappende einander, was Sie tatsächlich bekommen 161 00:08:01,040 --> 00:08:02,210 ein Doppelfenster-Ansicht. 162 00:08:02,210 --> 00:08:04,240 >> Und das ist eigentlich geht für uns nützlich sein 163 00:08:04,240 --> 00:08:07,330 wenn wir brauchen, um Artikel verlinken in der Benutzeroberfläche zu dem Code. 164 00:08:07,330 --> 00:08:09,330 Und wir werden mehr darüber zu sprechen dass in nur einem Augenblick. 165 00:08:09,330 --> 00:08:12,050 Aber klar, dass, wenn Sie zu erhalten noch Scheiben wie diese, 166 00:08:12,050 --> 00:08:15,830 können Sie Ihren Blick einfach zu vereinfachen ein wenig, indem Sie zurück 167 00:08:15,830 --> 00:08:20,680 Ihren einzigen Editor. 168 00:08:20,680 --> 00:08:21,580 So weit, ist es gut. 169 00:08:21,580 --> 00:08:24,560 Den Sicherheitscode Also im Grunde haben wir der linke, Attribute auf der rechten 170 00:08:24,560 --> 00:08:28,260 und was es ist, wir arbeiten hier im Zentrum. 171 00:08:28,260 --> 00:08:30,390 >> Also hier habe ich geklickt auf der Hauptstoryboard. 172 00:08:30,390 --> 00:08:33,350 Und das Storyboard, wieder ist ein Weg in Xcode 173 00:08:33,350 --> 00:08:38,110 dass Sie tatsächlich erstellen Sie Ihren Benutzer Schnittstelle mit nur per Drag & Drop 174 00:08:38,110 --> 00:08:39,130 Techniken. 175 00:08:39,130 --> 00:08:41,190 Und so für unsere sehr erste Anwendung dieser 176 00:08:41,190 --> 00:08:42,720 Genau das, was wir tun werden. 177 00:08:42,720 --> 00:08:45,950 Wir werden auf dem Sprung sehr weit unten rechts 178 00:08:45,950 --> 00:08:49,900 auf dem Bildschirm, die enthält eine Vielzahl von Bedienelementen 179 00:08:49,900 --> 00:08:53,270 Sie können dann durch Klicken und Ziehen auf Ihre Benutzeroberfläche erstellen. 180 00:08:53,270 --> 00:08:55,550 >> Jetzt alle diese Elemente sind Ansichten genannt 181 00:08:55,550 --> 00:08:57,370 denn sie liefern eine Art Blick. 182 00:08:57,370 --> 00:09:00,190 Es ist eine Bildansicht, für beispielsweise tatsächlich zeigen 183 00:09:00,190 --> 00:09:01,740 ein Bild auf der Benutzerschnittstelle. 184 00:09:01,740 --> 00:09:04,310 Es gibt einen Tisch im Hinblick auf tatsächlich zeigen eine Tabelle. 185 00:09:04,310 --> 00:09:05,190 So weiter und so fort. 186 00:09:05,190 --> 00:09:08,250 Es gibt eine Vielzahl von Ansichten, die Sie hier auswählen. 187 00:09:08,250 --> 00:09:11,100 Also nur für jetzt werden wir um für ein Label zu suchen. 188 00:09:11,100 --> 00:09:13,550 Sie können nur durch blättern alle Listen, die es gibt. 189 00:09:13,550 --> 00:09:15,460 Aber es gibt die Suche Bar am unteren Rand 190 00:09:15,460 --> 00:09:19,460 Das macht es leichter zu identifizieren spezifischen Ansichten, die Sie tatsächlich 191 00:09:19,460 --> 00:09:22,020 wollen in der Benutzeroberfläche ziehen. 192 00:09:22,020 --> 00:09:23,560 >> Gefunden mein Label. 193 00:09:23,560 --> 00:09:28,430 Ich werde es hier ziehen, direkt auf meiner Beispielanwendung. 194 00:09:28,430 --> 00:09:30,130 Genau dort in der Mitte sieht gut aus. 195 00:09:30,130 --> 00:09:33,180 Und ich werde geben "Hallo Welt!" 196 00:09:33,180 --> 00:09:33,810 Drücken Sie die Eingabetaste. 197 00:09:33,810 --> 00:09:34,877 Jetzt habe ich ein Etikett. 198 00:09:34,877 --> 00:09:36,960 Es sieht nicht so aus, wie es ist ganz richtig zentriert. 199 00:09:36,960 --> 00:09:38,500 So kann ich versuchen, neu zu zentrieren sie. 200 00:09:38,500 --> 00:09:42,100 Glücklicherweise bietet diese führt, um die Dinge viel einfacher. 201 00:09:42,100 --> 00:09:44,130 Ich werde versuchen, es zu kompilieren. 202 00:09:44,130 --> 00:09:46,570 Hoffentlich wird es tatsächlich hier zu arbeiten. 203 00:09:46,570 --> 00:09:52,870 Und wenn dies nicht der Fall, in nur einem Augenblick es wird in der Tat erscheinen auf meinem iPad. 204 00:09:52,870 --> 00:09:54,360 Es ist hier genau richtig. 205 00:09:54,360 --> 00:09:55,060 Da ist es. 206 00:09:55,060 --> 00:09:56,590 >> Okay, das ist es. 207 00:09:56,590 --> 00:09:57,160 Wir sind fertig. 208 00:09:57,160 --> 00:09:58,868 Wir haben unsere sehr erstellt erste Anwendung. 209 00:09:58,868 --> 00:10:01,330 Nun offensichtlich ist dies nicht tun. 210 00:10:01,330 --> 00:10:02,280 Es ist nur ein Etikett. 211 00:10:02,280 --> 00:10:07,350 Es gibt keine Verbindung zwischen die Benutzerschnittstelle und der Code. 212 00:10:07,350 --> 00:10:10,130 Also, wenn wir eigentlich wollten um diese Verbindung zu schaffen, 213 00:10:10,130 --> 00:10:14,790 wenn wir wollten eigentlich eine Art haben Kommunikation zwischen den Elementen 214 00:10:14,790 --> 00:10:17,540 , die auf die existieren Bildschirm und der Code, 215 00:10:17,540 --> 00:10:19,810 ermöglicht es uns, zu kontrollieren jene Elemente, dann 216 00:10:19,810 --> 00:10:23,570 wir tatsächlich benötigen, um Blick auf den Code selbst. 217 00:10:23,570 --> 00:10:27,000 >> Also das ist, was heißt ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 Und für insbesondere für Ihre ersten Programme, 219 00:10:30,080 --> 00:10:33,120 das wird die Art sein, Masse der Code, enter-- 220 00:10:33,120 --> 00:10:35,980 wird sich in diesem Dokument hier zu sein. 221 00:10:35,980 --> 00:10:38,390 Es gibt eine Menge Sachen, das ist hier so weit, nicht wahr? 222 00:10:38,390 --> 00:10:42,660 Es gibt Import UI Kit Klasse, außer Kraft zu setzen, [? Funk,?] all diese verschiedenen Dinge. 223 00:10:42,660 --> 00:10:45,820 Und es ist nicht ganz klar, was ist es, dass alles bedeutet. 224 00:10:45,820 --> 00:10:48,570 Werfen wir also einen Schritt zurück weg von Xcode für ein wenig 225 00:10:48,570 --> 00:10:52,420 und Blick auf die Sprache selbst, schnell. 226 00:10:52,420 --> 00:10:56,370 >> Also mit schnellen, war es in Konstruktion und Entwicklung 227 00:10:56,370 --> 00:10:58,645 bei Apple für etwa vier Jahre nach meinem Verständnis. 228 00:10:58,645 --> 00:11:01,270 Und es gibt eine Reihe von Features, darüber, die wirklich nett sind. 229 00:11:01,270 --> 00:11:03,910 Zunächst einmal, es ist zusammen Sprache, genau wie C. 230 00:11:03,910 --> 00:11:06,120 So müssen Sie zunächst kompilieren Sie es und führen Sie es 231 00:11:06,120 --> 00:11:09,580 bevor Sie tatsächlich führen Sie den Code, der zur Folge hat. 232 00:11:09,580 --> 00:11:14,250 Aber es ist im Gegensatz zu C ein interaktives aufgefordert, dass Sie tatsächlich ausgeführt werden kann 233 00:11:14,250 --> 00:11:16,680 und geben Sie beliebige Befehle in. 234 00:11:16,680 --> 00:11:20,280 Und sehr viel wie eine JavaScript-Konsole, denen Sie vertraut sind jetzt, 235 00:11:20,280 --> 00:11:24,506 es tatsächlich werden diejenigen bewerten Befehle und bieten Ihnen die Ausgabe. 236 00:11:24,506 --> 00:11:26,380 Und sie selbst aufgenommen haben dass auf die nächste Stufe 237 00:11:26,380 --> 00:11:29,100 und sie etwas geschaffen haben genannt Spielplätzen in Xcode 238 00:11:29,100 --> 00:11:31,720 , mit denen Sie visuell arbeiten mit Code. 239 00:11:31,720 --> 00:11:34,910 Und wir werden tatsächlich sehen einige Beispiele der, dass in nur ein wenig. 240 00:11:34,910 --> 00:11:41,680 Es wird auf C. C unterliegt basiert sie, weil alle Compiler 241 00:11:41,680 --> 00:11:46,820 erstellen Code aus C und zu erstellen, die Objektcode von ihm. 242 00:11:46,820 --> 00:11:49,240 Aber es ist wirklich Aktien relativ wenig Syntax. 243 00:11:49,240 --> 00:11:50,721 Es wird ziemlich anders aussehen. 244 00:11:50,721 --> 00:11:51,970 Es wird einige Ähnlichkeiten sein. 245 00:11:51,970 --> 00:11:54,140 Aber es sein werden, nicht wenige Unterschiede 246 00:11:54,140 --> 00:11:57,200 im Vergleich zu, sagen wir, JavaScript oder PHP. 247 00:11:57,200 --> 00:11:59,070 Und wir werden diesen Punkt in nur einem Augenblick. 248 00:11:59,070 --> 00:12:01,420 >> Jetzt ist einer der größten Dinge, zu schnell, dass ist schön 249 00:12:01,420 --> 00:12:05,650 das heißt, vor allem im Vergleich bis C, es bedeutete, sicher zu sein. 250 00:12:05,650 --> 00:12:08,100 Alles darin ist gemeint, sehr stark eingetippt werden. 251 00:12:08,100 --> 00:12:10,780 In der Tat ist es fast ärgerlich auf den ersten, wenn Sie zum ersten 252 00:12:10,780 --> 00:12:15,610 Beginn der Arbeit mit schnellen, wie viel es erzwingt Typen überall. 253 00:12:15,610 --> 00:12:17,860 Alles, was ein String ist muss eine Zeichenkette sein. 254 00:12:17,860 --> 00:12:22,100 Es ist sehr schwierig, der Konvertit sortieren sie zu zwingen, oder es in eine andere Form. 255 00:12:22,100 --> 00:12:23,800 >> Und wieder werden wir Beispiele dafür zeigen. 256 00:12:23,800 --> 00:12:26,830 Aber letztlich erkennen, dass Damit ist gemeint, um Sie zu schützen, 257 00:12:26,830 --> 00:12:32,010 und von Ihnen Ich meine den Code aus Absturz in eine schreckliche Art und Weise, wenn 258 00:12:32,010 --> 00:12:34,330 Sie haben eine Art von übereinstimmende Typ. 259 00:12:34,330 --> 00:12:36,040 Und wieder, mit ihm zu arbeiten. 260 00:12:36,040 --> 00:12:40,210 Weil es frustrierend, auf den ersten wie Sie versuchen, genau herauszufinden, warum 261 00:12:40,210 --> 00:12:43,070 Sie bekommen diese ungewöhnliche Fehler, die sich mit Typen. 262 00:12:43,070 --> 00:12:45,350 Aber es wird sich lohnen am Ende. 263 00:12:45,350 --> 00:12:47,267 >> Es ist mit einer automatischen befassen Speicherverwaltung, 264 00:12:47,267 --> 00:12:49,100 so nicht mehr tun Sie müssen mit Dingen umzugehen 265 00:12:49,100 --> 00:12:51,400 wie malloc und free und alle der diese Art von Dingen. 266 00:12:51,400 --> 00:12:53,066 Und es ist auch für die Allgemeinheit entwickelt. 267 00:12:53,066 --> 00:12:58,360 So, während wir eine Xcode zu bedienen erstellen iOS-Apps und Mac-Anwendungen, 268 00:12:58,360 --> 00:13:00,380 wir können es einfach verwenden, als Skriptsprache. 269 00:13:00,380 --> 00:13:03,660 Und so können wir es irgendwie verwenden der anstelle von PHP oder statt 270 00:13:03,660 --> 00:13:07,800 Python tatsächlich schnell zu analysieren und verarbeiten 271 00:13:07,800 --> 00:13:09,800 Einige Daten, die wir auf unserem Computer zu haben. 272 00:13:09,800 --> 00:13:13,290 >> Es hat eine Vielzahl von modernen Features, Extras, Wandlungsfähigkeit, 273 00:13:13,290 --> 00:13:17,900 Generika, Verschlüsse, und viele dieser Dinge, die Sie möglicherweise nicht kennen kann. 274 00:13:17,900 --> 00:13:22,810 Und es ist einfach irgendwie ein unglücklicher Teil der Sprache, dass einige dieser 275 00:13:22,810 --> 00:13:26,700 Art futuristischen, modernen Elemente, enthalten sind, in die Elemente 276 00:13:26,700 --> 00:13:34,520 so tief verwurzelt, dass ich eigentlich will müssen lernen Sie ein wenig CS50.5. 277 00:13:34,520 --> 00:13:37,305 >> Wir müssen ein bisschen mehr erfahren über einige der Features, um 278 00:13:37,305 --> 00:13:40,180 um wirklich zu verstehen, was los ist weiter und so, dass man bei Code aussehen 279 00:13:40,180 --> 00:13:42,450 und nicht das Gefühl, völlig verloren. 280 00:13:42,450 --> 00:13:44,820 Und Sie werden sehen, was ich meine durch, dass in nur einer Minute. 281 00:13:44,820 --> 00:13:47,830 OK, so let's-- genug davon Art theoretische Zeug. 282 00:13:47,830 --> 00:13:52,450 Lassen Sie uns eigentlich betrachten unsere erste schnelle Programm. 283 00:13:52,450 --> 00:13:53,590 Es ist eine Zeile Code. 284 00:13:53,590 --> 00:13:57,690 Zeile 14 hier, es sagt Druck l n hallo CS50. 285 00:13:57,690 --> 00:14:01,160 >> Also gibt es ein paar Dinge, die ist sehr unterschiedliche diesen Vergleich 286 00:14:01,160 --> 00:14:04,140 die Dinge, die Sie vielleicht sein von C verwendet wird, zum Beispiel. 287 00:14:04,140 --> 00:14:08,390 Einer davon ist, dass es keinen intmain, gibt es keinen Abschnitt gehören, 288 00:14:08,390 --> 00:14:10,790 es gibt nichts von diesem Extramaterial. 289 00:14:10,790 --> 00:14:13,790 Das sind, wie Standard- I / O, wie die Bibliotheken 290 00:14:13,790 --> 00:14:16,580 dass die tatsächlich erbringen Standard-Features der Sprache, 291 00:14:16,580 --> 00:14:19,180 werden automatisch als inbegriffen Teil der Standardbibliothek Swifts 292 00:14:19,180 --> 00:14:20,680 und die automatisch importiert werden. 293 00:14:20,680 --> 00:14:23,740 Sie müssen nicht zu tun, dass import manuell. 294 00:14:23,740 --> 00:14:27,360 >> Intmain nicht wegen existieren die wichtigste Anlaufstelle für den Code 295 00:14:27,360 --> 00:14:29,470 ist eigentlich auf die Anfang des Codes. 296 00:14:29,470 --> 00:14:32,000 Also jeder Code, die Sie haben ab Beginn 297 00:14:32,000 --> 00:14:34,940 wird tatsächlich zu Beginn ausgeführt werden. 298 00:14:34,940 --> 00:14:36,520 Also das ist wirklich stark vereinfacht. 299 00:14:36,520 --> 00:14:38,470 Beachten Sie auch, dass es kein Semikolon. 300 00:14:38,470 --> 00:14:41,040 Es gibt keine Semikolons in dieser Sprache. 301 00:14:41,040 --> 00:14:43,261 Sie stellen eine Erklärung in einer eigenen Zeile 302 00:14:43,261 --> 00:14:45,510 und dann wird die nächste Zeile steht für die andere Aussage. 303 00:14:45,510 --> 00:14:47,420 Wenn Sie setzen wollen mulitiple Aussagen online, 304 00:14:47,420 --> 00:14:49,086 dann muss man es durch ein Semikolon zu trennen. 305 00:14:49,086 --> 00:14:50,940 Aber in den meisten Fällen, für guten Stil, wir sind 306 00:14:50,940 --> 00:14:56,530 nie zu Semikolons für sehen Der Zweck der Trenn Aussagen 307 00:14:56,530 --> 00:14:58,420 in schnell. 308 00:14:58,420 --> 00:14:59,820 Wie funktioniert das eigentlich? 309 00:14:59,820 --> 00:15:04,080 Gut sehr ähnlich wie wir C tatsächlich haben, dies zu kompilieren. 310 00:15:04,080 --> 00:15:10,640 Und so können wir, dass durch die Verwendung zu tun schnelle c und dann 1.Swift. 311 00:15:10,640 --> 00:15:13,850 Und dann nach ein paar Minuten dies kompilieren 312 00:15:13,850 --> 00:15:16,340 und dann kann ich einen Artikel laufen. 313 00:15:16,340 --> 00:15:19,691 Und als es einfach sagen: "Hallo CS50." 314 00:15:19,691 --> 00:15:20,690 Awesome, so dass wir gehen. 315 00:15:20,690 --> 00:15:22,273 Es ist unser erstes Hallo Welt Programm. 316 00:15:22,273 --> 00:15:24,790 Kommen wir nun zur Nummer zwei. 317 00:15:24,790 --> 00:15:30,450 >> Jetzt in this-- das hat sich geändert leicht, denn während normalerweise Sie 318 00:15:30,450 --> 00:15:34,720 do-- in der Tat immer haben Sie zu Kompilieren einer raschen Anwendung, bevor Sie 319 00:15:34,720 --> 00:15:37,180 tatsächlich ausgeführt es-- ein der herausragenden Merkmale 320 00:15:37,180 --> 00:15:40,230 dass ich angespielt, bevor war, dass schnelle tatsächlich in Art verwendet werden 321 00:15:40,230 --> 00:15:43,390 einer Pseudo-Interpretationsmodus gibt ist in der Tat wie ein Dolmetscher. 322 00:15:43,390 --> 00:15:46,690 Aber was dies tun, ist es ist in der Tat eine schnelle Anwendung 323 00:15:46,690 --> 00:15:47,520 dass Sie ausführen können. 324 00:15:47,520 --> 00:15:51,050 >> So zum Beispiel, wenn Sie gerade Art hier schnell, was passieren wird 325 00:15:51,050 --> 00:15:52,330 ist, dass Sie eine Eingabeaufforderung zu erhalten. 326 00:15:52,330 --> 00:15:59,040 Und Sie können Ihre rasche geben Code, drucken hallo, und führen Sie es. 327 00:15:59,040 --> 00:16:01,867 Und es wird tatsächlich print-- gut, hat es in diesem Fall nicht zu drucken 328 00:16:01,867 --> 00:16:04,450 weil es gedruckt, um zentriert aus, was hier nicht sichtbar. 329 00:16:04,450 --> 00:16:06,660 Es ist aber tatsächlich in der Lage zu funktionieren. 330 00:16:06,660 --> 00:16:09,580 Und so in diesem Fall, ich bin nur würde dies als ein Skript verwenden. 331 00:16:09,580 --> 00:16:11,259 Und ich kann tatsächlich diesen Code ausführen es. 332 00:16:11,259 --> 00:16:13,800 So ist die Art, wie ich tatsächlich ausgeführt es wird etwas unterschiedlich sein, 333 00:16:13,800 --> 00:16:15,710 aber Sie werden, dass in nur einem Augenblick zu sehen. 334 00:16:15,710 --> 00:16:18,890 Nun, in diesem Fall, was wir zu tun ist, zunächst eine Variable zu definieren. 335 00:16:18,890 --> 00:16:22,160 Also das ist, wie wir definieren eine Variable in schnellen, 336 00:16:22,160 --> 00:16:25,900 wird wir das Schlüsselwort let, gefolgt durch den Namen der Variablen, 337 00:16:25,900 --> 00:16:29,280 und wir dann bieten einige Initialisieren von Daten optional. 338 00:16:29,280 --> 00:16:34,660 Also dieser Fall wir definieren eine Konstante namens Name, 339 00:16:34,660 --> 00:16:37,775 und wir werden, die im Einsatz der Ausgang der Druckzeile 340 00:16:37,775 --> 00:16:39,590 ganz unten, hallo Namen. 341 00:16:39,590 --> 00:16:43,260 >> Nun beachtet, dass anstatt% s, können wir den Namen dieses kapseln 342 00:16:43,260 --> 00:16:49,960 Variable in / () und in der Lage, verketten im Inhalt dieses 343 00:16:49,960 --> 00:16:51,790 String in dieser Zeichenfolge. 344 00:16:51,790 --> 00:16:56,510 Jetzt im Gegensatz zu C-String ist ein tatsächlichen realen Typ in schnell. 345 00:16:56,510 --> 00:16:59,240 Und so ist es neben sitzt ints und neben 346 00:16:59,240 --> 00:17:02,220 verdoppelt sich sehr leicht und natürlich im Vergleich 347 00:17:02,220 --> 00:17:05,450 einige der anderen Sprachen, die wir gesehen haben. 348 00:17:05,450 --> 00:17:07,980 Also das würde tatsächlich funktionieren wie man es erwarten würde. 349 00:17:07,980 --> 00:17:10,540 >> Ich kann 2.swift laufen. 350 00:17:10,540 --> 00:17:14,390 Und wir sehen, dass mein Name ist tatsächlich gespleißt in "Hallo Dan." 351 00:17:14,390 --> 00:17:16,050 OK, awesome. 352 00:17:16,050 --> 00:17:17,485 Bewegen Sie sich auf die Nummer drei. 353 00:17:17,485 --> 00:17:19,359 Jetzt war es ein wenig einer Notlüge, dass ich 354 00:17:19,359 --> 00:17:23,369 sagte, dass die Art, wie wir erklären, Variablen war es, das Schlüsselwort let verwenden. 355 00:17:23,369 --> 00:17:27,640 So oft, wie Sie vielleicht können Sie tun wollen nutzen lassen, da, was das bedeutet 356 00:17:27,640 --> 00:17:29,280 ist es eine Konstante definiert. 357 00:17:29,280 --> 00:17:33,010 Und das sagt schnell, dass es optimieren Sie die Geschwindigkeit Ihrer Anwendung 358 00:17:33,010 --> 00:17:36,230 weil er weiß, dass Variable wird sich nicht ändern. 359 00:17:36,230 --> 00:17:38,760 >> So bewerten sorgfältig wenn du gehst zu verwenden sind 360 00:17:38,760 --> 00:17:41,382 eine Variable für das Zwecke, sie zu ändern. 361 00:17:41,382 --> 00:17:43,340 Und wenn Sie zu gehen erstellen Sie eine Variable nur 362 00:17:43,340 --> 00:17:47,010 um einige Daten zu halten, und das ist nicht wirklich ändern würde. 363 00:17:47,010 --> 00:17:50,150 Also das Konzept der Unveränderlichkeit, es ist nicht wirklich ändern würde, 364 00:17:50,150 --> 00:17:53,740 ist wichtig, auch als weit unten wie der Definition von Variablen. 365 00:17:53,740 --> 00:17:56,870 So, hier haben wir einen Namen definiert, lassen Name, und in diesem Fall 366 00:17:56,870 --> 00:18:02,120 es ist eine Konstante, der Typ, dass String, und es ist gleich Dan. 367 00:18:02,120 --> 00:18:05,580 >> Während also im Stand der Version, infers-- es und "es" 368 00:18:05,580 --> 00:18:08,220 Ich meine swift-- schnell leitet den Datentyp 369 00:18:08,220 --> 00:18:10,850 dass wir in der Variablen eingegeben haben. 370 00:18:10,850 --> 00:18:12,930 In diesem Fall können wir explizit sein. 371 00:18:12,930 --> 00:18:17,590 Also lassen Sie dann den Namen dieser Variable Name, dann ein Doppelpunkt. 372 00:18:17,590 --> 00:18:21,350 Und nach dem Doppelpunkt tun wir die Art der Daten. 373 00:18:21,350 --> 00:18:24,694 So ist es nicht mehr int Namen oder string name oder so ähnlich. 374 00:18:24,694 --> 00:18:26,860 Aber anstatt lassen Label sind wir Definieren, ob 375 00:18:26,860 --> 00:18:29,090 es ist konstant oder variabel, gefolgt von dem Namen, 376 00:18:29,090 --> 00:18:31,870 gefolgt von der Art gegebenenfalls. 377 00:18:31,870 --> 00:18:34,730 >> Also in diesem Fall wir die Definition dieser Name ist ein String. 378 00:18:34,730 --> 00:18:35,790 Wir sagen, ist Dan. 379 00:18:35,790 --> 00:18:39,270 Und jetzt habe ich eine andere Variable, in diesem Fall, es heißt Label. 380 00:18:39,270 --> 00:18:42,090 Beachten Sie aber, dass es mit dem Schlüsselwort var vorangestellt. 381 00:18:42,090 --> 00:18:44,430 Die Schlüsselwort var Mittel dass diese Variable kann 382 00:18:44,430 --> 00:18:48,720 zu einem späteren Zeitpunkt geändert werden, in Zeit, irgendwo in den Code 383 00:18:48,720 --> 00:18:52,480 können wir tatsächlich zu ändern, und es wird uns keine bestimmten Fehler. 384 00:18:52,480 --> 00:18:56,760 >> Wir können Standard-Verkettung zu tun Betreiber hier mit dem Pluszeichen 385 00:18:56,760 --> 00:19:00,130 tatsächlich fügen Sie unsere Namen in dieser Zeichenfolge. 386 00:19:00,130 --> 00:19:02,921 Und dann können wir drucken wie wir gesehen haben eben noch. 387 00:19:02,921 --> 00:19:04,920 Lassen Sie uns jetzt sagen, dass Sie wollen, um eine Variable zu erstellen 388 00:19:04,920 --> 00:19:06,586 aber Sie nicht möchten, dass es noch zu initialisieren. 389 00:19:06,586 --> 00:19:08,590 Sie haben noch keinen wollen setzen alle Daten darin. 390 00:19:08,590 --> 00:19:11,760 Nun muss man sagen, geschickter was die Art der Daten 391 00:19:11,760 --> 00:19:16,430 sein wird, bevor du kannst tatsächlich definieren Sie es ordnungsgemäß. 392 00:19:16,430 --> 00:19:20,360 >> Also in diesem Fall, wenn wir definiert haben eine Variable namens Grade wir müssen 393 00:19:20,360 --> 00:19:24,450 ausdrücklich zu seiner Art, denn es kann nicht schließen, gerade auf der Suche 394 00:19:24,450 --> 00:19:27,300 am initialisierte Daten dass Sie auf dem es. 395 00:19:27,300 --> 00:19:30,050 Es gibt uns eine Fehlermeldung, wenn Sie nur Typ var Klasse, zum Beispiel, 396 00:19:30,050 --> 00:19:31,830 weil es keine Art daher. 397 00:19:31,830 --> 00:19:33,353 Also grade = 100. 398 00:19:33,353 --> 00:19:35,790 So daß 100 eine ganze Zahl ist, es passt sehr gut in die. 399 00:19:35,790 --> 00:19:36,998 Es wird weiterhin funktionieren. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Wir sehen, wie wir dann Dies kann in verketten. 402 00:19:43,022 --> 00:19:44,730 Nun könnte man sein versucht, wenn Sie tatsächlich 403 00:19:44,730 --> 00:19:48,610 wollte die verketten Klasse in eine andere Textzeichenfolge, 404 00:19:48,610 --> 00:19:52,560 in eine andere Zeichenfolge, die Sie gerade würde verwenden die gleiche Verkettung Betreiber. 405 00:19:52,560 --> 00:19:54,630 Und daß normalerweise wahr sein. 406 00:19:54,630 --> 00:20:00,540 Doch schnell wird es nicht möglich, implizit ändern die Art der Daten. 407 00:20:00,540 --> 00:20:03,440 So dass in diesem Fall diese Linie, 25, schlägt fehl 408 00:20:03,440 --> 00:20:06,650 weil Grade ist ein Integer und kein String. 409 00:20:06,650 --> 00:20:08,760 Und so gibt es ein Missverhältnis eingestellt von Typen. 410 00:20:08,760 --> 00:20:11,780 So haben Sie explizit zu sein, wenn Sie diese Daten ändern möchten, 411 00:20:11,780 --> 00:20:14,080 wenn Sie, dies zu zwingen wollen Daten in einer anderen Art 412 00:20:14,080 --> 00:20:17,250 und sagen: OK, ich will zu nehmen diese Sorte, die eine ganze Zahl ist, 413 00:20:17,250 --> 00:20:19,050 und wandelt es in einen String. 414 00:20:19,050 --> 00:20:23,970 >> Also habe ich eine Kapital s String nehmen alle die Arten, werden Sie feststellen, werden aktiviert, 415 00:20:23,970 --> 00:20:26,280 Int, Double, String, so weiter und so fort. 416 00:20:26,280 --> 00:20:28,930 Alle von ihnen werden aktiviert nur um die Dinge einfacher. 417 00:20:28,930 --> 00:20:32,240 Und wir sagen, zu nutzen String hinein Klasse übergeben. 418 00:20:32,240 --> 00:20:35,020 Und es wird eine zu erstellen String aus dieser ganzen Zahl. 419 00:20:35,020 --> 00:20:37,970 Und dann haben wir verketten kann die beiden sehr schön. 420 00:20:37,970 --> 00:20:40,500 Sie haben Fragen zu diesem Material so weit? 421 00:20:40,500 --> 00:20:43,770 Alles klar, lass uns pflügen bis auf Platz vier. 422 00:20:43,770 --> 00:20:47,870 >> Lassen Sie uns nun über einige erweiterte sprechen Strukturen wie Arrays und Schleifen. 423 00:20:47,870 --> 00:20:54,920 Und im Gegensatz zu C, Arrays in schnellen nicht durch Zeiger dargestellt. 424 00:20:54,920 --> 00:20:58,730 Zeiger in schnellen, obwohl sie vorhanden sind, genannt 425 00:20:58,730 --> 00:21:02,840 wie unsichere Zeiger oder einige ähnliche Art wie diese, 426 00:21:02,840 --> 00:21:04,950 sie nicht, um Sie in der Regel ausgesetzt. 427 00:21:04,950 --> 00:21:07,300 So wird es sehr schwierig für Sie zu manipulieren 428 00:21:07,300 --> 00:21:10,020 der Speicher direkt von Ihrem Computer. 429 00:21:10,020 --> 00:21:11,670 >> So Arrays sind nur ein Datentyp. 430 00:21:11,670 --> 00:21:16,830 Und sie sind mit dieser Art verwiesen von heute Standard eckige Klammer-Notation 431 00:21:16,830 --> 00:21:18,280 dass Sie bisher gesehen haben. 432 00:21:18,280 --> 00:21:21,130 Aber wenn Sie wirklich wollen, definieren einen Typ einer Variablen 433 00:21:21,130 --> 00:21:24,330 als eine Anordnung von einigen besondere Art, dann 434 00:21:24,330 --> 00:21:27,150 bringe diese Art in eckigen Klammern. 435 00:21:27,150 --> 00:21:30,260 Also, was ich hier sage, ist, dass Ich erstelle eine Variable mit dem Namen 436 00:21:30,260 --> 00:21:33,930 Noten vom Typ int-Array. 437 00:21:33,930 --> 00:21:37,380 Und ich bin Einstellung, dass gleich etwas initialisierte Daten, die in diesem Fall 438 00:21:37,380 --> 00:21:42,960 100, 0, 90, 85, die nur eine ist Auflistung von beliebigen Typen hier. 439 00:21:42,960 --> 00:21:46,480 Jetzt in diesem Fall ich konnte, denken Sie daran, nehmen Sie die Art, 440 00:21:46,480 --> 00:21:49,580 und es wäre in der Lage, es zu schließen, auf der Basis der initialisierten Daten. 441 00:21:49,580 --> 00:21:51,990 Aber wenn ich diese entfernt und Ich brauchte, um sie später festgelegt, 442 00:21:51,990 --> 00:21:56,840 dann müsste ich, um sicherzustellen, dass ich die Art gibt. 443 00:21:56,840 --> 00:21:58,750 Also gut, lassen Sie uns nun zusammen. 444 00:21:58,750 --> 00:22:03,010 Also haben wir can-- Arrays bieten uns eine Vielzahl 445 00:22:03,010 --> 00:22:07,130 von Methoden durch diese Punktnotation in sind Sie wahrscheinlich jetzt kennen. 446 00:22:07,130 --> 00:22:10,360 So grades.count zB sagt uns, genau die Anzahl 447 00:22:10,360 --> 00:22:13,680 von Elementen, die sind innerhalb dieses Array enthalten. 448 00:22:13,680 --> 00:22:17,260 >> Wenn ich will, additional-- hinzufügen jetzt feststellen, dass es sich um eine var 449 00:22:17,260 --> 00:22:20,140 und nicht-- dies ist eine Variable und keine Konstante, die 450 00:22:20,140 --> 00:22:24,410 bedeutet, dass ich den Inhalt zu ändern dieses Arrays kann ich Objekte hinzufügen. 451 00:22:24,410 --> 00:22:28,870 Aber ich kann nicht einfach sagen Noten und dann in eckigen Klammern 452 00:22:28,870 --> 00:22:33,280 vier, denn das wird ein aus Grenzen Fehler in diesem Fall. 453 00:22:33,280 --> 00:22:36,190 Wenn ich tatsächlich Wechsel die Größe dieses Arrays, 454 00:22:36,190 --> 00:22:41,140 Ich habe, um den Punkt Append Methode zu verwenden, addieren etwas auf, um ganz am Ende des es. 455 00:22:41,140 --> 00:22:46,900 Ich kann aber Wechsel einzelnen Indizes. 456 00:22:46,900 --> 00:22:48,920 >> Also habe ich Klassen verwenden und dann in eckigen Klammern 457 00:22:48,920 --> 00:22:52,480 Null, diese erste Index manipulieren und so weiter, wie Sie normalerweise erwarten würde. 458 00:22:52,480 --> 00:22:56,530 Und ich kann das gleiche, um tatsächlich tun die Daten von dem Empfangs sowie. 459 00:22:56,530 --> 00:23:00,420 Jetzt gibt es auch eine Art von Phantasie Verfahren dies zu tun, Noten und equals 460 00:23:00,420 --> 00:23:02,525 und dann noch einen Index, was wird append-- 461 00:23:02,525 --> 00:23:04,400 oder nicht eine andere index-- aber eine andere Liste, die 462 00:23:04,400 --> 00:23:07,340 wird diese Liste anzuhängen an der Rückseite der Noten. 463 00:23:07,340 --> 00:23:09,780 Und die Noten werden enthalten dann alles. 464 00:23:09,780 --> 00:23:13,850 Aber das ist eine Art extra Sache dass ich nur zeigen Ihnen, zum Spaß. 465 00:23:13,850 --> 00:23:14,910 >> Jetzt gibt es eine for-Schleife. 466 00:23:14,910 --> 00:23:18,970 Und dies ist der Beginn in dem Dinge beginnen, ein wenig ändern. 467 00:23:18,970 --> 00:23:22,920 Beachten Sie, wie diese für die Schleife anders als zum Schleifen in C 468 00:23:22,920 --> 00:23:26,470 Jetzt werde ich beachten Sie, dass for-Schleifen in Swift kann 469 00:23:26,470 --> 00:23:30,650 gemacht, um wie for-Schleifen in C aussehen werden, aber es gibt eine Menge von mehr nützliche Konstrukte 470 00:23:30,650 --> 00:23:37,840 daß im wesentlichen überflüssig für var i gleich 0 Semikolon i 471 00:23:37,840 --> 00:23:40,340 weniger als ausführlich, so weiter und so fort, oder? 472 00:23:40,340 --> 00:23:42,940 Und dieses Konstrukt ist nur einer von ihnen. 473 00:23:42,940 --> 00:23:49,030 >> Für Index ist neuer Index Variable, in diesem Fall im Bereich. 474 00:23:49,030 --> 00:23:52,730 Und was ich sage ist, dass es einen Bereich von 0 bis hin zu 475 00:23:52,730 --> 00:23:55,870 jedoch nicht einschließlich grades.count. 476 00:23:55,870 --> 00:23:58,470 Also das Punkt Punkt weniger als-Zeichen repräsentiert 477 00:23:58,470 --> 00:24:05,040 ein Wertebereich von Null ausgehend den ganzen Weg bis zu grades.count minus 1. 478 00:24:05,040 --> 00:24:07,070 Es gibt einen separaten Betreiber, die es gibt, 479 00:24:07,070 --> 00:24:13,320 welcher Punkt Punkt Punkt ist, das wäre bedeuten, dass ich den Bereich der Null 480 00:24:13,320 --> 00:24:16,310 zu Klassen zählen inklusive. 481 00:24:16,310 --> 00:24:19,130 >> Aber in diesem Fall, da diese Arrays sind Null-Index, die wir selbstverständlich 482 00:24:19,130 --> 00:24:23,290 wollen nicht, um unterwegs maximale Anzahl von Noten. 483 00:24:23,290 --> 00:24:26,390 Ich kann die Klassen zusammenfassen, wie die Dir evtl. erwarten, und Ausgangs all dieses Zeug. 484 00:24:26,390 --> 00:24:29,620 OK, bewegen auf. 485 00:24:29,620 --> 00:24:32,270 Lassen Sie uns nun über Funktionen sprechen. 486 00:24:32,270 --> 00:24:35,465 Um eine Funktion zu definieren Sie funk Schlüsselwort verwenden. 487 00:24:35,465 --> 00:24:38,090 Und wieder, in Swift müssen Sie sehr vorsichtig sein mit der Art. 488 00:24:38,090 --> 00:24:41,530 Das Sie auf dem es Parameter durch Definieren zB 489 00:24:41,530 --> 00:24:45,440 der Name des Parameters und dann in Colin, die Art der Daten 490 00:24:45,440 --> 00:24:47,690 Sie erwarten, dass Parameter zu übernehmen. 491 00:24:47,690 --> 00:24:50,700 >> Also in diesem Fall haben wir eine Funktion aufgerufen Druck Klasse zählen. 492 00:24:50,700 --> 00:24:54,630 Es übernimmt eine Variable namens Notenbuch, oder vielmehr ein Parameter namens Notenbuch. 493 00:24:54,630 --> 00:24:59,267 Und wir erwarten, dass die Notenbuch um eine Anordnung von Zahlen sein. 494 00:24:59,267 --> 00:25:01,350 Wenn das Notenbuch leer ist, wir werden eine Sache zu drucken. 495 00:25:01,350 --> 00:25:06,090 Sonst werden wir drucken Sie die Anzahl von Typen, die diese tatsächlich. 496 00:25:06,090 --> 00:25:09,470 >> Nun, wenn wir zurückkehren wollen einige Wert, dann ist der Weg 497 00:25:09,470 --> 00:25:14,595 dass wir ändern diese Definition um tatsächlich mit diesem Pfeil Stichwort, 498 00:25:14,595 --> 00:25:16,870 oder diesen Pfeil Signifikanten zu bedienen. 499 00:25:16,870 --> 00:25:19,440 Also hier werden wir definieren eine Funktion namens Durchschnitt. 500 00:25:19,440 --> 00:25:21,940 Wir werden eine Liste von Zahlen zu akzeptieren. 501 00:25:21,940 --> 00:25:25,430 Und wir werden eine Rückkehr Doppel, die hoffentlich 502 00:25:25,430 --> 00:25:31,270 ist der Mittelwert dieser Anordnung. 503 00:25:31,270 --> 00:25:34,570 Und um das zu tun, um tatsächlich berechnen eine durchschnittliche, 504 00:25:34,570 --> 00:25:38,651 werden wir eine Summe, und wir werden von Natürlich Fassend alle Objekte 505 00:25:38,651 --> 00:25:39,400 in diesem Array. 506 00:25:39,400 --> 00:25:41,480 >> Beachten Sie, dass es gibt eine neue Stil der for-Schleife hier. 507 00:25:41,480 --> 00:25:45,450 Wir haben nicht explizit zu sein Iteration über jedes einzelne Element, 508 00:25:45,450 --> 00:25:48,280 aber wir können stattdessen sagen Klasse und Notenbuch, Bedeutung 509 00:25:48,280 --> 00:25:50,930 daß für jedes einzelne Artikel, die wir in diesem, 510 00:25:50,930 --> 00:25:53,482 vor, dass die Artikel in dieser Variable namens Klasse. 511 00:25:53,482 --> 00:25:54,940 Und ich möchte etwas zu tun. 512 00:25:54,940 --> 00:26:00,350 Also werde ich all diese Daten zusammenfassen und tatsächlich das Doppelteilung zurück. 513 00:26:00,350 --> 00:26:04,436 >> Jetzt bemerken wieder hier gibt es die Konzept der Ganzzahldivision in Swift. 514 00:26:04,436 --> 00:26:06,810 Wenn Sie Abteilung verdoppeln weil Sie Dezimalstellen möchten, 515 00:26:06,810 --> 00:26:09,460 dann müssen Sie explizit zu sein, nicht nur um die eine Seite, 516 00:26:09,460 --> 00:26:14,030 weil es nicht geht, damit Sie um Daten auf beiden Seiten dieses zu zwingen, 517 00:26:14,030 --> 00:26:17,030 Sie müssen eigentlich selbstverständlich beide Seiten in Doppelzimmer 518 00:26:17,030 --> 00:26:19,440 so dass Sie sehr ausdrücklich darum, sicherzustellen, 519 00:26:19,440 --> 00:26:23,370 daß du tust Doppelteilung. 520 00:26:23,370 --> 00:26:26,150 >> Gehen wir weiter. 521 00:26:26,150 --> 00:26:31,150 Also, wenn ich tatsächlich accept-- wollen so dass in diesem besonderen Beispiel 522 00:26:31,150 --> 00:26:34,260 Dies ist immer noch ein Kommando Linie basierte Anwendung. 523 00:26:34,260 --> 00:26:37,920 Und wir fangen an, einige zu sehen die Einschränkungen des jungen Sprach 524 00:26:37,920 --> 00:26:41,850 in, dass, obwohl wir können Zugriff auf die Argumente mit Hilfe 525 00:26:41,850 --> 00:26:44,940 diese process.arguments, ist es noch nicht die sauberste 526 00:26:44,940 --> 00:26:46,200 Sache, die wir je gesehen haben. 527 00:26:46,200 --> 00:26:49,142 Aber im Grunde Ich ermutige Sie, Zum Sortieren der Blick auf diese Codes 528 00:26:49,142 --> 00:26:51,100 und versuchen, herauszufinden, was genau vor sich geht. 529 00:26:51,100 --> 00:26:55,030 >> Im Grunde, was passiert ist, dass wir nehmen eine Liste von Argumenten 530 00:26:55,030 --> 00:26:57,610 und wurden in Nötigung sie ganzen Zahlen, und dann sind wir 531 00:26:57,610 --> 00:27:03,620 werde das als eine Möglichkeit nutzen, um zu drucken aus dem Durchschnitt der alle unsere Qualitäten. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Umzug auf. 534 00:27:07,350 --> 00:27:11,190 Jetzt gibt es eine andere Art von data-- anderen Datentyp statt Arrays 535 00:27:11,190 --> 00:27:14,940 genannt Wörterbücher, die sehr beliebt sind ähnlich wie Suchlisten oder Hash-Karten 536 00:27:14,940 --> 00:27:18,560 und sind auch ähnliche PHP-assoziative Arrays. 537 00:27:18,560 --> 00:27:20,770 So dass sie die Vorstellung haben, der Schlüssel und Werte. 538 00:27:20,770 --> 00:27:23,780 >> Und sie sind auch mit definierten Diese eckigen Klammer-Notation, 539 00:27:23,780 --> 00:27:26,750 jedoch ist der Unterschied dass Wörterbücher haben 540 00:27:26,750 --> 00:27:29,370 innerhalb der eckigen Klammer, einem Doppelpunkt. 541 00:27:29,370 --> 00:27:33,850 Und der Doppelpunkt trennt die Daten geben, dass ist der Schlüssel und der Wert. 542 00:27:33,850 --> 00:27:38,540 Also in diesem Fall, ich werde zu erstellen ein Wörterbuch, um einige Grade zu akzeptieren. 543 00:27:38,540 --> 00:27:44,200 Und es wird sein, vom Typ string: int, 544 00:27:44,200 --> 00:27:46,940 was bedeutet, dass alle der Tasten gehen, um Zeichenfolgen sein, 545 00:27:46,940 --> 00:27:53,080 und alle Werte derjenigen Tasten gehen, um ganze Zahlen sein. 546 00:27:53,080 --> 00:27:55,780 >> Was dies bedeutet, ist, dass ich kann, dann referenzieren die spezifischen Daten 547 00:27:55,780 --> 00:28:00,490 Ich möchte, dass die Verwendung dieser Schlüssel nicht als mit numerischen Indizes wie ich 548 00:28:00,490 --> 00:28:04,350 würde für ein Standard-Array. 549 00:28:04,350 --> 00:28:06,470 Nun wollen wir sehen, gibt es Eine wichtige Sache 550 00:28:06,470 --> 00:28:10,790 daß Ich möchte auch erwähnen, etwa Dieses spezielle Codesequenz. 551 00:28:10,790 --> 00:28:12,910 Und das ist, dass es eine andere Art von Daten, 552 00:28:12,910 --> 00:28:15,580 oder besser gesagt es gibt diese Idee der Daten, die ist 553 00:28:15,580 --> 00:28:18,340 innerhalb Swift enthaltenen genannt Extras. 554 00:28:18,340 --> 00:28:21,270 >> Und was bedeutet es optionals daß sie die Tatsache anerkennt 555 00:28:21,270 --> 00:28:27,500 dass manchmal Sie nicht zu gehen Holen Sie sich die Daten, die Sie eigentlich erwarten. 556 00:28:27,500 --> 00:28:31,400 Und so, was ich damit meine, ist-- das lassen Schauen Sie sich diese Folge von Code 557 00:28:31,400 --> 00:28:38,910 die durchläuft alle der Argumente, die dieser Code übergeben wurden 558 00:28:38,910 --> 00:28:43,460 und versucht, sie zu konvertieren, versucht in einer Vielzahl von Strings aufgeteilt, 559 00:28:43,460 --> 00:28:47,310 weil es eine sehr übernimmt bestimmte Art von Argument. 560 00:28:47,310 --> 00:28:51,530 Und dann wird es zu versuchen, zu zwingen die Strings, die Zahlen darstellen 561 00:28:51,530 --> 00:28:55,460 in ganzen Zahlen, die Typen sind, dass ich dann berechnen. 562 00:28:55,460 --> 00:28:58,230 >> Also im Grunde bin ich zu gehen Verwenden Sie diese Funktion, Split 563 00:28:58,230 --> 00:29:00,080 existiert in der Swift-Standardbibliothek. 564 00:29:00,080 --> 00:29:03,720 Ich werde es in der übergeben Zeichenfolge, die möchte ich teilen. 565 00:29:03,720 --> 00:29:06,980 Und dann in mit diesem Art von funky-Syntax, die 566 00:29:06,980 --> 00:29:09,670 Ich weiß nicht, ob wir bekommen, aber vielleicht haben wir 567 00:29:09,670 --> 00:29:14,320 tatsächlich geben Sie die genaue Zeichen, die wir zu teilen möchten. 568 00:29:14,320 --> 00:29:16,030 Was bedeutet dies konkret aussehen? 569 00:29:16,030 --> 00:29:18,740 Werfen wir einen Blick auf tatsächlich Sie diesen Code ausführen. 570 00:29:18,740 --> 00:29:22,000 >> So zum Beispiel, sagen wir, ich habe ein Quiz, und ich bekam 50 darauf. 571 00:29:22,000 --> 00:29:23,960 Und ich habe ein psets und Ich habe eine hundert darauf. 572 00:29:23,960 --> 00:29:29,180 Und ich got-- gibt es einen anderen Quiz und ich bekam eine 40 darauf. 573 00:29:29,180 --> 00:29:33,520 Ich schlug ein, und schließlich, was passiert, ist, dass, was er tut 574 00:29:33,520 --> 00:29:37,730 nimmt diese Parameter, Splitting die Saiten an diesen Doppelpunkten, 575 00:29:37,730 --> 00:29:41,390 Erkennen, dass es zwei Elemente in jeder, 576 00:29:41,390 --> 00:29:43,700 und es ist im wesentlichen Verfolgung von jedem. 577 00:29:43,700 --> 00:29:49,226 >> So habe ich in meinem Wörterbuch ein Quiz, dessen Wert wird durch die Zahl 50 dargestellt wird, 578 00:29:49,226 --> 00:29:54,290 Ich habe einen PSET, die den Wert 100 hat, und ein Quiz eine, die einen Wert von 40 hat. 579 00:29:54,290 --> 00:29:57,400 Dann später in der Code, den ich tatsächlich im Durchschnitt alle diese Werte 580 00:29:57,400 --> 00:30:01,160 und listen Sie alle Tasten des dass insbesondere Wörterbuch. 581 00:30:01,160 --> 00:30:03,217 Wichtig dabei ist so dass Sie feststellen können 582 00:30:03,217 --> 00:30:06,050 was geschieht, ist, dass das, was wir tun möchte, ist diese Zeichenfolge nehmen 583 00:30:06,050 --> 00:30:11,450 und teilen Sie es an diesem Charakter, die wir wieder mit diesem Split tun können 584 00:30:11,450 --> 00:30:15,690 Funktion mit dieser Art von interessante Syntax, die hier vorhanden ist. 585 00:30:15,690 --> 00:30:17,880 >> Nur für jetzt davon ausgehen, dass das ist OK. 586 00:30:17,880 --> 00:30:19,980 Wir werden mehr, dies zu betrachten in nur eine kleine Weile. 587 00:30:19,980 --> 00:30:23,230 Aber jetzt gibt es eine interessante Aspekt, dass wir tatsächlich 588 00:30:23,230 --> 00:30:27,250 wollen versuchen, diese zu konvertieren Zeichenkette in eine Ganzzahl. 589 00:30:27,250 --> 00:30:29,720 Aber in anderen Sprachen was passieren könnte, ist, 590 00:30:29,720 --> 00:30:33,440 dass wir wahrscheinlich versuchen würde, es zu tun, und entweder zurück 591 00:30:33,440 --> 00:30:36,185 eine Art Wächter Wert wie negative 592 00:30:36,185 --> 00:30:39,420 oder vielleicht ein null oder so ähnlich. 593 00:30:39,420 --> 00:30:41,070 Oder vielleicht wäre es nur einen Fehler verursacht. 594 00:30:41,070 --> 00:30:42,820 Und wir würden zu haben dann fangen diesen Fehler 595 00:30:42,820 --> 00:30:44,820 und dann versuchen, zu tun etwas basierend auf der Tatsache 596 00:30:44,820 --> 00:30:48,280 dass diese Umwandlung in eine ganze Zahl ist fehlgeschlagen. 597 00:30:48,280 --> 00:30:50,460 Das ist, wo diese Idee von optionals kommt in. 598 00:30:50,460 --> 00:30:56,120 Sie können tatsächlich eine Datentyp, ist ein int Fragezeichen, zum Beispiel. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Das bedeutet, dass dieser ganze Zahl ist in der Tat optional. 601 00:31:01,910 --> 00:31:05,980 Und was passiert, ist, dass es enthalten eine ganze Zahl, oder auch nicht. 602 00:31:05,980 --> 00:31:10,650 Es kann in der Tat, werden diese anderen Idee, ganz genannt nill. 603 00:31:10,650 --> 00:31:14,900 In welchem ​​das bedeutet, dass es kein Wert überhaupt in diese. 604 00:31:14,900 --> 00:31:16,810 Es ist nicht einmal Null, es gibt einfach keinen Wert. 605 00:31:16,810 --> 00:31:18,790 Es gibt absolut keinen Wert dargestellt. 606 00:31:18,790 --> 00:31:21,650 >> Und das ist, was diese Linie 71 tut. 607 00:31:21,650 --> 00:31:25,990 Ist, dass sie sagen, dass ich wollen versuchen, einen Wert einzustellen, 608 00:31:25,990 --> 00:31:31,790 eine Variable namens Klasse, gleich der Umwandlung dieser String in ein int. 609 00:31:31,790 --> 00:31:34,010 Also habe ich die Saite getroffen, diese ersten Komponenten, 610 00:31:34,010 --> 00:31:37,680 oder vielmehr der zweite Komponenten, da dies 611 00:31:37,680 --> 00:31:40,770 Null indiziert dies Zeichenfolge, die ich teilen. 612 00:31:40,770 --> 00:31:42,930 Und ich möchte konvertieren daß auf eine ganze Zahl. 613 00:31:42,930 --> 00:31:46,730 Aber es ist nicht immer gehen kann in der Regel, weil sich vorstellen 614 00:31:46,730 --> 00:31:50,710 was passieren würde, wenn, anstatt Typ eine Anzahl, Typ I natürlich wie asdf. 615 00:31:50,710 --> 00:31:51,534 >> Das wird scheitern. 616 00:31:51,534 --> 00:31:54,200 Es ist nicht wirklich sein wird in der Lage, dass eine Ganzzahl umgewandelt 617 00:31:54,200 --> 00:31:55,510 wie ich erwarten würde. 618 00:31:55,510 --> 00:31:58,660 Also anstatt Auftakt eine Art eines Fehlers, 619 00:31:58,660 --> 00:32:01,210 Wir haben diese Idee eines optional. 620 00:32:01,210 --> 00:32:04,240 Und das bedeutet, dass die Verwendung von Dieses Fragezeichen was ich sagen kann, 621 00:32:04,240 --> 00:32:09,100 OK, ist es möglich, dass ich nehmen Damit wandelte sie in ein int, 622 00:32:09,100 --> 00:32:12,630 und steckte es in eine Variable, was auch vom Typ int sein. 623 00:32:12,630 --> 00:32:15,420 Wenn ja, dann, dass Mittel dass diese erfolgreich war 624 00:32:15,420 --> 00:32:18,720 und dieser erste Teil der Block weiter. 625 00:32:18,720 --> 00:32:21,040 >> Ansonsten habe sie. 626 00:32:21,040 --> 00:32:25,840 Es gibt keinen Wert in grade-- oder vielmehr gibt es keinen Wert in bestehenden, 627 00:32:25,840 --> 00:32:30,220 und ich haben tatsächlich zu versuchen behandeln diese Fehlerbedingung. 628 00:32:30,220 --> 00:32:33,340 Sie werden das sehen Fragezeichen, die ganze Zeit 629 00:32:33,340 --> 00:32:35,990 in Swift und Beispielcode für Swift. 630 00:32:35,990 --> 00:32:40,980 Und in der Tat die nill Betreiber diese Art von Fragezeichen, die optionals Teil, 631 00:32:40,980 --> 00:32:45,057 wird sich wahrscheinlich ein der schwierigsten Dinge 632 00:32:45,057 --> 00:32:47,640 zu Art wickeln Ihren Kopf um wie Sie tatsächlich damit arbeiten. 633 00:32:47,640 --> 00:32:48,490 >> Es könnte sinnvoll jetzt zu machen. 634 00:32:48,490 --> 00:32:50,760 Und in der Tat, als ich Schreiben Beispielcode für diese, 635 00:32:50,760 --> 00:32:52,780 sicherlich habe ich verstanden, was vor sich ging, 636 00:32:52,780 --> 00:32:55,570 aber immer noch gefangen mich Überraschung jeder so oft 637 00:32:55,570 --> 00:32:58,370 wenn ich, dass zu finden Einige Daten war eigentlich 638 00:32:58,370 --> 00:33:04,024 ein Null-Version, eine optionale Version der Daten, die ich erwartet hatte. 639 00:33:04,024 --> 00:33:06,190 Also einfach erkennen, dass, wenn Sie eine optionale Version 640 00:33:06,190 --> 00:33:09,360 Sie entpacken müssen, dass Daten aus dieser Box. 641 00:33:09,360 --> 00:33:15,870 >> Also ist es ein bisschen wie I-- vorstellen, wenn Sie eine Box und es etwas enthält. 642 00:33:15,870 --> 00:33:18,490 Und was Sie tun müssen, ist die Frage zu stellen, 643 00:33:18,490 --> 00:33:22,800 ist es möglich, dass diese Box tatsächlich enthält die Daten, die ich suche? 644 00:33:22,800 --> 00:33:28,180 Wenn ja, dann ziehen Sie diese Daten aus und legen Sie sie in diesem vorhandenen Variablen. 645 00:33:28,180 --> 00:33:32,080 Wenn nicht, dann muss ich nur noch den Inhalt dieser Box ignorieren 646 00:33:32,080 --> 00:33:34,310 ganz, weil es buchstäblich nichts enthält. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Haben Sie Fragen zu diesem Thema? 649 00:33:40,400 --> 00:33:44,430 OK, lassen Sie uns weg von dieser Art von Kommandozeilen Sache 650 00:33:44,430 --> 00:33:47,610 und beginnen, einige der Technik 651 00:33:47,610 --> 00:33:53,060 dass Xcode bietet uns in Form von Spielplätzen. 652 00:33:53,060 --> 00:33:56,669 Es gibt also eine Menge Möglichkeit hier mit Swift. 653 00:33:56,669 --> 00:33:59,210 Und wenn Sie Xcode und sie zu öffnen fragt, was Sie tun möchten, 654 00:33:59,210 --> 00:34:01,340 Sie eröffnen können sich auf dem Spielplatz und gleich um zu spielen 655 00:34:01,340 --> 00:34:06,200 mit einer Menge von unterschiedlichen Strukturen und Aspekte der Sprach 656 00:34:06,200 --> 00:34:11,800 bevor Sie überhaupt anfangen zu berühren die iOS-SDK oder die Mac-SDK. 657 00:34:11,800 --> 00:34:15,670 >> Also dieser Fall, sagen wir mal, dass ich have-- Ich habe eine relativ konstruiertes Beispiel 658 00:34:15,670 --> 00:34:18,460 hier, aber Geduld mit mir, wie wir sort von Arbeit durch dieses Beispiel. 659 00:34:18,460 --> 00:34:22,639 Nehmen wir an, dass wir eine Menge zu tun haben des Exponenten mit einem festen Wert, 660 00:34:22,639 --> 00:34:26,397 wie wir wissen, dass wir werden zu müssen, tun eine Menge Platz Kräfte, zum Beispiel. 661 00:34:26,397 --> 00:34:28,980 So werden wir einen Wert zu nehmen x, werden wir es zu quadrieren, 662 00:34:28,980 --> 00:34:30,540 wir werden einen Wert zu nehmen y und wir werden es zu quadrieren. 663 00:34:30,540 --> 00:34:31,780 So weiter und so fort. 664 00:34:31,780 --> 00:34:35,549 >> Jetzt könnten wir eigentlich nur erstellen Potenz von 2 Funktion dafür, oder? 665 00:34:35,549 --> 00:34:37,090 So würden wir eine Leistung von 2-Funktion erstellen. 666 00:34:37,090 --> 00:34:38,600 Wir werden ein Doppel akzeptieren. 667 00:34:38,600 --> 00:34:41,489 Wir oder output-- wir werden Rückkehr eine doppelte Art. 668 00:34:41,489 --> 00:34:46,159 Wir werden dieses Ergebnis zu übernehmen und dann zweimal 669 00:34:46,159 --> 00:34:52,040 was wir eigentlich die Ergebnisse, nehmen Sie die wurde der Wert initialisiert, um von einem, 670 00:34:52,040 --> 00:34:53,090 und multipliziert es mit x. 671 00:34:53,090 --> 00:34:56,540 Also im Grunde haben wir x mal x hier. 672 00:34:56,540 --> 00:35:01,860 >> Und so dann kann ich dann, wie wir könnten erwarten, nehmen Sie diese, führen Potenz von 2, 673 00:35:01,860 --> 00:35:03,680 auszustatten, einige Daten, Ich mag 2.0. 674 00:35:03,680 --> 00:35:05,756 Und wir bekommen, um die Ergebnisse hier 4.0 sehen. 675 00:35:05,756 --> 00:35:09,200 Laufleistung von 2 auf 3.2, und wir Lernen Sie unser Ergebnis 10,24 sehen. 676 00:35:09,200 --> 00:35:10,840 So weit so gut, nicht wahr? 677 00:35:10,840 --> 00:35:12,070 Jetzt denken wir, na ja, OK. 678 00:35:12,070 --> 00:35:15,530 Jetzt habe ich tatsächlich brauchen machen viele Befugnisse 3. 679 00:35:15,530 --> 00:35:19,180 Also werde ich kopieren und einfügen gesamten Code, ändern Sie den Namen der Funktion aus 680 00:35:19,180 --> 00:35:24,440 Potenz von 2, um Leistung von 3, und alles, wird das gleiche mit Ausnahme dieser Wert sein 681 00:35:24,440 --> 00:35:26,740 Hier, dieser Bereich, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Also anstatt zu wiederholen diese Schleife zweimal, 683 00:35:29,590 --> 00:35:31,880 Ich möchte diese Schleife dreimal wiederholen. 684 00:35:31,880 --> 00:35:36,330 Also habe ich den Wert von nur ändern 1 bis 3-- bzw. 2-3. 685 00:35:36,330 --> 00:35:39,230 Also noch einmal, den gleichen Code, das ist die einzige Veränderung. 686 00:35:39,230 --> 00:35:40,080 Jetzt funktioniert das auch. 687 00:35:40,080 --> 00:35:43,860 Power of 3 in einen Wert von 2 zur Verfügung gestellt. 688 00:35:43,860 --> 00:35:44,420 Wir erhalten 8. 689 00:35:44,420 --> 00:35:45,370 Also 2 gewürfelt. 690 00:35:45,370 --> 00:35:48,060 Und 3,2 hoch drei ist 32,768. 691 00:35:48,060 --> 00:35:50,597 So weit, so gut, nicht wahr? 692 00:35:50,597 --> 00:35:52,930 Aber hoffentlich ist dies ein wenig bisschen wie ein rotes Tuch für Sie 693 00:35:52,930 --> 00:35:55,530 in, dass wir jetzt einige Doppelcode 694 00:35:55,530 --> 00:35:58,800 mit Ausnahme einiger sehr gering Wechsel von einer zur nächsten. 695 00:35:58,800 --> 00:36:02,170 So ist es eine Möglichkeit, dass könnten wir in der Lage, zu vereinfachen 696 00:36:02,170 --> 00:36:06,080 dieses Problem, wo wir können tatsächlich, zur Laufzeit herausfinden einige, 697 00:36:06,080 --> 00:36:11,320 uns zur Verfügung stellen, die eine Funktion hat Gerade die Kraft, dass wir wollen. 698 00:36:11,320 --> 00:36:13,960 >> Und es gibt diese Idee Verschlüsse, die wirklich, wirklich 699 00:36:13,960 --> 00:36:18,180 im Rahmen der Swift wichtig, und in vielen anderen Sprachen. 700 00:36:18,180 --> 00:36:21,580 Aber wahrscheinlich werden Sie sehen, es in Swift verwendet mehr, 701 00:36:21,580 --> 00:36:23,650 weil es eingebettet in der Sprache 702 00:36:23,650 --> 00:36:28,280 als Sie in anderen auch moderne Sprachen. 703 00:36:28,280 --> 00:36:31,140 Also die Idee eines Verschlusses dies ist, ist, dass wir 704 00:36:31,140 --> 00:36:35,430 eine Funktion, die dazu bestimmt ist sind ist eine generische Funktion, eine generische Leistung 705 00:36:35,430 --> 00:36:36,860 Funktion. 706 00:36:36,860 --> 00:36:41,010 >> Und diese Funktion wird zu akzeptieren dieser Exponent, dass wir tatsächlich 707 00:36:41,010 --> 00:36:42,990 wollen erstellen. 708 00:36:42,990 --> 00:36:46,550 So zum Beispiel, die erste So wollten wir eine Leistung von 2. 709 00:36:46,550 --> 00:36:50,050 So würden wir Kraft des liefern und dann in Klammern 2. 710 00:36:50,050 --> 00:36:52,490 Und nun merken, was dies tatsächlich zurückkehrt. 711 00:36:52,490 --> 00:36:57,680 Dies nimmt eine Eingabe von einem Primer genannt y, die eine ganze Zahl ist, 712 00:36:57,680 --> 00:37:03,090 und es diese verrückte Suche zurück was in parentheses-- Klammern 713 00:37:03,090 --> 00:37:06,230 Doppelpfeil und dann doppelt. 714 00:37:06,230 --> 00:37:10,270 >> Was dies bedeutet, ist, dass ich gehen, um eine Funktion zurück. 715 00:37:10,270 --> 00:37:13,510 Ich werde nicht zurückkehren eine andere Art von Daten, ich bin 716 00:37:13,510 --> 00:37:16,350 in der Tat eine Funktion zurückgibt das hat dieser Parameter, dass 717 00:37:16,350 --> 00:37:22,680 übernimmt eine Doppel als Eingabe und gibt ein Doppel als Rückgabewert. 718 00:37:22,680 --> 00:37:29,750 Und als Ergebnis, weil ich jetzt genannt habe Macht der, vorbei an einem gewissen Wert für y, 719 00:37:29,750 --> 00:37:32,280 und ich werde diese anderen schaffen function-- Ankündigung, dass es 720 00:37:32,280 --> 00:37:35,980 eine weitere Funktion, die erstellt hat Innere this--, was ich tue 721 00:37:35,980 --> 00:37:37,830 wird ich dann ändern dieser Wert, dass man 722 00:37:37,830 --> 00:37:41,010 Wert, die ich geändert hatte 2-3, habe ich jetzt machen, y. 723 00:37:41,010 --> 00:37:42,500 >> Und diese besteht. 724 00:37:42,500 --> 00:37:48,530 Also jedes Mal, dass ich Macht nennen der im Wesentlichen, was passiert, 725 00:37:48,530 --> 00:37:51,030 ist, dass ich eine Funktion zurückgegeben. 726 00:37:51,030 --> 00:37:54,310 Beachten Sie, dass ich hier definiert haben eine neue Variable namens Platz. 727 00:37:54,310 --> 00:37:59,340 Ich habe es gleich Macht der eingestellt, sofern dieser Wert 2 an die Macht. 728 00:37:59,340 --> 00:38:02,030 Und was diese zurück ist die Funktion. 729 00:38:02,030 --> 00:38:05,970 So Platz, die variable Quadrat, ist jetzt vom Typ Funktion 730 00:38:05,970 --> 00:38:11,390 das hat this-- oops, nach oben ein wenig bit--, die diese Signatur hat, 731 00:38:11,390 --> 00:38:15,560 akzeptieren, ein Doppelzimmer und ein Doppelausgang. 732 00:38:15,560 --> 00:38:17,330 >> So, jetzt, was ich getan habe, ist ich habe im Wesentlichen 733 00:38:17,330 --> 00:38:22,890 erstellt eine Funktion namens Platz, akzeptiert jeden Wert und wird es zu quadrieren. 734 00:38:22,890 --> 00:38:24,960 Wir können sehen, was hier passiert, nach unten. 735 00:38:24,960 --> 00:38:29,960 Platz 3 bedeutet zum Beispiel, werde ich um den Wert 3 zu nehmen und es im Quadrat. 736 00:38:29,960 --> 00:38:32,010 Wie genau funktioniert das? 737 00:38:32,010 --> 00:38:37,800 Wenn ich übergeben Macht der 2-- als ich Durchlauf 2 in diese Macht der Funktion, 738 00:38:37,800 --> 00:38:44,430 diese Variable y mit diesem Wert 2 besiedelt. 739 00:38:44,430 --> 00:38:46,340 Und das ist eine Art im Speicher gehalten. 740 00:38:46,340 --> 00:38:49,430 Das ist ein bisschen wie in gehalten Zustand irgendwo in dem Computer 741 00:38:49,430 --> 00:38:51,980 wir wissen nicht wirklich egal, wie oder wenn an dieser Stelle. 742 00:38:51,980 --> 00:38:54,692 >> Aber ich diese Funktion zurück genannt potenzieren. 743 00:38:54,692 --> 00:38:57,400 Und wieder, es ist nicht wirklich wichtig was diese Funktion aufgerufen wird, 744 00:38:57,400 --> 00:39:01,730 können wir wirklich nennen es etwas, dass übernimmt eine Doppel und gibt ein Doppelzimmer, 745 00:39:01,730 --> 00:39:05,640 aber verwendet diesen Wert y darin. 746 00:39:05,640 --> 00:39:09,290 Also auch wenn es diese Funktion, Diese exponentiater Funktion, die ist 747 00:39:09,290 --> 00:39:13,600 zurück zu zurückgegeben meine Variable, die ich Platz namens, 748 00:39:13,600 --> 00:39:17,980 es darin enthalten ist diese Vorstellung von dem, was y war. 749 00:39:17,980 --> 00:39:19,070 Und es erinnert sich daran. 750 00:39:19,070 --> 00:39:24,810 >> Also jedes Mal, wenn ich diesen Funktionsaufruf, ist nun Platz namens, verwendet es das. 751 00:39:24,810 --> 00:39:27,990 Das bedeutet aber auch, dass ich kann, erstellen Sie eine andere Variable mit 752 00:39:27,990 --> 00:39:29,120 eine andere Macht der. 753 00:39:29,120 --> 00:39:33,240 So kann ich einen Würfel Variable zu erstellen, für die Beispielsweise bieten, um sie hoch 3. 754 00:39:33,240 --> 00:39:37,230 Jetzt Würfel tatsächlich statt einige Wert und die Würfel, und senden Sie es. 755 00:39:37,230 --> 00:39:39,570 So können wir sehen, dass ich ein Wert 8 aus, dass. 756 00:39:39,570 --> 00:39:42,720 >> Aber das hat nicht Wert y geändert, weil sie 757 00:39:42,720 --> 00:39:44,980 in Art von unabhängigen Variablen statt. 758 00:39:44,980 --> 00:39:47,480 Sie sind eine Art in gehalten unabhängige Bereiche im Speicher. 759 00:39:47,480 --> 00:39:51,290 So Würfel wird immer x auf die Leistung von 3. 760 00:39:51,290 --> 00:39:55,380 Und Platz wird immer x hoch 2, die 761 00:39:55,380 --> 00:39:58,470 bedeutet, dass Platz ist immer Quadratzahlen, wie ich erwartet. 762 00:39:58,470 --> 00:40:01,794 Und Würfel wird immer in Würfel geschnitten Zahlen, wie ich erwartet. 763 00:40:01,794 --> 00:40:04,960 Dies bedeutet auch, dass es manchmal möglich bekommen eine Art von funky suchen Syntax 764 00:40:04,960 --> 00:40:09,030 wo Sie Kraft des zumin verfügen unten auf dem Bildschirm hier, Leistung von 5. 765 00:40:09,030 --> 00:40:11,410 Und Sie gehen in das Ergebnis. 766 00:40:11,410 --> 00:40:14,670 Sie rufen diese Funktion, das ist wurde mit der Nummer 4 zurück. 767 00:40:14,670 --> 00:40:17,440 Und was im Wesentlichen diese 4 zur fünften Potenz, 768 00:40:17,440 --> 00:40:20,830 wir können die Ergebnisse dort zu sehen. 769 00:40:20,830 --> 00:40:23,690 Mit mir so weit? 770 00:40:23,690 --> 00:40:26,620 >> Also diese Idee wird als Verschluss, weil das, was wir im Grunde tun 771 00:40:26,620 --> 00:40:30,610 ist, dass wir Verkapselung Einige Daten into-- Art 772 00:40:30,610 --> 00:40:33,050 der diese Daten einschließe in eine Funktion, und wir sind 773 00:40:33,050 --> 00:40:36,240 in der Lage, diese Funktion wieder zu verwenden. 774 00:40:36,240 --> 00:40:41,480 Nun ist diese Syntax kann aber tatsächlich eine große Menge vereinfacht werden. 775 00:40:41,480 --> 00:40:45,005 Und es gibt viele Möglichkeiten in Swift für diese Vereinfachung. 776 00:40:45,005 --> 00:40:47,780 Und das ist, was für die Folge diejenigen tatsächlich sehen. 777 00:40:47,780 --> 00:40:51,400 So in 7b wir zum Beispiel nehmen Sie das exakt gleiche Code. 778 00:40:51,400 --> 00:40:54,360 >> Aber jetzt nicht tatsächlich eine Funktion definieren 779 00:40:54,360 --> 00:40:57,910 innerhalb dieser Macht der funktionieren und geben Sie ihm einen Namen, 780 00:40:57,910 --> 00:41:00,150 und dann den Namen dieser Funktion, die 781 00:41:00,150 --> 00:41:02,357 dann wird im Rahmen der verwendeten Diese Schließung, sondern wir sind 782 00:41:02,357 --> 00:41:03,440 gerade dabei, es zu vereinfachen. 783 00:41:03,440 --> 00:41:06,580 Wir brauchen nicht diese Funktion zu nennen. 784 00:41:06,580 --> 00:41:09,760 Das ist also das Konzept einer anonyme Funktion, wo wir können dann 785 00:41:09,760 --> 00:41:15,180 akzeptieren als Eingabe in Klammern hier, die Variable x, die vom Typ double ist. 786 00:41:15,180 --> 00:41:17,250 >> Wir werden den Typ double zurück. 787 00:41:17,250 --> 00:41:19,830 Und dann das Schlüsselwort, n ist der Anfang dieser Funktion. 788 00:41:19,830 --> 00:41:22,180 So fest, dass all dies ist in geschweiften Klammern 789 00:41:22,180 --> 00:41:25,310 und wir definieren ein anonymen funktionieren hier. 790 00:41:25,310 --> 00:41:29,910 Nur ein einfacher Weg, genau dasselbe Definition. 791 00:41:29,910 --> 00:41:30,810 OK? 792 00:41:30,810 --> 00:41:36,740 Aber halt, Swift können wir tatsächlich , weiter zu gehen und noch mehr zu vereinfachen, 793 00:41:36,740 --> 00:41:40,180 weil wir nicht wirklich egal, dass dieser Parameter 794 00:41:40,180 --> 00:41:41,700 Namen eine bestimmte Sache. 795 00:41:41,700 --> 00:41:48,090 Es kann wirklich nichts aufgerufen werden und können wir immer noch, dass die ersten Parameter. 796 00:41:48,090 --> 00:41:53,800 >> So in der Tat gibt es diese spezielle Art der Daten in anonyme Funktionen, 797 00:41:53,800 --> 00:41:57,710 gibt es diese speziellen Namen Variablen in anonyme Funktionen 798 00:41:57,710 --> 00:42:00,280 dass mit Beginn der Dollarzeichen und stellen 799 00:42:00,280 --> 00:42:03,785 die Parameternummern, Null indiziert, für diese Funktion. 800 00:42:03,785 --> 00:42:05,410 Also gibt es ein paar Dinge passiert. 801 00:42:05,410 --> 00:42:08,550 Hier werde ich zurückkehren, und dann eine geschweifte Klammer, die eine Funktion, 802 00:42:08,550 --> 00:42:09,050 oder? 803 00:42:09,050 --> 00:42:13,920 >> Beachten Sie, dass ich nicht definiert haben, die Parametertypen oder der Rückgabetyp. 804 00:42:13,920 --> 00:42:16,460 Es kann tatsächlich geschlossen werden wegen der Unterschrift 805 00:42:16,460 --> 00:42:18,360 dieser ursprüngliche Funktion. 806 00:42:18,360 --> 00:42:20,500 Also haben wir beseitigen können daß als eine Möglichkeit. 807 00:42:20,500 --> 00:42:25,120 Aber auch ich kann Dollar-Zeichen Null zu bedienen Betreiber dieses ersten Parameter, der ist 808 00:42:25,120 --> 00:42:28,200 in dieser anonymen Funktion übergeben. 809 00:42:28,200 --> 00:42:31,630 Also noch mehr vereinfacht es. 810 00:42:31,630 --> 00:42:32,750 OK? 811 00:42:32,750 --> 00:42:33,820 So weit, ist es gut? 812 00:42:33,820 --> 00:42:36,980 >> Jetzt ist es an dieser Typ-- tun Sie erinnere mich an diese Dollar-Zeichen Null 813 00:42:36,980 --> 00:42:40,130 dass wir in diesem geschweifte Klammer sah sahen wir nur ein wenig, während 814 00:42:40,130 --> 00:42:43,870 Vor dieser Swift sechs Beispiel? 815 00:42:43,870 --> 00:42:46,560 Es war hier richtig. 816 00:42:46,560 --> 00:42:48,430 Beachten Sie, dass ist genau das, was wir auf der Suche, 817 00:42:48,430 --> 00:42:51,580 ist, dass wir bestanden haben in diese Split-Funktion 818 00:42:51,580 --> 00:42:55,140 eine anonyme Funktion, überprüft die ersten Parameter 819 00:42:55,140 --> 00:42:57,830 zu sehen, ob es gleich dem Doppelpunkt. 820 00:42:57,830 --> 00:42:59,830 Und das ist genau das, was ist passiert, ist, dass alle 821 00:42:59,830 --> 00:43:02,320 wir doing-- die Rückkehr Schlüsselwort wird angedeutet, 822 00:43:02,320 --> 00:43:05,800 in diesem Fall-- wir Rückkehr dieser Wert, wo wir den Vergleich 823 00:43:05,800 --> 00:43:10,020 der erste Parameter gegen dieses Zeichen Doppelpunkt. 824 00:43:10,020 --> 00:43:11,730 Und damit diese Art von entmystifiziert. 825 00:43:11,730 --> 00:43:17,210 Und du wirst, dieses Konstrukt zu sehen viele in Swift Syntax, dies zu tun zu halten, dass 826 00:43:17,210 --> 00:43:19,400 im Sinn, als Sie einen Blick auf diese. 827 00:43:19,400 --> 00:43:21,970 Jetzt werden wir aussteigen können die Schienen ein wenig 828 00:43:21,970 --> 00:43:25,460 und gehen Sie wirklich Lust, dass Shows sogar einige mehr von Swifts Macht. 829 00:43:25,460 --> 00:43:27,950 Sie könnten sogar einige sehen davon in Probencodes. 830 00:43:27,950 --> 00:43:29,790 Also das ist, warum ich werde Ihnen dies zu zeigen. 831 00:43:29,790 --> 00:43:37,260 >> Im Grunde, was wir tun können, ist, dass zuerst von allem, es war Art von unnötig für mich 832 00:43:37,260 --> 00:43:41,710 alle diese Macht der Umsetzung Code, denn wenn Sie die Darwin importieren 833 00:43:41,710 --> 00:43:46,490 Bibliothek, es tatsächlich eine Funktion pow genannt, die dies für Sie erledigt. 834 00:43:46,490 --> 00:43:50,570 So können wir es noch mehr zu vereinfachen und haben jetzt unsere Leistung bis Funktion nur 835 00:43:50,570 --> 00:43:54,890 ist ein wunderbares Motto, wo wir gerade senden Sie dieses anonyme Funktion, 836 00:43:54,890 --> 00:44:00,780 nimmt Dollarzeichen 0 als Basis und y als Exponenten. 837 00:44:00,780 --> 00:44:02,582 >> Aber wir bekommen können, wirklich Lust, wenn wir 838 00:44:02,582 --> 00:44:04,790 erkennen, dass Swift hat einen viel Power unter der Haube. 839 00:44:04,790 --> 00:44:07,010 Viele der Betreiber, dass wir beschäftigen mit, 840 00:44:07,010 --> 00:44:11,270 Plus-Zeichen und Division Symbole und all diese Dinge, die Sie normalerweise 841 00:44:11,270 --> 00:44:15,620 arbeiten mit mit Datentypen in einer Programmiersprache, 842 00:44:15,620 --> 00:44:17,600 sind eigentlich erweiterbar in Swift. 843 00:44:17,600 --> 00:44:21,460 Was also, dass wir in dieser bedeutet, können unsere eigene Operatoren definieren. 844 00:44:21,460 --> 00:44:26,020 >> So, jetzt bin ich müde von der Eingabe in das alles pow und dann eine Klammer und dann 845 00:44:26,020 --> 00:44:26,520 die Basis. 846 00:44:26,520 --> 00:44:27,520 Ich will nicht, das zu tun. 847 00:44:27,520 --> 00:44:30,190 Eigentlich möchte ich eine haben Betreiber, die mich, das zu tun erlaubt. 848 00:44:30,190 --> 00:44:34,510 So kann ich sagen, dass Swift Ich möchte um es einem Bediener, Sterne zu erstellen 849 00:44:34,510 --> 00:44:39,472 star-- durch die Art, wie ich kann nicht mit dem Karat weil das Karat ist ein Operator, 850 00:44:39,472 --> 00:44:40,680 tut etwas völlig anderes. 851 00:44:40,680 --> 00:44:42,720 Also ich will nicht sortieren der prallen, dass. 852 00:44:42,720 --> 00:44:45,750 Und so, was Sie in einer Vielzahl sehen von Sprachen, darunter Python, 853 00:44:45,750 --> 00:44:48,810 ist wie star star Betreiber zum Exponenten darstellen. 854 00:44:48,810 --> 00:44:50,730 >> Also das ist der einzige Grund, Deshalb habe ich das getan. 855 00:44:50,730 --> 00:44:53,067 Und es wird sein, einen Infix Typ Betreiber. 856 00:44:53,067 --> 00:44:54,900 Und ich muss liefern um es einige Informationen 857 00:44:54,900 --> 00:44:58,386 über den Vorrang von dieser Betreiber so ist es links assoziativ. 858 00:44:58,386 --> 00:45:00,260 Es ist, als relativ Hoch Vorrang gegen 859 00:45:00,260 --> 00:45:02,432 zur Aufrechnung oder Multiplikation. 860 00:45:02,432 --> 00:45:04,140 Es ist eine höhere Rang als alle von denen. 861 00:45:04,140 --> 00:45:04,931 So weiter und so fort. 862 00:45:04,931 --> 00:45:07,410 Und dann habe ich definieren Funktion, die tatsächlich 863 00:45:07,410 --> 00:45:10,070 diktiert, was dieser Operator tut. 864 00:45:10,070 --> 00:45:14,150 So davon aus, dass ich einen linken Seite und der rechten Seite, 865 00:45:14,150 --> 00:45:17,330 das wäre vielleicht ein bessere Variablennamen für diese. 866 00:45:17,330 --> 00:45:20,690 Linken Seite und der rechten Seite. 867 00:45:20,690 --> 00:45:26,740 Ich kann dann diese Macht der linken Seite zu der rechten Seite 868 00:45:26,740 --> 00:45:28,980 und zurück, dass Wert. 869 00:45:28,980 --> 00:45:30,370 So jetzt ist es super süß. 870 00:45:30,370 --> 00:45:33,790 Alles, was wir tun müssen, ist 2-Sterne-Sterne-3 und 2 in der dritten Potenz, 871 00:45:33,790 --> 00:45:35,290 und wir bekommen den Wert 8. 872 00:45:35,290 --> 00:45:40,280 2-Sterne-Sterne 10 2 bis die 10. Macht, bekommen wir 1024. 873 00:45:40,280 --> 00:45:43,630 >> So, jetzt unsere Macht der Funktion, was wiederum unterschiedlich ist, 874 00:45:43,630 --> 00:45:47,030 weil die ganze Idee dahinter war, dass wir eine Funktion haben, dass 875 00:45:47,030 --> 00:45:50,700 findet immer einen gewissen Wert und multipliziert es-- bzw. 876 00:45:50,700 --> 00:45:53,240 nimmt den Exponenten an die gleiche Strom. 877 00:45:53,240 --> 00:45:54,300 So jetzt ist es noch einfacher. 878 00:45:54,300 --> 00:45:57,070 So, jetzt ist es nur Dollar Zeichen 0 star star y. 879 00:45:57,070 --> 00:46:01,190 Wir haben nicht einmal zu pow mehr verwenden. 880 00:46:01,190 --> 00:46:03,020 >> OK, der verloren hat? 881 00:46:03,020 --> 00:46:03,700 Tun wir OK? 882 00:46:03,700 --> 00:46:05,090 Sie haben Fragen zu diesem Zeug? 883 00:46:05,090 --> 00:46:05,815 Ja? 884 00:46:05,815 --> 00:46:09,500 >> ZIELGRUPPE: Wenn Sie-- [unverständlich] die funk hoch y Doppel. 885 00:46:09,500 --> 00:46:11,441 Also, wenn Sie eine Funktion zurückgibt. 886 00:46:11,441 --> 00:46:13,190 DANIEL ARMENDARIZ: Funk hoch y Doppel. 887 00:46:13,190 --> 00:46:14,270 Oh ja, ich weiß nicht, was die y Zahlen sind. 888 00:46:14,270 --> 00:46:15,708 Bitten um Entschuldigung. 889 00:46:15,708 --> 00:46:19,420 >> ZIELGRUPPE: Warum sind Sie wieder eine Funktion [unverständlich] Gehäuse. 890 00:46:19,420 --> 00:46:24,214 Ist das nicht Null-Dollar-Sterne- Sterne y [unverständlich] 891 00:46:24,214 --> 00:46:29,710 feststellen, dass Betreiber mit, dass Rückkehr Doppel [unverständlich] verdoppeln? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL ARMENDARIZ: Also lassen mir Ihre Frage zu beantworten 893 00:46:32,742 --> 00:46:35,950 Wie ich es verstehe, und Sie können mir sagen, wenn ich nicht verstehe Ihre Frage. 894 00:46:35,950 --> 00:46:42,850 Also das Konstrukt, das geschweifte Klammer Dollar-Zeichen Null Stern Stern y, 895 00:46:42,850 --> 00:46:44,280 eine Funktion ist. 896 00:46:44,280 --> 00:46:50,080 Und einen Parameter, der es übernimmt dieses Dollarzeichen Null vertreten. 897 00:46:50,080 --> 00:46:55,830 Die Rückkehr Schlüsselwort in dieser stillschweigend sehr kurz, anonyme Funktion Syntax. 898 00:46:55,830 --> 00:46:57,870 >> Was bedeutet, dass im Wesentlichen was dieser sagt, 899 00:46:57,870 --> 00:47:01,270 ist, dass ich die Definition ein function-- und dann werde ich 900 00:47:01,270 --> 00:47:05,320 nennen es einfach something-- wo ich einen gewissen Wert y. 901 00:47:05,320 --> 00:47:08,300 Ich habe y, die doppelt so hoch ist. 902 00:47:08,300 --> 00:47:10,750 Und ich bin wieder ein Doppel. 903 00:47:10,750 --> 00:47:19,010 Und ich habe in diesem Rück Y- sorry, Ich sollte diese Y- x nicht angerufen. 904 00:47:19,010 --> 00:47:20,240 Oh je, oh je, oh je. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- star star y. 906 00:47:27,440 --> 00:47:29,720 >> Also das ist nur ein vereinfachte Version davon. 907 00:47:29,720 --> 00:47:33,990 Und so der Grund, dass ich Dollar Zeichen Null ist, dass mit diesem Gehäuse 908 00:47:33,990 --> 00:47:41,050 bedeutet, dass ich nicht mehr zu geben kriegsgefangen, oder nicht mehr 909 00:47:41,050 --> 00:47:45,570 Ich habe etwas zu tun wie 3-Sterne-Sterne-2. 910 00:47:45,570 --> 00:47:48,530 Ich kann einfach nur einen einzigen Funktion namens square 911 00:47:48,530 --> 00:47:50,820 dass immer nehmen einen gewissen Wert als Eingabe 912 00:47:50,820 --> 00:47:52,980 und tatsächlich das Quadrat dass zurückzukehren. 913 00:47:52,980 --> 00:47:56,460 >> Also der ganze Zweck des Verschlusses um nur irgendwie kapseln die Tatsache, 914 00:47:56,460 --> 00:47:59,920 dass ich auf y verwenden, wann immer wollen immer Ich nenne diese Funktion als Strom 915 00:47:59,920 --> 00:48:01,710 , während Sie dieses Exponenten. 916 00:48:01,710 --> 00:48:04,650 Also dann wieder ein Funktion, die akzeptiert 917 00:48:04,650 --> 00:48:08,460 eine doppelte, die die Basis ist, und gibt das Ergebnis dieser Exponent 918 00:48:08,460 --> 00:48:10,740 ist hier der Schlüssel. 919 00:48:10,740 --> 00:48:12,790 Und das ist der Hauptunterschied. 920 00:48:12,790 --> 00:48:14,430 Es gab nur ein bisschen von einem Tusch. 921 00:48:14,430 --> 00:48:17,970 >> Das ist nicht anders im Vergleich zu den vorhergehenden Beispielen, 922 00:48:17,970 --> 00:48:20,530 aber es war nur ein bisschen a gedeihen wir tatsächlich 923 00:48:20,530 --> 00:48:24,500 erstellen einen Operator in Swift und tatsächlich Sachen damit machen, 924 00:48:24,500 --> 00:48:26,396 Das ist eine Art coole Sache. 925 00:48:26,396 --> 00:48:27,520 Habe ich Ihre Frage beantworten? 926 00:48:27,520 --> 00:48:28,390 Süße. 927 00:48:28,390 --> 00:48:31,350 Sonst noch etwas, bevor wir weitermachen? 928 00:48:31,350 --> 00:48:33,570 OK. 929 00:48:33,570 --> 00:48:36,430 >> Nun ist diese Art stellt sich die Frage dass-- auch OK, 930 00:48:36,430 --> 00:48:40,870 Jetzt haben wir die Möglichkeit für Funktionen zurückgegeben. 931 00:48:40,870 --> 00:48:48,950 Können wir auch als Daten zu übergeben oder als Parameter, um andere Funktionen? 932 00:48:48,950 --> 00:48:50,710 Und in der Tat wir können. 933 00:48:50,710 --> 00:48:53,480 Also lassen Sie uns sagen, dass wir alle den gleichen Code. 934 00:48:53,480 --> 00:48:56,120 Wir haben den Platz variable dass diesen Code Quadrat. 935 00:48:56,120 --> 00:48:59,320 Und wir haben die Würfel variable dass einige Datenwürfel. 936 00:48:59,320 --> 00:49:02,440 Und wir tatsächlich angewendet werden soll für eine Vielzahl von Zahlen. 937 00:49:02,440 --> 00:49:06,870 >> Also, was wir könnten versucht sein, zu tun, natürlich, was sicherlich gültig ist, 938 00:49:06,870 --> 00:49:15,430 ist es, über diese Liste von Zahlen iterieren und gelten meine Funktionen Quadrat und Würfel 939 00:49:15,430 --> 00:49:22,270 und erhalten Sie zwei neue Listen Ergebnisse dass diese ursprünglichen Liste Quadrat sind 940 00:49:22,270 --> 00:49:24,970 und in Würfel geschnitten sind. 941 00:49:24,970 --> 00:49:26,880 Durchaus akzeptabel. 942 00:49:26,880 --> 00:49:29,130 Aber was ist die Sache, wir hier sehen, ist, dass wir, 943 00:49:29,130 --> 00:49:31,310 wieder, Vervielfältigung unseres Codes. 944 00:49:31,310 --> 00:49:34,310 Und es gibt vielleicht eine Gelegenheit, für uns, dies ein wenig zu vereinfachen. 945 00:49:34,310 --> 00:49:41,260 Was, wenn es eine Möglichkeit für uns, eigentlich immer überlaufen eine Liste 946 00:49:41,260 --> 00:49:45,450 und gerade in dieser magischen geben Funktion eine Variable, 947 00:49:45,450 --> 00:49:47,350 stellt eine Funktion dass wir übernehmen möchten 948 00:49:47,350 --> 00:49:50,336 zu jedem einzelnen Element in dieser Liste. 949 00:49:50,336 --> 00:49:53,210 Dadurch wird das Konzept von dem, was werden als Funktionen höherer Ordnung. 950 00:49:53,210 --> 00:49:57,150 Und das ist im Wesentlichen, was diese ist, ist, dass wir eine Funktion erstellen. 951 00:49:57,150 --> 00:50:00,210 >> Und in diesem Fall, es heißt ein Mapper, nur um ihm einen Namen zu geben, gerade 952 00:50:00,210 --> 00:50:02,510 Mapping über jeden einzelnes Element in einer Liste. 953 00:50:02,510 --> 00:50:06,191 Wo ich eine Liste nehmen und ich nehme eine Funktion. 954 00:50:06,191 --> 00:50:08,440 Und diese Funktion natürlich hat einen bestimmten Signatur. 955 00:50:08,440 --> 00:50:11,980 Es übernimmt als Parameter Doppel und gibt er ein Doppel. 956 00:50:11,980 --> 00:50:14,310 Und die ganze Folge der Diese Funktion wird 957 00:50:14,310 --> 00:50:18,921 um eine neue Liste, die vom Typ double ist sein. 958 00:50:18,921 --> 00:50:19,420 OK? 959 00:50:19,420 --> 00:50:22,650 >> Und was ich tun werde, ist diese Funktion f gelten 960 00:50:22,650 --> 00:50:24,960 auf jedes Element in der Liste. 961 00:50:24,960 --> 00:50:30,280 Und reply-- und nicht diese neue zurückkehren Liste als Ergebnis, was wirklich cool ist. 962 00:50:30,280 --> 00:50:31,820 Jetzt kann ich Funktionen herumreichen. 963 00:50:31,820 --> 00:50:35,290 Und diese Idee höherer Ordnung Funktionen ist wirklich wichtig. 964 00:50:35,290 --> 00:50:39,260 Und das ist wirklich nur Mapper Umsetzung des armen Mannes 965 00:50:39,260 --> 00:50:43,130 einer Funktion, die aufgebaut ist in Swift genannt Karte. 966 00:50:43,130 --> 00:50:45,690 Und genau dies tut, vielleicht sogar ein bisschen besser. 967 00:50:45,690 --> 00:50:48,260 >> Dies ist nur eine Art von generischen, vereinfachte Version, dass 968 00:50:48,260 --> 00:50:51,270 ermöglicht es uns, das zu sehen, Konzept, das hier gilt. 969 00:50:51,270 --> 00:50:54,630 Nun ein Blick auf die Art und Weise, dass ich tatsächlich meinen Platz gelten 970 00:50:54,630 --> 00:50:57,850 und meine Würfel Funktionen zu dieser Liste von Zahlen. 971 00:50:57,850 --> 00:50:58,780 Ich meine Mapper. 972 00:50:58,780 --> 00:51:00,280 Ich auszustatten, meine Liste von Zahlen. 973 00:51:00,280 --> 00:51:02,155 Ich auszustatten, die der Funktion, die vor sich geht 974 00:51:02,155 --> 00:51:04,170 Zu jeder dieser Indizes anzuwenden. 975 00:51:04,170 --> 00:51:07,120 Und es wird sein, Ausgabe als Ergebnis. 976 00:51:07,120 --> 00:51:11,810 Und ich werde zu bekommen, um zu sehen, dass ich im Quadrat und in Würfel geschnitten meine Zahlen als Ergebnis. 977 00:51:11,810 --> 00:51:14,660 >> Und natürlich ist der Mapper dauert jede Art von anonymen Funktion. 978 00:51:14,660 --> 00:51:17,640 Wir können auch sehen, dass die ich angelegt habe eine neue anonyme Funktion, 979 00:51:17,640 --> 00:51:20,220 dauert nur einige Parameter und teilt es durch 2. 980 00:51:20,220 --> 00:51:24,340 Und wir sehen, dass ich habe in der Tat, unterteilt meiner Liste 2 statt. 981 00:51:24,340 --> 00:51:25,250 Cool? 982 00:51:25,250 --> 00:51:27,340 So weit, ist es gut? 983 00:51:27,340 --> 00:51:29,650 So, jetzt lassen Sie uns kommen zurück, um diese Idee. 984 00:51:29,650 --> 00:51:36,160 Lassen Sie implementieren diese zurück in Im Rahmen einer Notenbuch. 985 00:51:36,160 --> 00:51:41,860 >> Und wenn ich das tun, wir, dass ich kann sehen, Anwendung einer Vielzahl von diesen Optionen- 986 00:51:41,860 --> 00:51:44,330 oder eine Vielzahl von diesen Funktionen höherer Ordnung 987 00:51:44,330 --> 00:51:51,450 um tatsächlich zu vereinfachen meine Fähigkeit, ein tun Vielzahl von Dingen auf Listen von Zahlen. 988 00:51:51,450 --> 00:51:53,660 So zum Beispiel, wenn I nehmen Sie eine Liste von Zahlen, 989 00:51:53,660 --> 00:51:57,060 eine der Funktionen höherer Ordnung was existiert, wird als zu reduzieren. 990 00:51:57,060 --> 00:52:00,080 Was tut eher reduzieren als Karte, reduziert wird 991 00:52:00,080 --> 00:52:03,710 nehmen Sie zwei Elemente in der Liste, wird eine Funktion übernehmen, dass 992 00:52:03,710 --> 00:52:07,420 vergleicht die beiden Elemente die Liste, und es wird dann 993 00:52:07,420 --> 00:52:09,610 Art der output-- Ausgang dieses Funktions 994 00:52:09,610 --> 00:52:13,790 wird ein weiteres Element, dass Sie dann im Vergleich zu anderen. 995 00:52:13,790 --> 00:52:18,190 >> So könnte man diese tatsächlich nutzen Summe der Zahlen in der Liste. 996 00:52:18,190 --> 00:52:20,640 Zum Beispiel, wenn Sie hatte eine Liste mit 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 Sie nehmen die ersten Elemente, 1 und 2. 998 00:52:22,940 --> 00:52:27,270 Sie können, um sie eine Ergänzung gelten Funktion, die diese beiden Elemente erfolgt 999 00:52:27,270 --> 00:52:30,980 und spuckt eines dieser Elemente, was wäre der Wert 3 sein. 1000 00:52:30,980 --> 00:52:35,684 Dann nehmen wir den Wert 3 mit der nächsten Element der Liste, summieren die beiden, 1001 00:52:35,684 --> 00:52:37,100 und dann fahren Sie durch die Liste. 1002 00:52:37,100 --> 00:52:40,410 >> Wir reduzieren die Liste auf einen einzigen Wert. 1003 00:52:40,410 --> 00:52:42,700 Und es passiert einfach so, dass das Plus-Symbol 1004 00:52:42,700 --> 00:52:44,670 ist ein Operator, so wie wir gerade gesehen haben. 1005 00:52:44,670 --> 00:52:47,500 Dieser Operator ist tatsächlich eine Funktion, 1006 00:52:47,500 --> 00:52:53,100 hat genau diese Liste, die wir möchte, und nicht dieser Eigenschaften 1007 00:52:53,100 --> 00:52:54,770 dass wir wollen. 1008 00:52:54,770 --> 00:52:56,760 So ermutige ich Sie, werfen Sie einen Blick auf diese. 1009 00:52:56,760 --> 00:52:59,290 Ich möchte von unterwegs zu sortieren auf von einigen dieser Code 1010 00:52:59,290 --> 00:53:05,330 so dass wir tatsächlich auf einige schauen tatsächliche, echte, wahre Swift in Xcode, 1011 00:53:05,330 --> 00:53:06,880 in iOS-Entwicklung. 1012 00:53:06,880 --> 00:53:08,630 Aber schauen Sie sich diese und sehen, wenn du kannst 1013 00:53:08,630 --> 00:53:11,171 Analysieren durch, was los ist mit einigen dieser höherer Ordnung 1014 00:53:11,171 --> 00:53:13,790 Funktionen wie Filter, zu reduzieren, und Sie werden auch 1015 00:53:13,790 --> 00:53:17,060 siehe irgendwo hier Karte auch. 1016 00:53:17,060 --> 00:53:17,910 Es ist hier genau richtig. 1017 00:53:17,910 --> 00:53:20,410 Wo es eine Folge nehmen Noten und es wird tatsächlich 1018 00:53:20,410 --> 00:53:24,230 ordnen Sie mit dem Schalter Konstrukt, die Sie vielleicht von C zu erkennen, 1019 00:53:24,230 --> 00:53:27,640 aber eigentlich ist es viel mehr mächtiger als der Schalter Konstrukt 1020 00:53:27,640 --> 00:53:29,810 dass wir in C haben 1021 00:53:29,810 --> 00:53:31,930 >> Und wir werden, dass zur Anwendung jedes Element in der Liste 1022 00:53:31,930 --> 00:53:34,540 und tatsächlich erbringen der Brief Grade von jedem 1023 00:53:34,540 --> 00:53:40,780 dieser Klassen mit all diese Konzepte dass wir so gut wie vor gesprochen. 1024 00:53:40,780 --> 00:53:44,760 Nun wollen wir umgehen nur für einen Minute und sprechen über Strukturen. 1025 00:53:44,760 --> 00:53:49,680 Und so Strukturen sind eine Wartezeit in C, die wir waren in der Lage, eine neue Art von Daten zu definieren. 1026 00:53:49,680 --> 00:53:53,590 Strukturen existieren im Swift. 1027 00:53:53,590 --> 00:53:58,980 Und tun Sie so viele andere Konstrukte genannt Aufzählungen und Klassen, die wirklich 1028 00:53:58,980 --> 00:54:01,175 diese Idee, ein ganz anderen Ebene. 1029 00:54:01,175 --> 00:54:05,300 >> Und im Grunde ist es nur eine Möglichkeit, Die Definition einer neuen Art von Daten. 1030 00:54:05,300 --> 00:54:11,010 Also, wenn Sie get-- wenn Sie kommen in Klasse oder Strukturen oder Aufzählungen, 1031 00:54:11,010 --> 00:54:13,290 nicht verwirren von ihr. 1032 00:54:13,290 --> 00:54:16,280 Es ist nur die Art der Definition einige neue besondere Art von Daten. 1033 00:54:16,280 --> 00:54:20,230 Und das ist wirklich wichtig, wenn wir über iOS App-Entwicklung sprechen 1034 00:54:20,230 --> 00:54:24,630 denn alles, was besteht in der iOS-App 1035 00:54:24,630 --> 00:54:27,460 ist im Wesentlichen eine Aufgabe in irgendeiner Form. 1036 00:54:27,460 --> 00:54:31,980 Und eine Aufgabe ist im Grunde ein Klasse oder eine Aufzählung oder eine Struktur. 1037 00:54:31,980 --> 00:54:34,760 >> Also in diesem Fall bin ich Definition einer neuen Art von Daten 1038 00:54:34,760 --> 00:54:37,740 daß ich rufe Bewertung das ist ein paar Eigenschaften, einschließlich 1039 00:54:37,740 --> 00:54:41,040 ein Name und eine Sequenz von Noten. 1040 00:54:41,040 --> 00:54:43,470 So eine Art von Bewertung dass ich im Sinn haben 1041 00:54:43,470 --> 00:54:44,760 würde Quiz, zum Beispiel. 1042 00:54:44,760 --> 00:54:48,180 Ich will eine haben Einschätzung, dass ein Quiz war 1043 00:54:48,180 --> 00:54:51,460 und daß eine Vielzahl von Qualitäten hatte damit verbunden, für ein Quiz, 1044 00:54:51,460 --> 00:54:52,840 Quiz zwei, so weiter und so fort. 1045 00:54:52,840 --> 00:54:55,720 >> Oder ich könnte eine andere Art haben Lage für die Problem-Sets. 1046 00:54:55,720 --> 00:54:56,650 Und ich kann Dinge tun. 1047 00:54:56,650 --> 00:54:59,860 Ich kann eigentlich Funktionen innerhalb dieser Art 1048 00:54:59,860 --> 00:55:02,645 von Daten, die jetzt als Verfahren sind. 1049 00:55:02,645 --> 00:55:04,520 Also, wenn Sie jemals sehen die Wort-Methode, es ist wirklich 1050 00:55:04,520 --> 00:55:08,190 ist nur eine Funktion, die gilt auf einen sehr spezifischen Klasse, 1051 00:55:08,190 --> 00:55:10,100 oder eine sehr spezifische Art von Daten. 1052 00:55:10,100 --> 00:55:12,350 Es ermöglicht uns, die Daten innerhalb zu ändern. 1053 00:55:12,350 --> 00:55:15,510 >> Also mit anderen Worten, wenn ich will fügen Sie eine Klasse, um meine Einschätzung, 1054 00:55:15,510 --> 00:55:18,630 dann alles, was ich tun müssen, ist zu fügen Sie die Partitur, die eingegeben wurde 1055 00:55:18,630 --> 00:55:22,660 Um die Funktion in meine internen Eigenschaft. 1056 00:55:22,660 --> 00:55:25,880 Es gibt eine andere saubere Konstruktion hier in Swift, der in diesem Punkt Punkt Punkt ist 1057 00:55:25,880 --> 00:55:31,780 Operator, der die Noten können bedeutet, Jetzt akzeptieren beliebige Anzahl von ganzen Zahlen. 1058 00:55:31,780 --> 00:55:33,940 Und Noten wird eine sein Array mit ganzen Zahlen, dass 1059 00:55:33,940 --> 00:55:39,030 haben meine Funktion, bestanden die bedeutet, dass ich Sachen wie diese zu tun. 1060 00:55:39,030 --> 00:55:42,360 >> Ich kann keine Noten hinzufügen und einfach liefern eine beliebige Anzahl von ganzen Zahlen in sie 1061 00:55:42,360 --> 00:55:47,420 und tatsächlich ein Array zur Verfügung gestellt werden dieser Werte in meiner Funktion 1062 00:55:47,420 --> 00:55:50,270 oder in meinem Verfahren, wie es der Fall. 1063 00:55:50,270 --> 00:55:54,040 Nun ist dies wichtig, weil alles in Xcode, alles in iOS, 1064 00:55:54,040 --> 00:55:56,250 ist in der Tat ein Ziel. 1065 00:55:56,250 --> 00:55:59,630 So sollte man nicht vergessen wenn wir Büste offen Xcode 1066 00:55:59,630 --> 00:56:04,890 und vorwärts zu springen über iOS Varianten zwei und drei 1067 00:56:04,890 --> 00:56:08,820 und tatsächlich auf die Version vier gehen. 1068 00:56:08,820 --> 00:56:11,940 >> Und wieder, all dies wird über das Seminar Seite veröffentlicht. 1069 00:56:11,940 --> 00:56:16,980 iOS vier ist eine Art ausgewachsenen Umsetzung einer sehr einfachen Anwendung. 1070 00:56:16,980 --> 00:56:23,920 Und was diese app tut, ist es lädt eine Benutzeroberfläche, die wie folgt aussieht. 1071 00:56:23,920 --> 00:56:28,680 Auch wenn wir uns auf Storyboard klicken wir können sehen, dass dies, wie es aussieht. 1072 00:56:28,680 --> 00:56:31,320 Dies ist die Benutzeroberfläche. 1073 00:56:31,320 --> 00:56:33,676 Es hat einen Titel an der Spitze. 1074 00:56:33,676 --> 00:56:34,800 Ich habe es heißt Web-Galerie. 1075 00:56:34,800 --> 00:56:38,400 >> In der Mitte gibt es ein Element, heißt das Bild UI-Ansicht. 1076 00:56:38,400 --> 00:56:41,340 Und am Ende gibt es eine Werkzeugleiste mit einem einzigen Tasten dass 1077 00:56:41,340 --> 00:56:46,850 hat dehnbare Bereiche sind, die es erlauben, Zentrum in der Mitte dieser Symbolleiste. 1078 00:56:46,850 --> 00:56:51,780 Und was passiert, ist, dass, wenn dieses lädt sie eine JSON-Datei, die es herunterlädt 1079 00:56:51,780 --> 00:56:55,540 auf einem Server enthalten ist anderswo analysiert, dass JSON-Datei, 1080 00:56:55,540 --> 00:56:58,130 und die JSON-Datei sieht ein bisschen so aus. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 Die JSON-Datei sieht wie folgt aus. 1083 00:57:06,230 --> 00:57:08,650 Da ist es. 1084 00:57:08,650 --> 00:57:11,730 >> Es verfügt über einen Albumnamen und es hat eine Reihe von Fotos. 1085 00:57:11,730 --> 00:57:13,490 Jedes dieser Bilder haben einen Namen und auch 1086 00:57:13,490 --> 00:57:19,460 eine URL selbst, dass die Betreiber JPEG-Version dieser einzelnen Foto. 1087 00:57:19,460 --> 00:57:24,780 Also, was passiert ist, dass, wenn dieses Programm Lasten, es die JSON-Datei herunterlädt, 1088 00:57:24,780 --> 00:57:30,590 analysiert sie, legt all dies in das Äquivalent eines Arrays in IOS 1089 00:57:30,590 --> 00:57:33,020 App-Entwicklung, die eine NSArray ist. 1090 00:57:33,020 --> 00:57:37,520 Und dann kann ich dann laden diese Daten in eine Anwendung 1091 00:57:37,520 --> 00:57:41,100 und laden Sie es auf meinem Bildschirm. 1092 00:57:41,100 --> 00:57:44,760 >> Es ist ein Bild, das geladen wurde Mit der Taste ganz unten. 1093 00:57:44,760 --> 00:57:49,190 Wenn ich auf Get Nächstes Bild, dann zieht das Bild aus dem Internet 1094 00:57:49,190 --> 00:57:53,370 und das Bild ersetzt im Bild UI-Ansicht. 1095 00:57:53,370 --> 00:57:57,820 So können Sie diese herunterladen und tatsächlich schauen Sie es auf Ihrem Computer. 1096 00:57:57,820 --> 00:58:00,940 Und bauen und tatsächlich kompilieren Sie es auf Ihr Gerät. 1097 00:58:00,940 --> 00:58:04,710 Aber im Grunde war der Prozess Damit schaffen die storyboard-- 1098 00:58:04,710 --> 00:58:08,080 oder besser gesagt nicht create-- aber wählen Sie das Storyboard. 1099 00:58:08,080 --> 00:58:15,030 Und tatsächlich we'll--, wenn Sie nicht wissen mind-- wir werden nur ein paar Sekunden dauern, 1100 00:58:15,030 --> 00:58:18,390 tatsächlich zeigen, wie dies geschehen war. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Nur damit, wie wir tatsächlich Dies erreichen gemacht ein bisschen mehr 1103 00:58:27,820 --> 00:58:28,360 ersichtlich. 1104 00:58:28,360 --> 00:58:30,651 Einzelansicht Anwendung, ich bin werde dieses Seminar nennen 1105 00:58:30,651 --> 00:58:35,330 vier, die diese bestimmte Anzahl. 1106 00:58:35,330 --> 00:58:36,335 Speichern Sie die Datei auf dem Desktop. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, werde auf dem Storyboard klicken. 1109 00:58:42,110 --> 00:58:47,030 Und was ich tun werde, ist es, meine Bildansicht zu finden, 1110 00:58:47,030 --> 00:58:50,940 ziehen Sie sie auf meinen Benutzer Schnittstelle und vermitteln. 1111 00:58:50,940 --> 00:58:54,850 Jetzt brauchen Sie nur leider Zentrierung wird nicht eine ganze Menge zu tun, 1112 00:58:54,850 --> 00:58:58,680 außer einer Screen das ist genau so groß. 1113 00:58:58,680 --> 00:59:03,950 >> So können wir uns davon überzeugen durch Klicken dieses Doppelkreis Sache, 1114 00:59:03,950 --> 00:59:08,290 Senkung dieses Pop Menü hier und ändern 1115 00:59:08,290 --> 00:59:11,110 in der Vorschau anzeigen, wo wir eigentlich die Chance bekommen, eine Vorschau 1116 00:59:11,110 --> 00:59:13,530 Dies wird tatsächlich Blick auf anderen Geräten. 1117 00:59:13,530 --> 00:59:16,500 Wie wir sehen können, tun wir nicht einmal sehen es auf diesem speziellen Fall. 1118 00:59:16,500 --> 00:59:18,500 Also werde ich dies jetzt zu schließen. 1119 00:59:18,500 --> 00:59:22,100 >> Und ich werde wählen dieses Symbol unten ganz am 1120 00:59:22,100 --> 00:59:23,910 unteren Teil des Bildschirms. 1121 00:59:23,910 --> 00:59:26,584 Er sagt, Resolve Auto Layout Probleme. 1122 00:59:26,584 --> 00:59:28,000 Es tut uns leid, es am Boden zu schneiden. 1123 00:59:28,000 --> 00:59:36,360 Aber wenn ich an, dass Sie, was ich erhalten Sie dieses Pop up-- weggehen. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Da bekomme ich dieses Pop-up, dass erlaubt mir, fehlenden Einschränkungen hinzuzufügen. 1126 00:59:51,220 --> 00:59:53,780 Und dadurch, dass es dann irgendwie sperren 1127 00:59:53,780 --> 00:59:56,640 in den Mittelabschnitt der Bildschirm, wie ich erwarten könnte. 1128 00:59:56,640 --> 01:00:00,520 >> Um nun diese Schaltfläche an erhalten oben drauf, muss ich an die Redaktion zu gehen. 1129 01:00:00,520 --> 01:00:05,010 Zum Einbinden in und klicken Sie Navigation Controller. 1130 01:00:05,010 --> 01:00:08,900 Was das tun werden, ist, dass wird hinzufügen diese ganze andere Komponente, um sie, 1131 01:00:08,900 --> 01:00:11,310 aber es wird tatsächlich zu verbinden es zurück zu meiner ursprünglichen UI. 1132 01:00:11,310 --> 01:00:14,450 Und die Details wieder, wir nicht wirklich brauchen, um über die im Moment egal. 1133 01:00:14,450 --> 01:00:16,710 Aber ich möchte ein Baby haben Symbolleiste am unteren Rand. 1134 01:00:16,710 --> 01:00:18,530 Also werde ich Shows Toolbar überprüfen. 1135 01:00:18,530 --> 01:00:21,870 >> Und das bietet in meinen Augen, die jetzt woanders, 1136 01:00:21,870 --> 01:00:23,900 können wir sehen, dass es hier verlinkt. 1137 01:00:23,900 --> 01:00:28,710 Es bietet nun eine Symbolleiste bei tiefstem UI. 1138 01:00:28,710 --> 01:00:34,770 So, jetzt, statt der Auswahl ein Bildansicht kann ich ein Etikett zu finden, 1139 01:00:34,770 --> 01:00:41,140 oder vielmehr ein toolbar-- mal sehen, wo ist das? 1140 01:00:41,140 --> 01:00:41,890 Was heißt es? 1141 01:00:41,890 --> 01:00:49,760 Ein button-- Artikel bar-- item-- sorry-- Leistenschaltfläche Artikel. 1142 01:00:49,760 --> 01:00:54,590 Plop, dass es und tragen Sie eine Paar der flexible Räume auf beiden Seiten 1143 01:00:54,590 --> 01:00:57,429 um tatsächlich zu zentrieren, dass. 1144 01:00:57,429 --> 01:00:58,970 So jetzt habe ich meine UI erstellt, im Grunde. 1145 01:00:58,970 --> 01:01:01,428 Und ich kann es einen Namen geben, indem Doppelklick an der Spitze 1146 01:01:01,428 --> 01:01:04,880 hier und sagen, Web-Galerie und so weiter. 1147 01:01:04,880 --> 01:01:08,100 Nun wieder sind diese Elemente , die von ihnen selbst existieren. 1148 01:01:08,100 --> 01:01:10,400 Und ich habe die Verbindung sie meinen Code, 1149 01:01:10,400 --> 01:01:14,297 Ich durch wieder bringen tun können bis dieser Doppelkreis-Symbol, 1150 01:01:14,297 --> 01:01:15,380 Wechsel von der Vorschau. 1151 01:01:15,380 --> 01:01:18,950 Was, nebenbei bemerkt, jetzt können wir sehen, schön zentriert und wird gut aussehen 1152 01:01:18,950 --> 01:01:23,720 auf einer Vielzahl von Geräten. 1153 01:01:23,720 --> 01:01:27,280 >> Wechseln Sie in die automatische, die wird um das Viewcontroller-Code. 1154 01:01:27,280 --> 01:01:29,030 Und nun dieser Teil ist wichtig. 1155 01:01:29,030 --> 01:01:34,590 Damit Sie diese Verbindung herstellen zwei Elemente, Ihren Code auf der Benutzeroberfläche 1156 01:01:34,590 --> 01:01:36,680 Sie die Einzelteile zu wählen, dass Sie verbinden möchten. 1157 01:01:36,680 --> 01:01:39,570 So dass in diesem Fall haben wir eigentlich kodieren möchten 1158 01:01:39,570 --> 01:01:43,520 ändern, die enthalten ist Bild innerhalb dieses Bild UI-Ansicht. 1159 01:01:43,520 --> 01:01:47,070 Also, wenn Sie steuern Sie aus die Bildansicht und ziehen, 1160 01:01:47,070 --> 01:01:51,960 werden Sie feststellen, dass Sie eine kleine Bar, wenn Sie gehen, um alles dieses Popup lassen 1161 01:01:51,960 --> 01:01:53,550 up auftreten. 1162 01:01:53,550 --> 01:01:56,470 >> Und er sagt, dass wir um eine Verbindung herzustellen. 1163 01:01:56,470 --> 01:01:59,300 Und von hier aus möchte ich, um ihm ein Name, so etwas wie Galerie. 1164 01:01:59,300 --> 01:02:00,240 Drücken Sie die Eingabetaste. 1165 01:02:00,240 --> 01:02:03,040 Und das bietet tatsächlich eine Variable mit dem Namen Galerie 1166 01:02:03,040 --> 01:02:08,600 dass ich dann in meinem Code verweisen das Bild zu ändern, zum Beispiel. 1167 01:02:08,600 --> 01:02:10,430 Wie funktioniert dieser Code tatsächlich aus? 1168 01:02:10,430 --> 01:02:13,030 Wieder gut, ich will nicht zu verbringen zu viel Zeit auf sie. 1169 01:02:13,030 --> 01:02:15,430 Und ich ermutige Sie, laden Sie es und werfen Sie einen Blick. 1170 01:02:15,430 --> 01:02:18,330 Aber einer der am meisten Wichtig ist auch die Code 1171 01:02:18,330 --> 01:02:20,980 dass tatsächlich holt ein Bild. 1172 01:02:20,980 --> 01:02:26,470 >> Also in diesem Fall möchte ich In meinem Fotos zu bekommen 1173 01:02:26,470 --> 01:02:28,520 Array, das enthalten ist, in meiner Klasse. 1174 01:02:28,520 --> 01:02:33,390 Ich möchte definieren den Namen und die URL das ist nicht von dieser JSON analysiert wurde. 1175 01:02:33,390 --> 01:02:39,810 Eigentlich stellen Sie das Gerät an das erhalten URL, um die URL von diesem zu holen, 1176 01:02:39,810 --> 01:02:44,060 und dann holen die Daten aus der Inhalt der URL. 1177 01:02:44,060 --> 01:02:49,430 Dann wandeln die Daten in einem Bild indem man sie in die UI Bild. 1178 01:02:49,430 --> 01:02:52,880 Also noch einmal, das sind alles verschiedene Arten von Objekten, unterschiedliche Typen von Klassen. 1179 01:02:52,880 --> 01:02:58,410 >> Und dann kann ich dann meine gallery.image gleich dieser Daten. 1180 01:02:58,410 --> 01:03:00,750 Und das ist eine Art des Fleisches davon, die tatsächlich dann 1181 01:03:00,750 --> 01:03:08,250 in der Lage, die Daten from-- Wechsel ändern das Bild von der einen zur nächsten. 1182 01:03:08,250 --> 01:03:10,660 Also noch einmal, hoffentlich jetzt eine Menge der Konstrukte 1183 01:03:10,660 --> 01:03:12,240 macht ein wenig mehr Sinn. 1184 01:03:12,240 --> 01:03:15,260 Beachten Sie, dass es einige Ausrufezeichen hier. 1185 01:03:15,260 --> 01:03:19,810 Die Ausrufezeichen sind im wesentlichen auf die Extras bezogen. 1186 01:03:19,810 --> 01:03:22,657 >> Was ich im Grunde sagen, ist dass nicht einmal die Überprüfung 1187 01:03:22,657 --> 01:03:24,490 zu sehen, ob es Daten innerhalb dieser optional, 1188 01:03:24,490 --> 01:03:27,140 Ich werde weitermachen und übernehmen dass es und packen es. 1189 01:03:27,140 --> 01:03:31,340 Denken Sie daran, dass wir verwendet die Analogie Art von einem Paket für die optionals 1190 01:03:31,340 --> 01:03:34,700 und wir müssen die auspacken Paket und herausziehen der Daten. 1191 01:03:34,700 --> 01:03:37,570 Das Ausrufezeichen Kräfte, die tatsächlich passieren. 1192 01:03:37,570 --> 01:03:39,590 >> Aber ich weiß, dass dies sicher, weil ich überprüft 1193 01:03:39,590 --> 01:03:42,070 zu sehen, ob Bilddaten gleich ist auf Null, ich habe tatsächlich überprüfen 1194 01:03:42,070 --> 01:03:45,420 um, wenn diese optionale sehen Tatsächlich war, fehlgeschlagen. 1195 01:03:45,420 --> 01:03:47,110 Wäre dies in der Tat bereits ausgefallen. 1196 01:03:47,110 --> 01:03:52,450 Und so bin ich sicher, dass ich einmal, dieses zu erhalten Stelle ich sicher, dass die Daten auspacken. 1197 01:03:52,450 --> 01:03:55,710 Das könnte Sie auch sehen die Form eines Fragezeichens. 1198 01:03:55,710 --> 01:03:59,100 Wenn wir also nach unten scrollen, wo ich müssen tatsächlich die Daten analysieren. 1199 01:03:59,100 --> 01:04:01,850 >> Also lassen Sie sich nicht durch gesetzt werden diese Art von langen Namen. 1200 01:04:01,850 --> 01:04:06,580 Sie können in den Apple zu finden Entwickler-Site eine Menge 1201 01:04:06,580 --> 01:04:09,620 Bezugnahmen auf alle der Objekte und alle Prozesse 1202 01:04:09,620 --> 01:04:11,170 dass tatsächlich machen es möglich. 1203 01:04:11,170 --> 01:04:15,990 Aber beachten Sie, dass es sich im Wesentlichen eine Funktion, wo ich geben sie einige Daten. 1204 01:04:15,990 --> 01:04:18,410 Und ich wieder eine Art von Daten. 1205 01:04:18,410 --> 01:04:24,190 Und ich muss dies als Schlüsselwort verwenden wandeln sie in diesem NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Was wiederum eine optional NSDictionary. 1207 01:04:26,490 --> 01:04:31,070 Was ich dann müssen überprüfen Sie, ob sie existiert. 1208 01:04:31,070 --> 01:04:37,130 >> Also habe ich das verwenden können, wenn wir erfolgreiche Gleichen analysiert, 1209 01:04:37,130 --> 01:04:40,620 dann weiß ich, dass diese optional tatsächlich Daten enthält. 1210 01:04:40,620 --> 01:04:43,840 Oder, was ich hier tat, war, einfach davon ausgehen, dass, wenn es 1211 01:04:43,840 --> 01:04:49,067 keine Fehler aufgetreten sind, die es in der Tat sicher. 1212 01:04:49,067 --> 01:04:51,400 Also gut, ich möchte danke Ihnen allen sehr für Ihr Kommen. 1213 01:04:51,400 --> 01:04:53,540 Ich weiß, das war eine Menge, aber es war nur eine Stunde 1214 01:04:53,540 --> 01:04:55,920 über einige sprechen ziemlich fortgeschrittenen Zeug. 1215 01:04:55,920 --> 01:04:59,640 Und so werden Sie hoffentlich ein zu bekommen Möglichkeit, den gesamten Code herunterladen 1216 01:04:59,640 --> 01:05:01,657 und werfen Sie einen besseren, gründlichen Blick darauf werfen. 1217 01:05:01,657 --> 01:05:04,240 Art überzeugen Sie sich von all von dem Zeug, das geht auf. 1218 01:05:04,240 --> 01:05:06,800 Und ich möchte Ihnen danken alle wieder gekommen sind. 1219 01:05:06,800 --> 01:05:08,760 Und viel Glück mit Ihrem Abschlussarbeiten. 1220 01:05:08,760 --> 01:05:10,600 Ich wünsche ihnen einen wunderbaren Tag. 1221 01:05:10,600 --> 01:05:11,467