1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendáriz: Witam wszystkich, Zapraszamy do rozwoju aplikacji iOS 3 00:00:14,340 --> 00:00:15,020 z szybkich. 4 00:00:15,020 --> 00:00:15,870 Jestem Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Jestem precepter komputera Nauka w Szkole tutaj 6 00:00:18,920 --> 00:00:21,200 Inżynierii i Nauk Stosowanych. 7 00:00:21,200 --> 00:00:24,310 I szybkie jest rzeczywiście rodzaju języka bardzo schludny. 8 00:00:24,310 --> 00:00:27,190 I mam pewne plany na dzisiaj. 9 00:00:27,190 --> 00:00:31,430 Tak więc w ciągu następnej godziny lub tak jedziemy spojrzeć na samego iOS rozwoju aplikacji 10 00:00:31,430 --> 00:00:36,640 za pomocą Xcode i faktycznie jednych bardzo podstawowe, bardzo proste aplikacje. 11 00:00:36,640 --> 00:00:40,070 I patrząc na sposób, w jaki cię faktycznie mają te aplikacje, 12 00:00:40,070 --> 00:00:42,887 i budować je, a właściwie umieścić je na urządzeniu z systemem iOS. 13 00:00:42,887 --> 00:00:44,970 Niektóre z rzeczy, które nie będziemy patrzeć na 14 00:00:44,970 --> 00:00:47,540 będzie obejmować takie rzeczy jak zrobieniem aplikacji 15 00:00:47,540 --> 00:00:48,940 i wprowadzenie go na app store. 16 00:00:48,940 --> 00:00:52,930 Istnieje wiele tutoriali online, które pomoże Ci w tym aspekcie nim. 17 00:00:52,930 --> 00:00:56,230 Ale także dlatego, że jak część CS50, masz 18 00:00:56,230 --> 00:00:59,780 do przyłączenia się do rozwoju firmy Apple Zespół, Zespół programistów aplikacji CS50 jest. 19 00:00:59,780 --> 00:01:02,790 Jeśli jeszcze tego nie zrobiłeś, że jeszcze i jesteś związany z CS50, 20 00:01:02,790 --> 00:01:04,810 Polecam, że Ciebie zrobić, bo, że 21 00:01:04,810 --> 00:01:08,820 jest to, jak jesteś w stanie stworzyć niektóre programy w Xcode, 22 00:01:08,820 --> 00:01:11,890 budować je, a właściwie położyć je na niektórych urządzeniach z systemem iOS 23 00:01:11,890 --> 00:01:14,087 jeśli rzeczywiście mają Urządzenie iOS fizyczne. 24 00:01:14,087 --> 00:01:16,670 Jeśli nie masz fizycznego iOS Urządzenie to jest więcej niż dobrze. 25 00:01:16,670 --> 00:01:19,810 Rzeczywiście można opracować dla iOS. 26 00:01:19,810 --> 00:01:22,390 I Xcode ma symulator, który pozwala 27 00:01:22,390 --> 00:01:26,570 aby zobaczyć swoją aplikację w działania na komputerze. 28 00:01:26,570 --> 00:01:30,440 Ale to rodzaj jest fajną rzeczą faktycznie grać i interakcji 29 00:01:30,440 --> 00:01:34,235 z aplikacją od rzeczywistego urządzenia. 30 00:01:34,235 --> 00:01:37,360 Więc jest kilka wymagań faktycznie cały ten rozwój. 31 00:01:37,360 --> 00:01:39,151 Jednym z nich jest to, że trzeba mieć komputer Mac. 32 00:01:39,151 --> 00:01:44,770 To musi być uruchomiony 10.9.4 lub nowszej w tym celu rozwoju z szybkich. 33 00:01:44,770 --> 00:01:47,770 >> Możesz użyć wcześniej Wersja do rozwijania 34 00:01:47,770 --> 00:01:50,810 z Objective C dla iOS i Mac. 35 00:01:50,810 --> 00:01:53,990 Ale polecam, i wiele Przykłady, które my widzimy dzisiaj, 36 00:01:53,990 --> 00:01:55,700 korzystać 10,10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Więc jeśli nie zostały jeszcze zaktualizowane, jest to dobry pretekst, aby to zrobić. 38 00:02:00,910 --> 00:02:05,480 Teraz Xcode 6.1 to najnowsza wersja Zintegrowane środowisko programistyczne 39 00:02:05,480 --> 00:02:08,979 że Apple zapewnia, że ​​za darmo można pobrać poza App Store. 40 00:02:08,979 --> 00:02:11,220 I to polecam również uruchomić najnowszą wersję. 41 00:02:11,220 --> 00:02:14,700 >> Jeśli zdarzy ci się być uruchomione wcześniej wersja Xcode 5 i poniżej po prostu 42 00:02:14,700 --> 00:02:16,741 po prostu nie obsługuje szybkie ogóle. 43 00:02:16,741 --> 00:02:19,490 Oraz wersje beta z sześciu, które zostały wydane w okresie letnim, 44 00:02:19,490 --> 00:02:21,770 Popieram szybka, ale nie była liczba ogromna 45 00:02:21,770 --> 00:02:25,220 zmian w języku tyle tak, że kod, który jesteś 46 00:02:25,220 --> 00:02:28,320 będzie patrzeć na ciebie i że może znaleźć w internecie 47 00:02:28,320 --> 00:02:33,294 Tak naprawdę to nie skompilować poprawnie w tych poprzednich wersji Xcode. 48 00:02:33,294 --> 00:02:35,460 Więc jeszcze raz, jeśli nie robisz jeszcze mieć konto dewelopera 49 00:02:35,460 --> 00:02:38,560 Polecam udać się do developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Zaloguj się, utworzyć konto dewelopera i dołączyć do zespołu CS50 aplikacja rozwoju. 51 00:02:42,240 --> 00:02:45,530 To zapewni Państwu możliwość kompilować aplikacje 52 00:02:45,530 --> 00:02:47,840 i umieścić je na swoim urządzeniu. 53 00:02:47,840 --> 00:02:49,222 OK, więc zaczynajmy. 54 00:02:49,222 --> 00:02:50,930 Pierwszą rzeczą, mamy zamiar zrobić, to 55 00:02:50,930 --> 00:02:55,140 rzeczywiście stworzyć bardzo prosty projekt w Xcode 56 00:02:55,140 --> 00:02:59,530 które by pozwolić złożyć wniosek. 57 00:02:59,530 --> 00:03:03,170 >> Więc jeśli nie masz jeszcze Xcode otwarta, śmiało i otwarcie go 58 00:03:03,170 --> 00:03:04,270 i utworzyć nowy projekt. 59 00:03:04,270 --> 00:03:06,570 Specjalny ekran powitalny otworzy i daje 60 00:03:06,570 --> 00:03:08,800 niektóre opcje o co jest to, że chcesz to zrobić. 61 00:03:08,800 --> 00:03:12,170 Wystarczy powiedzieć, że chcesz stworzyć nowy projekt, nowa aplikacja. 62 00:03:12,170 --> 00:03:15,650 Ten pojawi się okno, przy założeniu, że używasz Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Teraz, a dla Czas trwania seminarium, 64 00:03:17,650 --> 00:03:19,990 będziemy używać pojedyncze aplikacje widok, po prostu 65 00:03:19,990 --> 00:03:22,590 rodzaj zgłoszenia podstawowego na uzyskanie stopy mokre. 66 00:03:22,590 --> 00:03:25,200 I można rozgałęzia się na własną rękę stamtąd. 67 00:03:25,200 --> 00:03:27,660 >> Kliknij przycisk Dalej w tym momencie. 68 00:03:27,660 --> 00:03:30,796 Teraz tutaj jest kilka rzeczy, że może chcesz wprowadzić. 69 00:03:30,796 --> 00:03:32,670 Nazwa produktu nazwa projektu. 70 00:03:32,670 --> 00:03:34,859 W tym przypadku, jestem po prostu będzie to nazwać Seminar1 71 00:03:34,859 --> 00:03:36,150 ponieważ jest to pierwszy przykład. 72 00:03:36,150 --> 00:03:38,290 Nazwa organizacji, w w tym przypadku jest tylko moje nazwisko. 73 00:03:38,290 --> 00:03:41,760 Oczywiście można go zmienić z własnym nazwiskiem lub CS50. 74 00:03:41,760 --> 00:03:46,160 Identyfikator organizacji, jeśli Ciebie zdarzy się, że na stronie internetowej po prostu wziąć 75 00:03:46,160 --> 00:03:49,940 Nazwa domeny w odwrócić, com.yourname. 76 00:03:49,940 --> 00:03:54,200 i nazwa produktu powinien pojawić się automatycznie 77 00:03:54,200 --> 00:03:55,820 po tym, jak identyfikator wiązki. 78 00:03:55,820 --> 00:03:59,200 >> Oczywiście, że jesteśmy język zamiar używać na dzisiaj jest szybki. 79 00:03:59,200 --> 00:04:02,590 Można, oczywiście, użyć Objective C za to, ale dzisiaj będzie szybka. 80 00:04:02,590 --> 00:04:04,920 A my na razie powiedzieć, Urządzenia uniwersalne, więc 81 00:04:04,920 --> 00:04:06,900 że działa zarówno na iPada i iPhone'a. 82 00:04:06,900 --> 00:04:10,040 I będziemy opuścić rdzeń Dane niesprawdzone zachować 83 00:04:10,040 --> 00:04:12,830 Projekt stosunkowo proste, na razie. 84 00:04:12,830 --> 00:04:14,430 Więc śmiało i kliknij przycisk Dalej. 85 00:04:14,430 --> 00:04:16,471 I to się mnie zapytać gdzie chcę, aby go zapisać. 86 00:04:16,471 --> 00:04:19,250 Ja po prostu zapisać go na pulpicie teraz. 87 00:04:19,250 --> 00:04:22,267 >> Dobrze, więc teraz to jest to, co będzie zdarzyć, kiedy rzeczywiście otwarte Xcode. 88 00:04:22,267 --> 00:04:24,100 I zauważyć, że Pierwsza rzeczą, którą zobaczyć 89 00:04:24,100 --> 00:04:28,770 jest to, że wykrzyknik Tożsamość podpisanie mówi nie znaleziono. 90 00:04:28,770 --> 00:04:31,520 I zrobił to celowo na moim komputerze i jestem 91 00:04:31,520 --> 00:04:34,220 mając nadzieję, że będę być w stanie rzeczywiście go naprawić, 92 00:04:34,220 --> 00:04:37,860 bo chcę zobaczyć, jak to będą faktycznie pracować na swoim komputerze. 93 00:04:37,860 --> 00:04:40,400 >> Śmiało i kliknij kwestii poprawek. 94 00:04:40,400 --> 00:04:45,400 Program zapyta, czy masz istniejącego konta Apple dla deweloperów. 95 00:04:45,400 --> 00:04:48,330 To jest, gdy połączenie CS50 deweloperami aplikacji 96 00:04:48,330 --> 00:04:51,240 ważne jest, aby nie tylko masz konta aplikację, 97 00:04:51,240 --> 00:04:53,690 ale masz również Zdolność do podpisywania aplikacji 98 00:04:53,690 --> 00:04:56,420 i umieścić je na urządzeniu z systemem iOS. 99 00:04:56,420 --> 00:04:58,957 To not-- kliknięcie Wydanie poprawka nie jest konieczne 100 00:04:58,957 --> 00:05:01,040 jeśli tylko będzie budowy i rozwoju lokalnego, 101 00:05:01,040 --> 00:05:03,520 całkowicie w symulatorze iOS. 102 00:05:03,520 --> 00:05:05,820 >> Ale teraz mam zamiar opracowanie i umieścić je 103 00:05:05,820 --> 00:05:08,160 na moim iPadzie, który będzie w stanie nadawać również. 104 00:05:08,160 --> 00:05:10,770 Więc chcę, aby faktycznie dodać to. 105 00:05:10,770 --> 00:05:13,670 I to się zapytać mnie o moje jabłko ID. 106 00:05:13,670 --> 00:05:15,700 Więc to będzie to. 107 00:05:15,700 --> 00:05:18,940 I muszę pobrać Moje strony Hasło, które jest tutaj. 108 00:05:18,940 --> 00:05:27,760 Więc daj mi tylko jedną sekundę, aby stwierdzić, że, i skopiuj to i wklej go tutaj. 109 00:05:27,760 --> 00:05:28,580 >> Kliknij przycisk Dodaj. 110 00:05:28,580 --> 00:05:31,095 To się mnie zapytać która drużyna chcę dołączyć. 111 00:05:31,095 --> 00:05:33,240 Mam zamiar zrobić szkołę inżynierii. 112 00:05:33,240 --> 00:05:35,680 Kliknij przycisk Dołącz. 113 00:05:35,680 --> 00:05:37,780 Ups, to błędna. 114 00:05:37,780 --> 00:05:40,730 Zróbmy to jedno. 115 00:05:40,730 --> 00:05:42,060 Mam nadzieję, że jeden będzie działać. 116 00:05:42,060 --> 00:05:44,220 Że jeden nadal nie działa. 117 00:05:44,220 --> 00:05:46,610 Kończy nam się od dobrych tutaj. 118 00:05:46,610 --> 00:05:48,260 OK, to trzeba pracować. 119 00:05:48,260 --> 00:05:50,816 Teraz zamknij to. 120 00:05:50,816 --> 00:05:54,450 Teraz zróbmy szkołę inżynierii, kliknij wybrać. 121 00:05:54,450 --> 00:06:00,190 >> A teraz mam nadzieję, że po Kilka sekund, can-- OK, 122 00:06:00,190 --> 00:06:02,550 Będę cofnąć i wniosek. 123 00:06:02,550 --> 00:06:05,410 O człowieku, to będzie działać. 124 00:06:05,410 --> 00:06:08,890 OK, spróbuję inny. 125 00:06:08,890 --> 00:06:11,167 Zróbmy ten jeden tutaj. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Pokazy na żywo zawodzą mnie. 128 00:06:19,310 --> 00:06:22,540 Możemy mieć do powrotu do tak budowę całkowicie na miejscu, 129 00:06:22,540 --> 00:06:25,050 ale to byłoby OK w tym przypadku. 130 00:06:25,050 --> 00:06:28,560 >> Więc, podczas gdy w rzeczywistości jest to pracy, co mamy zamiar zrobić, to po prostu 131 00:06:28,560 --> 00:06:31,190 stworzyć bardzo prosta Witaj aplikacji Świata. 132 00:06:31,190 --> 00:06:32,340 Więc to jest Xcode. 133 00:06:32,340 --> 00:06:37,300 A jeśli nie widziałem go jeszcze, to może być trochę na pierwszy zastraszenia. 134 00:06:37,300 --> 00:06:41,430 Istnieje wiele szyb, nie Wiele doodads w różnych dziedzinach. 135 00:06:41,430 --> 00:06:44,300 Ale tak sobie sprawę, że nie ma naprawdę kilka głównych komponentów 136 00:06:44,300 --> 00:06:46,580 do tego środowiska programistycznego. 137 00:06:46,580 --> 00:06:51,090 Po lewej są wszystkie pliki które mają zastosowanie do programu 138 00:06:51,090 --> 00:06:52,997 lub do konkretnego projektu. 139 00:06:52,997 --> 00:06:55,080 Będziemy klikając wokół w niektórych z nich, a my będziemy 140 00:06:55,080 --> 00:06:57,660 podkreślić najbardziej Najważniejszymi w czasie. 141 00:06:57,660 --> 00:06:59,650 Na prawej, mamy posiada zestaw atrybutów. 142 00:06:59,650 --> 00:07:02,920 I wszystkie te atrybuty, nie Tafle są różne dla tych atrybutów. 143 00:07:02,920 --> 00:07:06,770 Szyby zmienia się w zależności Kontekst głównej treści, które 144 00:07:06,770 --> 00:07:08,290 dzieje się w środku. 145 00:07:08,290 --> 00:07:11,740 Teraz może faktycznie pokazać w średnim Ci wiele rzeczy, na przykład 146 00:07:11,740 --> 00:07:13,290 Twój Sam kod. 147 00:07:13,290 --> 00:07:17,070 A może rzeczywiście have-- kiedy Kliknięcie w serii ujęć, które 148 00:07:17,070 --> 00:07:21,270 jest, nawiasem mówiąc, po prostu graficzny reprezentacja użytkownika 149 00:07:21,270 --> 00:07:25,350 interfejs dla application-- a następnie w okienku atrybuty 150 00:07:25,350 --> 00:07:27,334 na bardzo daleko w prawo faktycznie zmienić. 151 00:07:27,334 --> 00:07:29,750 Teraz istnieje kilka innych rzeczy, które chcę zwrócić. 152 00:07:29,750 --> 00:07:33,360 Jakby można zwiedzić w okolicy w środowisku na własną rękę. 153 00:07:33,360 --> 00:07:35,730 Ale jedną z rzeczy, które są bardzo użyteczne 154 00:07:35,730 --> 00:07:38,470 Przycisk ten jest tutaj w prawym górnym rogu okna. 155 00:07:38,470 --> 00:07:41,230 Jest to przycisk, który wygląda na znacznie 156 00:07:41,230 --> 00:07:46,090 lewy ma pkt dwa okręgi i sortuj 157 00:07:46,090 --> 00:07:49,540 z dwoma strzałkami, wskazując od siebie. 158 00:07:49,540 --> 00:07:52,640 Jeśli przełączać się między standardowy edytor, który 159 00:07:52,640 --> 00:07:55,560 jest daleko lewej, jedna który jest domyślnie zaznaczona, 160 00:07:55,560 --> 00:08:01,040 oraz dwa koła nakładania siebie, co rzeczywiście się 161 00:08:01,040 --> 00:08:02,210 Widok jest podwójna szyba. 162 00:08:02,210 --> 00:08:04,240 >> I to jest w rzeczywistości będzie użyteczny dla nas 163 00:08:04,240 --> 00:08:07,330 kiedy musimy połączyć elementy w interfejsie użytkownika do kodu. 164 00:08:07,330 --> 00:08:09,330 I będziemy mówić więcej o że za chwilę. 165 00:08:09,330 --> 00:08:12,050 Ale sobie sprawę, że jeśli się nawet więcej, jak to szyby 166 00:08:12,050 --> 00:08:15,830 można uprościć widok po prostu Trochę klikając powrotem 167 00:08:15,830 --> 00:08:20,680 na jednego edytora. 168 00:08:20,680 --> 00:08:21,580 Jak na razie dobrze. 169 00:08:21,580 --> 00:08:24,560 Więc w zasadzie mamy kod na z lewej, z prawej atrybutów, 170 00:08:24,560 --> 00:08:28,260 i bez względu na to pracujemy tutaj w samym centrum. 171 00:08:28,260 --> 00:08:30,390 >> Więc tutaj Kliknąłem na głównej serii ujęć. 172 00:08:30,390 --> 00:08:33,350 I storyboard, znowu, jest sposób, w Xcode 173 00:08:33,350 --> 00:08:38,110 że rzeczywiście można utworzyć użytkownika Interfejs używając po prostu przeciągnij i upuść 174 00:08:38,110 --> 00:08:39,130 techniki. 175 00:08:39,130 --> 00:08:41,190 I tak w naszej Pierwszy wniosek ten 176 00:08:41,190 --> 00:08:42,720 jest dokładnie to, co mamy zamiar zrobić. 177 00:08:42,720 --> 00:08:45,950 Mamy zamiar zejść do bardzo daleko dolna część w prawo 178 00:08:45,950 --> 00:08:49,900 ekranu, która zawiera różne elementy użytkownika 179 00:08:49,900 --> 00:08:53,270 które można następnie kliknij i przeciągnij do tworzenia interfejsu użytkownika. 180 00:08:53,270 --> 00:08:55,550 >> Teraz wszystkie te elementy są nazywane odsłon 181 00:08:55,550 --> 00:08:57,370 ponieważ dostarczają one jakąś myślą. 182 00:08:57,370 --> 00:09:00,190 Jest widok obrazu, na Przykładem, rzeczywiście pokazać 183 00:09:00,190 --> 00:09:01,740 Obraz na interfejsie użytkownika. 184 00:09:01,740 --> 00:09:04,310 Nie ma widoku tabeli do rzeczywiście pokazać tabelę. 185 00:09:04,310 --> 00:09:05,190 Tak dalej, i tak dalej. 186 00:09:05,190 --> 00:09:08,250 Istnieje szeroka różnorodność Widoki, które można wybrać tutaj. 187 00:09:08,250 --> 00:09:11,100 Więc teraz jedziemy szukać na etykiecie. 188 00:09:11,100 --> 00:09:13,550 Możesz po prostu przewinąć wszystkich listach, że tam jest. 189 00:09:13,550 --> 00:09:15,460 Ale to nie szukaj bar na samym dole 190 00:09:15,460 --> 00:09:19,460 który ułatwia identyfikację Poglądy, że rzeczywiście 191 00:09:19,460 --> 00:09:22,020 Aby przeciągnąć do swojego interfejsu użytkownika. 192 00:09:22,020 --> 00:09:23,560 >> Znalazłem etykietę. 193 00:09:23,560 --> 00:09:28,430 Zamierzam go przeciągnąć tutaj, bezpośrednio na mojej przykładowej aplikacji. 194 00:09:28,430 --> 00:09:30,130 Właśnie tam w środku wygląda dobrze. 195 00:09:30,130 --> 00:09:33,180 I mam zamiar wpisać "Hello World!" 196 00:09:33,180 --> 00:09:33,810 Naciśnij Enter. 197 00:09:33,810 --> 00:09:34,877 Teraz mam etykietę. 198 00:09:34,877 --> 00:09:36,960 To nie wygląda na to centered całkiem słusznie. 199 00:09:36,960 --> 00:09:38,500 Tak więc mogę spróbować ponownie wyśrodkować go. 200 00:09:38,500 --> 00:09:42,100 Na szczęście oferuje nich prowadzi do rzeczy o wiele łatwiejsze. 201 00:09:42,100 --> 00:09:44,130 Mam zamiar spróbować go skompilować. 202 00:09:44,130 --> 00:09:46,570 Miejmy nadzieję, że rzeczywiście działa tutaj. 203 00:09:46,570 --> 00:09:52,870 A jeśli nie, to za chwilę to w rzeczywistości pojawia się na moim iPadzie. 204 00:09:52,870 --> 00:09:54,360 To właśnie tutaj. 205 00:09:54,360 --> 00:09:55,060 Nie jest. 206 00:09:55,060 --> 00:09:56,590 >> OK, więc to jest to. 207 00:09:56,590 --> 00:09:57,160 Skończyliśmy. 208 00:09:57,160 --> 00:09:58,868 Utworzyliśmy naszą bardzo pierwszy wniosek. 209 00:09:58,868 --> 00:10:01,330 Teraz oczywiście to nic nie robi. 210 00:10:01,330 --> 00:10:02,280 To tylko etykiety. 211 00:10:02,280 --> 00:10:07,350 Nie ma żadnego związku między Interfejs użytkownika i kod. 212 00:10:07,350 --> 00:10:10,130 Jeśli więc rzeczywiście chciał do stworzenia tego połączenia, 213 00:10:10,130 --> 00:10:14,790 jeśli faktycznie chciał mieć jakiś komunikacji pomiędzy elementami 214 00:10:14,790 --> 00:10:17,540 że istnieje na Ekran i kod 215 00:10:17,540 --> 00:10:19,810 pozwala nam kontrolować te elementy, a następnie 216 00:10:19,810 --> 00:10:23,570 faktycznie trzeba spojrzeć na samego kodu. 217 00:10:23,570 --> 00:10:27,000 >> Więc to jest to, co się nazywa ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 Oraz, zwłaszcza w przypadku Twoje pierwsze kilka programów, 219 00:10:30,080 --> 00:10:33,120 to będzie coś w rodzaju Większość kodu, które enter-- 220 00:10:33,120 --> 00:10:35,980 będzie w niniejszym dokumencie tutaj. 221 00:10:35,980 --> 00:10:38,390 Jest wiele rzeczy że jest tutaj tak daleko, prawda? 222 00:10:38,390 --> 00:10:42,660 Jest import UI klasy zestaw, zastąpić, [? funk,?] wszystkie te różne rzeczy. 223 00:10:42,660 --> 00:10:45,820 I to nie do końca jasne, co jest to, że to wszystko oznacza. 224 00:10:45,820 --> 00:10:48,570 Warto więc zrobić krok do tyłu, poza z Xcode na trochę 225 00:10:48,570 --> 00:10:52,420 i spojrzeć na samego języka, szybkiej. 226 00:10:52,420 --> 00:10:56,370 >> Więc z szybka, to było w projektowanie i rozwój 227 00:10:56,370 --> 00:10:58,645 w Apple za około cztery rok do mojego zrozumienia. 228 00:10:58,645 --> 00:11:01,270 I jest kilka funkcji o tym, że są naprawdę zadbane. 229 00:11:01,270 --> 00:11:03,910 Przede wszystkim, to skompilowane język, tak jak C. 230 00:11:03,910 --> 00:11:06,120 Więc najpierw trzeba skompilować i uruchomić je 231 00:11:06,120 --> 00:11:09,580 zanim można rzeczywiście wykonanie kodu, które powoduje. 232 00:11:09,580 --> 00:11:14,250 Ale nie jest, w przeciwieństwie do C, interaktywne zapyta, że ​​rzeczywiście można uruchomić 233 00:11:14,250 --> 00:11:16,680 i wpisz dowolne polecenia w. 234 00:11:16,680 --> 00:11:20,280 I bardzo podobnie do konsoli JavaScript, które możesz znać teraz, 235 00:11:20,280 --> 00:11:24,506 faktycznie dokona oceny tych Polecenia i dostarczyć do Ciebie wyjście. 236 00:11:24,506 --> 00:11:26,380 I już nawet brane że do następnego poziomu 237 00:11:26,380 --> 00:11:29,100 i stworzyliśmy coś place zabaw w Xcode zwanych 238 00:11:29,100 --> 00:11:31,720 które pozwalają na wizualnie pracy z kodem. 239 00:11:31,720 --> 00:11:34,910 A my rzeczywiście zobaczyć kilka przykładów stanowi, że w tylko trochę. 240 00:11:34,910 --> 00:11:41,680 Jest on oparty na leży u podstaw C. C to, ponieważ wszystkie kompilatorów 241 00:11:41,680 --> 00:11:46,820 tworzenie kodu z C i tworzenia kodu obiektu z nim. 242 00:11:46,820 --> 00:11:49,240 Ale to naprawdę akcji stosunkowo niewiele składni. 243 00:11:49,240 --> 00:11:50,721 Będzie to wyglądało całkiem inaczej. 244 00:11:50,721 --> 00:11:51,970 Nie będzie pewne podobieństwa. 245 00:11:51,970 --> 00:11:54,140 Ale nie będą sporo różnic 246 00:11:54,140 --> 00:11:57,200 w porównaniu do, powiedzmy, JavaScript czy PHP. 247 00:11:57,200 --> 00:11:59,070 A my wskazać te w chwilę. 248 00:11:59,070 --> 00:12:01,420 >> Teraz jeden z największych rzeczy o szybkie, że miło 249 00:12:01,420 --> 00:12:05,650 jest to, że, zwłaszcza w porównaniu do C, to ma być bezpieczny. 250 00:12:05,650 --> 00:12:08,100 Wszystko w nim ma być bardzo silnie wpisane. 251 00:12:08,100 --> 00:12:10,780 W rzeczywistości jest to prawie denerwujące na początku, gdy po raz pierwszy 252 00:12:10,780 --> 00:12:15,610 rozpocząć pracę z szybkich, tylko jak wiele wymusza rodzajów wszędzie. 253 00:12:15,610 --> 00:12:17,860 Wszystko to ciąg musi pozostać ciąg. 254 00:12:17,860 --> 00:12:22,100 To jest bardzo trudne do sortowania z nawróconego go lub zmusić go do innej formie. 255 00:12:22,100 --> 00:12:23,800 >> I znowu pokażemy przykłady. 256 00:12:23,800 --> 00:12:26,830 Ale w końcu zrozumieć, że ta ma na celu ochronę, 257 00:12:26,830 --> 00:12:32,010 i przez Ciebie mam na myśli kod, z upaść w jakiś okropny sposób, gdy 258 00:12:32,010 --> 00:12:34,330 masz jakieś niedopasowane typu. 259 00:12:34,330 --> 00:12:36,040 I znowu z nim pracować. 260 00:12:36,040 --> 00:12:40,210 Ponieważ będzie to frustrujące w pierwszym jak spróbować dowiedzieć się, dlaczego właśnie 261 00:12:40,210 --> 00:12:43,070 dostajesz to niezwykłe błędu czynienia z typami. 262 00:12:43,070 --> 00:12:45,350 Ale będzie to warto w końcu. 263 00:12:45,350 --> 00:12:47,267 >> To zajmuje się automatyczne zarządzanie pamięcią, 264 00:12:47,267 --> 00:12:49,100 tak nie prawda mamy do czynienia z rzeczy 265 00:12:49,100 --> 00:12:51,400 jak malloc i wolne i wszystkie z tego rodzaju rzeczy. 266 00:12:51,400 --> 00:12:53,066 I to jest również przeznaczone do ogólników. 267 00:12:53,066 --> 00:12:58,360 Tak więc, możemy korzystać z Xcode do tworzenie aplikacji iOS i aplikacji Mac, 268 00:12:58,360 --> 00:13:00,380 możemy też po prostu użyć jako język skryptowy. 269 00:13:00,380 --> 00:13:03,660 I tak możemy go używać sortowania od zamiast PHP lub zamiast 270 00:13:03,660 --> 00:13:07,800 Pythona faktycznie szybko analizować i przetwarzać 271 00:13:07,800 --> 00:13:09,800 niektóre dane, które mamy na naszym komputerze. 272 00:13:09,800 --> 00:13:13,290 >> Posiada szeroką gamę nowoczesnych Cechy, opcjonalne, zmienność, 273 00:13:13,290 --> 00:13:17,900 leków generycznych, zamknięcia, a wiele z tego rzeczy może lub nie może rozpoznać. 274 00:13:17,900 --> 00:13:22,810 I to jest właśnie rodzaj niefortunne część języka, że ​​niektóre z nich 275 00:13:22,810 --> 00:13:26,700 rodzaj futurystycznych, nowoczesnych elementów, które zawarte są w elementy 276 00:13:26,700 --> 00:13:34,520 tak głęboko zakorzenione, że rzeczywiście będzie trzeba uczyć CS50.5 trochę. 277 00:13:34,520 --> 00:13:37,305 >> Musimy dowiedzieć się trochę więcej o niektórych funkcji w celu 278 00:13:37,305 --> 00:13:40,180 naprawdę zrozumieć, co się dzieje dalej, i tak, że można spojrzeć na kod 279 00:13:40,180 --> 00:13:42,450 i nie czuć się całkowicie utracone. 280 00:13:42,450 --> 00:13:44,820 A zobaczysz co mam na myśli przez które w zaledwie minutę. 281 00:13:44,820 --> 00:13:47,830 OK, więc let's-- dość tego rodzaj materiału teoretycznego. 282 00:13:47,830 --> 00:13:52,450 Niech spojrzy na nasze Pierwsza szybka programu. 283 00:13:52,450 --> 00:13:53,590 To jedna linia kodu. 284 00:13:53,590 --> 00:13:57,690 Linia 14 właśnie tutaj, to mówi drukowanie l n komentarzy CS50. 285 00:13:57,690 --> 00:14:01,160 >> Więc jest kilka rzeczy, które to bardzo różni się o tym porównaniu 286 00:14:01,160 --> 00:14:04,140 do rzeczy, że może być wykorzystane do spośród C, na przykład. 287 00:14:04,140 --> 00:14:08,390 Jednym z nich jest to, że nie ma intmain, nie ma to punkt, 288 00:14:08,390 --> 00:14:10,790 nie ma nic z tego dodatkowych rzeczy. 289 00:14:10,790 --> 00:14:13,790 To, jak standardowy I / O, na przykład bibliotek 290 00:14:13,790 --> 00:14:16,580 które rzeczywiście świadczą standardowe funkcje języka, 291 00:14:16,580 --> 00:14:19,180 są automatycznie dołączane jako częścią standardowej biblioteki Swift 292 00:14:19,180 --> 00:14:20,680 i które są importowane automatycznie. 293 00:14:20,680 --> 00:14:23,740 Nie musisz robić że import ręcznie. 294 00:14:23,740 --> 00:14:27,360 >> Intmain nie istnieje, ponieważ Głównym punktem dostępu do kodu 295 00:14:27,360 --> 00:14:29,470 jest rzeczywiście w początek kodu. 296 00:14:29,470 --> 00:14:32,000 Więc każdy kod, który trzeba od początku 297 00:14:32,000 --> 00:14:34,940 rzeczywiście będą realizowane na początku. 298 00:14:34,940 --> 00:14:36,520 Więc to naprawdę znacznie upraszcza. 299 00:14:36,520 --> 00:14:38,470 Zauważ również, że nie ma średnik. 300 00:14:38,470 --> 00:14:41,040 Nie ma średniki w tym języku. 301 00:14:41,040 --> 00:14:43,261 Możesz umieścić oświadczenie osobnej linii 302 00:14:43,261 --> 00:14:45,510 a następnie następny wiersz reprezentuje inne oświadczenie. 303 00:14:45,510 --> 00:14:47,420 Jeśli chcesz umieścić mulitiple sprawozdanie online, 304 00:14:47,420 --> 00:14:49,086 to trzeba oddzielić je średnikami. 305 00:14:49,086 --> 00:14:50,940 Jednak dla większości w dobrym stylu, jesteśmy 306 00:14:50,940 --> 00:14:56,530 nigdy nie zobaczymy średników na cele sprawozdania oddzielających 307 00:14:56,530 --> 00:14:58,420 w szybkich. 308 00:14:58,420 --> 00:14:59,820 Więc jak to właściwie działa? 309 00:14:59,820 --> 00:15:04,080 No bardzo podobnie jak C my faktycznie skompilować tego. 310 00:15:04,080 --> 00:15:10,640 I tak możemy to zrobić za pomocą swift c, a następnie 1.swift. 311 00:15:10,640 --> 00:15:13,850 A następnie po kilku minut będzie kompilacji 312 00:15:13,850 --> 00:15:16,340 a następnie można uruchomić pozycję jednego. 313 00:15:16,340 --> 00:15:19,691 I od niego po prostu powiedzieć: "Witaj CS50." 314 00:15:19,691 --> 00:15:20,690 Niesamowite, więc nie idziemy. 315 00:15:20,690 --> 00:15:22,273 Oto nasz pierwszy program Hello World. 316 00:15:22,273 --> 00:15:24,790 Przejdźmy do numer dwa. 317 00:15:24,790 --> 00:15:30,450 >> Teraz w this-- to się zmieniło nieznacznie, bo podczas gdy normalnie Ciebie 318 00:15:30,450 --> 00:15:34,720 do-- w rzeczywistości zawsze trzeba skompilować szybkiego wniosku przed tobą 319 00:15:34,720 --> 00:15:37,180 faktycznie uruchomić it-- jeden wspaniałych funkcji 320 00:15:37,180 --> 00:15:40,230 które wspomniałem wcześniej, że szybka w rzeczywistości może być stosowany w rodzaju 321 00:15:40,230 --> 00:15:43,390 w trybie pseudo-interpretacyjne, nie jest w rzeczywistości, jak tłumacza. 322 00:15:43,390 --> 00:15:46,690 Ale co to zrobi to nie jest, w rzeczywistości, szybka aplikacja 323 00:15:46,690 --> 00:15:47,520 że można uruchomić. 324 00:15:47,520 --> 00:15:51,050 >> Tak na przykład, jeśli chcesz wpisać szybka tutaj, co będzie 325 00:15:51,050 --> 00:15:52,330 jest to, że dostaniesz wiersz. 326 00:15:52,330 --> 00:15:59,040 I można wpisać swift Kod, wydrukować cześć, i uruchomić go. 327 00:15:59,040 --> 00:16:01,867 I to właściwie print-- dobrze, że nie w tym przypadku drukowania 328 00:16:01,867 --> 00:16:04,450 ponieważ koncentruje drukowany out, który nie jest tu widoczne. 329 00:16:04,450 --> 00:16:06,660 Ale jest w stanie funkcjonować. 330 00:16:06,660 --> 00:16:09,580 I tak w tym przypadku, jestem po prostu zamiar używać tego jako skrypt. 331 00:16:09,580 --> 00:16:11,259 I faktycznie mogę uruchomić ten kod tam. 332 00:16:11,259 --> 00:16:13,800 Tak więc sposób, że rzeczywiście uruchomić będzie nieco różne, 333 00:16:13,800 --> 00:16:15,710 ale zobaczysz, że za chwilę. 334 00:16:15,710 --> 00:16:18,890 Teraz, w tym przypadku, co mamy zamiar zrobić, to najpierw zdefiniować zmienną. 335 00:16:18,890 --> 00:16:22,160 Tak to jest jak zdefiniujemy Zmienna w szybkie, 336 00:16:22,160 --> 00:16:25,900 jest używamy słowa kluczowego let, a następnie pod nazwą zmiennej 337 00:16:25,900 --> 00:16:29,280 a następnie zapewniamy niektóre inicjowanie danych opcjonalnie. 338 00:16:29,280 --> 00:16:34,660 Więc w tym przypadku mamy do definiowania stała nazwie nazwa, 339 00:16:34,660 --> 00:16:37,775 i będziemy używać, że w Wyjście naszej linii drukowania 340 00:16:37,775 --> 00:16:39,590 Na samym dole, cześć nazwy. 341 00:16:39,590 --> 00:16:43,260 >> Zauważmy teraz, że zamiast za pomocą% s, możemy ująć nazwę tego 342 00:16:43,260 --> 00:16:49,960 zmienną / () i móc złączyć w treści tego 343 00:16:49,960 --> 00:16:51,790 ciąg w tym ciągu. 344 00:16:51,790 --> 00:16:56,510 Teraz w przeciwieństwie do C, łańcuch jest Rzeczywista prawdziwe wpisz szybkich. 345 00:16:56,510 --> 00:16:59,240 I tak to siedzi obok ints i obok 346 00:16:59,240 --> 00:17:02,220 podwaja się bardzo łatwo i oczywiście w porównaniu 347 00:17:02,220 --> 00:17:05,450 niektóre z innego Języki, które widzieliśmy. 348 00:17:05,450 --> 00:17:07,980 Więc to będzie faktycznie działać jak można by oczekiwać. 349 00:17:07,980 --> 00:17:10,540 >> Mogę uruchomić 2.swift. 350 00:17:10,540 --> 00:17:14,390 I widzimy, że moje nazwisko jest faktycznie łączone w "Cześć Dan." 351 00:17:14,390 --> 00:17:16,050 OK, super. 352 00:17:16,050 --> 00:17:17,485 Przechodząc do liczby trzy. 353 00:17:17,485 --> 00:17:19,359 Teraz było trochę białego kłamstwa, że 354 00:17:19,359 --> 00:17:23,369 Mówi się, że sposób, w jaki możemy zadeklarować Zmienne było używać słowa kluczowego let. 355 00:17:23,369 --> 00:17:27,640 Tyle razy, jak ewentualnie można zrobić chcesz używać pozwól, bo co to robi 356 00:17:27,640 --> 00:17:29,280 Jest to określa stałą. 357 00:17:29,280 --> 00:17:33,010 I to mówi, że może szybko zoptymalizować szybkość aplikacji 358 00:17:33,010 --> 00:17:36,230 ponieważ wiadomo, że zmienna ta nie ulegnie zmianie. 359 00:17:36,230 --> 00:17:38,760 >> Tak ocenia ostrożnie jeśli masz zamiar używać 360 00:17:38,760 --> 00:17:41,382 dla zmiennej cele zmieniając go. 361 00:17:41,382 --> 00:17:43,340 A kiedy masz zamiar utworzyć zmienną tylko 362 00:17:43,340 --> 00:17:47,010 do przechowywania niektórych danych i to jest faktycznie nie zamierza zmieniać. 363 00:17:47,010 --> 00:17:50,150 Więc to pojęcie niezmienności, to nie jest faktycznie się zmieni, 364 00:17:50,150 --> 00:17:53,740 jest ważne, nawet w daleko w definiowaniu zmiennych. 365 00:17:53,740 --> 00:17:56,870 Więc tutaj mamy zdefiniowane nazwy, niech imię, a w tym przypadku 366 00:17:56,870 --> 00:18:02,120 to stała, która jest typu ciąg, i to jest równe Dan. 367 00:18:02,120 --> 00:18:05,580 >> Tak więc podczas gdy w przed Wersja, to infers-- i "to" 368 00:18:05,580 --> 00:18:08,220 Mam na myśli swift-- swift wnioskuje typ danych 369 00:18:08,220 --> 00:18:10,850 że mamy wpisaną do zmiennej. 370 00:18:10,850 --> 00:18:12,930 W tym przypadku możemy być jawne. 371 00:18:12,930 --> 00:18:17,590 Więc potem nazwę tego zmienna ma nazwę, a następnie dwukropek. 372 00:18:17,590 --> 00:18:21,350 I po dwukropku my również określić typ danych. 373 00:18:21,350 --> 00:18:24,694 Więc nie jest to nazwa lub int string name czy coś takiego. 374 00:18:24,694 --> 00:18:26,860 Ale zamiast pozwolić etykietę, jesteśmy określaniu, czy 375 00:18:26,860 --> 00:18:29,090 to stałe lub zmienne, następuje nazwa, 376 00:18:29,090 --> 00:18:31,870 następnie wpisz Opcjonalnie. 377 00:18:31,870 --> 00:18:34,730 >> Więc w tym przypadku mamy do definiowania nazwa ta jest ciągiem. 378 00:18:34,730 --> 00:18:35,790 Mówimy jest Dan. 379 00:18:35,790 --> 00:18:39,270 A teraz mam innej zmiennej, w tym przypadku nazywa się to etykieta. 380 00:18:39,270 --> 00:18:42,090 Ale zauważ, że jest to prefiksem słowa kluczowego var. 381 00:18:42,090 --> 00:18:44,430 Środki słów kluczowych var że zmienna ta może 382 00:18:44,430 --> 00:18:48,720 zmienia się w późniejszym punkcie czas, gdzieś w kodzie 383 00:18:48,720 --> 00:18:52,480 może faktycznie zmienić to i to nie da nam żadnej konkretnej błąd. 384 00:18:52,480 --> 00:18:56,760 >> Możemy zrobić standardową złączenie Operator tutaj, podając znak plus 385 00:18:56,760 --> 00:19:00,130 faktycznie dodać nasze wymienić w tym ciągu. 386 00:19:00,130 --> 00:19:02,921 A potem możemy wydrukować jak widzieliśmy przed chwilą. 387 00:19:02,921 --> 00:19:04,920 Teraz powiedzmy, że Ciebie Aby utworzyć zmienną 388 00:19:04,920 --> 00:19:06,586 ale ty nie chcesz zainicjować jeszcze. 389 00:19:06,586 --> 00:19:08,590 Jeszcze nie chcą umieścić w niej żadnych danych. 390 00:19:08,590 --> 00:19:11,760 Otóż ​​trzeba powiedzieć szybka, co typ danych 391 00:19:11,760 --> 00:19:16,430 będzie, zanim można właściwie zdefiniować go prawidłowo. 392 00:19:16,430 --> 00:19:20,360 >> Więc w tym przypadku, gdy mamy zdefiniowane Zmienna o nazwie klasy musimy być 393 00:19:20,360 --> 00:19:24,450 wprost o jej rodzaju, ponieważ nie można wywnioskować po prostu patrząc 394 00:19:24,450 --> 00:19:27,300 na dane zainicjowany które dostarczają do niego. 395 00:19:27,300 --> 00:19:30,050 To daje nam błąd, jeśli Wystarczy wpisać klasy var, na przykład, 396 00:19:30,050 --> 00:19:31,830 ponieważ nie ma w związku z tym rodzaj. 397 00:19:31,830 --> 00:19:33,353 Tak więc stopień = 100. 398 00:19:33,353 --> 00:19:35,790 Tak, że 100 jest liczbą całkowitą, to bardzo ładnie pasuje do tego. 399 00:19:35,790 --> 00:19:36,998 Będzie ona nadal funkcjonować. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Możemy zobaczyć, jak wtedy Można łączyć to w. 402 00:19:43,022 --> 00:19:44,730 Teraz może być kuszony, jeśli rzeczywiście 403 00:19:44,730 --> 00:19:48,610 chciał złączyć klasy do innego ciągu tekstowego, 404 00:19:48,610 --> 00:19:52,560 pod innym tekstem, który będzie po prostu używać tego samego operatora złączenie. 405 00:19:52,560 --> 00:19:54,630 I że zazwyczaj jest to prawdą. 406 00:19:54,630 --> 00:20:00,540 Ale szybko nie pozwoli ci pośrednio zmienić typ danych. 407 00:20:00,540 --> 00:20:03,440 A więc w tym przypadku jest Linia, 25, nie 408 00:20:03,440 --> 00:20:06,650 ponieważ klasa jest liczbą całkowitą, a nie ciąg. 409 00:20:06,650 --> 00:20:08,760 A więc istnieje niedopasowanie zestaw typów. 410 00:20:08,760 --> 00:20:11,780 Więc trzeba być jawne, kiedy chcesz zmienić te dane, 411 00:20:11,780 --> 00:20:14,080 jeśli chcesz zmusić tego Dane w inny rodzaj 412 00:20:14,080 --> 00:20:17,250 i powiedzieć: OK, chcę wziąć Ten gatunek, który jest liczbą całkowitą, 413 00:20:17,250 --> 00:20:19,050 i przekonwertować go na ciąg. 414 00:20:19,050 --> 00:20:23,970 >> Więc biorę stolicy Stringi wszystkie typy, można zauważyć, są aktywowane, 415 00:20:23,970 --> 00:20:26,280 Int, Pokój, String, tak dalej i tak dalej. 416 00:20:26,280 --> 00:20:28,930 Wszystkie z nich są aktywowane tak, aby ułatwić. 417 00:20:28,930 --> 00:20:32,240 I powiemy wykorzystać String przechodzą do klasy to. 418 00:20:32,240 --> 00:20:35,020 I stworzy Łańcuch z tej liczby całkowitej. 419 00:20:35,020 --> 00:20:37,970 A potem możemy złączyć dwa bardzo ładnie. 420 00:20:37,970 --> 00:20:40,500 Wszelkie pytania dotyczące tego rzeczy do tej pory? 421 00:20:40,500 --> 00:20:43,770 W porządku, niech pług poprzez na numer cztery. 422 00:20:43,770 --> 00:20:47,870 >> Teraz porozmawiajmy o niektórych bardziej zaawansowanych struktury, takie jak tablice i pętle. 423 00:20:47,870 --> 00:20:54,920 I w przeciwieństwie do C, tablice w swift nie są reprezentowane przez wskaźniki. 424 00:20:54,920 --> 00:20:58,730 Wskaźniki w szybkich, chociaż istnieją, zwany 425 00:20:58,730 --> 00:21:02,840 jak niebezpieczne wskaźników lub niektóre podobnego typu jak ten, 426 00:21:02,840 --> 00:21:04,950 nie są one narażone na ciebie normalnie. 427 00:21:04,950 --> 00:21:07,300 Tak więc bardzo trudne staje na manipulowanie 428 00:21:07,300 --> 00:21:10,020 pamięci bezpośrednio z komputera. 429 00:21:10,020 --> 00:21:11,670 >> Więc tablice są po prostu typ danych. 430 00:21:11,670 --> 00:21:16,830 A oni odwoływać przy użyciu tego rodzaju od teraz kwadratowa notacja nawiasów 431 00:21:16,830 --> 00:21:18,280 które dotąd. 432 00:21:18,280 --> 00:21:21,130 Ale jeśli rzeczywiście chcesz określenie typu zmiennej 433 00:21:21,130 --> 00:21:24,330 jako tablica niektóre Szczególny rodzaj, a następnie 434 00:21:24,330 --> 00:21:27,150 umieścić tego typu w nawiasach kwadratowych. 435 00:21:27,150 --> 00:21:30,260 Więc to, co mówię jest to, że Tworzę zmienną 436 00:21:30,260 --> 00:21:33,930 gatunki typu int tablicy. 437 00:21:33,930 --> 00:21:37,380 A ja ustawienie, że równe części Dane założone, co w tym przypadku 438 00:21:37,380 --> 00:21:42,960 100, 0, 90, 85, który jest po prostu Kolekcja tutaj arbitralnych ocen. 439 00:21:42,960 --> 00:21:46,480 Teraz w tym przypadku mogę, Pamiętam, usuń typ, 440 00:21:46,480 --> 00:21:49,580 i byłoby w stanie go wyprowadzić oparte na zainicjowane danych. 441 00:21:49,580 --> 00:21:51,990 Ale jeśli usunąłem to i Musiałem ustawić go później, 442 00:21:51,990 --> 00:21:56,840 to chciałbym mieć pewność, że mam tam typ. 443 00:21:56,840 --> 00:21:58,750 Dobrze, przejdźmy dalej. 444 00:21:58,750 --> 00:22:03,010 Więc can-- tablice dostarczają nam wiele 445 00:22:03,010 --> 00:22:07,130 metod za pośrednictwem tej notacji z kropkami na ciebie to prawdopodobnie teraz znać. 446 00:22:07,130 --> 00:22:10,360 Tak grades.count np mówi nam dokładnie numer 447 00:22:10,360 --> 00:22:13,680 Elementy, które są zawarte w tej tablicy. 448 00:22:13,680 --> 00:22:17,260 >> Jeśli chcę dodać additional-- teraz zauważyć, że jest to zmienna 449 00:22:17,260 --> 00:22:20,140 i not-- jest zmienna i nie stała, która 450 00:22:20,140 --> 00:22:24,410 Oznacza to, że można zmienić zawartość tej tablicy, mogę dodać obiekty do niego. 451 00:22:24,410 --> 00:22:28,870 Ale nie mogę tylko powiedzieć, stopnie a następnie w nawiasach kwadratowych 452 00:22:28,870 --> 00:22:33,280 cztery, ponieważ będzie poza granicami błędu w tym przypadku. 453 00:22:33,280 --> 00:22:36,190 Jeśli chcę, aby faktycznie zmiana rozmiar tablicy, 454 00:22:36,190 --> 00:22:41,140 Muszę użyć metody dot append coś dodać na samym końcu. 455 00:22:41,140 --> 00:22:46,900 Mogę jednak zmiany poszczególne indeksy. 456 00:22:46,900 --> 00:22:48,920 >> Więc mogę używać klas Następnie kwadratowych i wsporniki 457 00:22:48,920 --> 00:22:52,480 zera do manipulowania to pierwszy indeks i tak dalej, jak można by się normalnie spodziewać. 458 00:22:52,480 --> 00:22:56,530 I mogę zrobić to samo, aby faktycznie odbierać dane z tym również. 459 00:22:56,530 --> 00:23:00,420 Teraz nie ma również rodzaj ozdobnego metoda robi to, stopnie plus równych 460 00:23:00,420 --> 00:23:02,525 a potem jeszcze indeksu, które append-- 461 00:23:02,525 --> 00:23:04,400 lub nie inny index-- ale inna lista, która 462 00:23:04,400 --> 00:23:07,340 doda tej listy do tyłu ocen. 463 00:23:07,340 --> 00:23:09,780 I klas będzie następnie zawierać wszystko. 464 00:23:09,780 --> 00:23:13,850 Ale to jakby dodatkową rzecz że jestem tylko pokazano, dla zabawy. 465 00:23:13,850 --> 00:23:14,910 >> Teraz nie ma pętli. 466 00:23:14,910 --> 00:23:18,970 I to jest początek, gdzie wszystko zaczyna się zmieniać trochę. 467 00:23:18,970 --> 00:23:22,920 Zauważ, jak jest to dla pętli różni się od pętli w C 468 00:23:22,920 --> 00:23:26,470 Teraz będę pamiętać, że do pętli w Swift może 469 00:23:26,470 --> 00:23:30,650 będzie wyglądać jak na pętli w C, ale istnieje wiele więcej przydatnych konstrukcji 470 00:23:30,650 --> 00:23:37,840 które zasadniczo eliminują potrzebę mieć do var i równa 0 średnik i 471 00:23:37,840 --> 00:23:40,340 jest mniejsza od pewnej długości tak dalej, i tak dalej, prawda? 472 00:23:40,340 --> 00:23:42,940 A konstrukt jest tylko jeden z nich. 473 00:23:42,940 --> 00:23:49,030 >> Na indeksie, indeks jest nowa zmienne, w tym przypadku, w zakresie. 474 00:23:49,030 --> 00:23:52,730 I to, co mówię jest to, że nie ma Zakres od 0 aż do 475 00:23:52,730 --> 00:23:55,870 ale nie w tym grades.count. 476 00:23:55,870 --> 00:23:58,470 Więc to kropka kropka mniej niż znak reprezentuje 477 00:23:58,470 --> 00:24:05,040 Zakres wartości zaczynając od zera na drodze do grades.count minus 1. 478 00:24:05,040 --> 00:24:07,070 Istnieje oddzielny Operator, który istnieje, 479 00:24:07,070 --> 00:24:13,320 co jest dot dot dot, które będzie oznacza to, że chcę, zakres zera 480 00:24:13,320 --> 00:24:16,310 do klas liczyć włącznie. 481 00:24:16,310 --> 00:24:19,130 >> Jednak w tym przypadku, ponieważ te tablice są zera indeks, my oczywiście 482 00:24:19,130 --> 00:24:23,290 nie chcę, aby przejść do Maksymalna liczba ocen. 483 00:24:23,290 --> 00:24:26,390 Mogę zsumować stopnie, a może po spodziewać, i wyjście wszystkich tych rzeczy. 484 00:24:26,390 --> 00:24:29,620 OK, przejściem. 485 00:24:29,620 --> 00:24:32,270 Teraz porozmawiajmy o funkcji. 486 00:24:32,270 --> 00:24:35,465 W celu określenia funkcji użyć słowa kluczowego funk. 487 00:24:35,465 --> 00:24:38,090 I znowu, w Swift trzeba być bardzo ostrożnym z typami. 488 00:24:38,090 --> 00:24:41,530 Dostarczyć do parametrów to definiując np 489 00:24:41,530 --> 00:24:45,440 nazwa parametru oraz Następnie Colin, typ danych, 490 00:24:45,440 --> 00:24:47,690 że można oczekiwać, że Parametr do zaakceptowania. 491 00:24:47,690 --> 00:24:50,700 >> Więc w tym przypadku mamy Funkcja o nazwie count klasy druku. 492 00:24:50,700 --> 00:24:54,630 Akceptuje zmienną dziennik ocen, czy raczej parametr zwany ujawniać ich. 493 00:24:54,630 --> 00:24:59,267 I spodziewamy się, że ujawniać ich być tablicą liczb całkowitych. 494 00:24:59,267 --> 00:25:01,350 Jeśli to dziennik ocen jest pusty, będziemy drukować jedną rzecz. 495 00:25:01,350 --> 00:25:06,090 W przeciwnym razie będziemy drukować numer gatunkowym, że rzeczywiście posiada. 496 00:25:06,090 --> 00:25:09,470 >> Teraz, jeśli chcemy, aby powrócić niektóre wartości, a następnie drogą 497 00:25:09,470 --> 00:25:14,595 że definicja ta jest zmienić by korzystać z tej strzałki słowa kluczowego, 498 00:25:14,595 --> 00:25:16,870 lub korzystać z tej strzałki signifiant. 499 00:25:16,870 --> 00:25:19,440 Więc jedziemy do zdefiniowania Funkcja zwana średnia. 500 00:25:19,440 --> 00:25:21,940 Jedziemy do przyjęcia listę numerów. 501 00:25:21,940 --> 00:25:25,430 I mamy zamiar wrócić podwójne, które, miejmy nadzieję, 502 00:25:25,430 --> 00:25:31,270 jest średnią z tej tablicy. 503 00:25:31,270 --> 00:25:34,570 A żeby to zrobić, aby faktycznie wyliczenia tej średniej, 504 00:25:34,570 --> 00:25:38,651 weźmiemy sumę, a my z Oczywiście Podsumowując wszystkie obiekty 505 00:25:38,651 --> 00:25:39,400 w tej tablicy. 506 00:25:39,400 --> 00:25:41,480 >> Zauważ, że nie jest nowy Styl pętli tutaj. 507 00:25:41,480 --> 00:25:45,450 Nie mamy się wprost o Iterowanie nad każdego elementu, 508 00:25:45,450 --> 00:25:48,280 ale możemy zamiast powiedzieć gatunek i dziennik ocen, znaczenie 509 00:25:48,280 --> 00:25:50,930 że dla każdego element, który mamy w tym, 510 00:25:50,930 --> 00:25:53,482 zapewniają, że element ten Zmienna o nazwie klasy. 511 00:25:53,482 --> 00:25:54,940 I chcę, aby coś z tym zrobić. 512 00:25:54,940 --> 00:26:00,350 Więc idę do sumy wszystkich tych danych i rzeczywiście powrócić podwójnego podziału. 513 00:26:00,350 --> 00:26:04,436 >> Zauważcie, ponownie tu jest Koncepcja podziału całkowitej w Swift. 514 00:26:04,436 --> 00:26:06,810 Jeśli chcesz podwoić podział bo chcesz po przecinku, 515 00:26:06,810 --> 00:26:09,460 to musisz być jawne, nie tylko o jednej stronie, 516 00:26:09,460 --> 00:26:14,030 dlatego, że nie będzie to pozwalają do zmuszania danych z każdej strony tego, 517 00:26:14,030 --> 00:26:17,030 trzeba rzeczywiście Oczywiście obie strony na język deblu 518 00:26:17,030 --> 00:26:19,440 tak, że jesteś bardzo wyraźnie o upewniając 519 00:26:19,440 --> 00:26:23,370 że robisz podwójny podział. 520 00:26:23,370 --> 00:26:26,150 >> Idźmy dalej. 521 00:26:26,150 --> 00:26:31,150 Więc jeśli naprawdę chcesz accept-- a więc w tym konkretnym przykładzie, 522 00:26:31,150 --> 00:26:34,260 jest to nadal polecenie aplikacja online. 523 00:26:34,260 --> 00:26:37,920 I zaczynamy zobaczyć niektóre z ograniczenia młodego języku 524 00:26:37,920 --> 00:26:41,850 na tym, że choć możemy dostęp za pomocą argumentów 525 00:26:41,850 --> 00:26:44,940 to process.arguments, to wciąż niekoniecznie najczystszym 526 00:26:44,940 --> 00:26:46,200 rzecz, jaką kiedykolwiek widziałem. 527 00:26:46,200 --> 00:26:49,142 Ale w zasadzie to zachęcam do rodzaju patrzeć na tego kodu 528 00:26:49,142 --> 00:26:51,100 i spróbować dowiedzieć się, co dokładnie się dzieje. 529 00:26:51,100 --> 00:26:55,030 >> Zasadniczo, co się dzieje jest to, że bierzemy listę argumentów 530 00:26:55,030 --> 00:26:57,610 i zostały zmuszanie ich do liczby całkowite, a następnie jesteśmy 531 00:26:57,610 --> 00:27:03,620 zamiar używać, jako sposób na drukowanie na średnią wszystkich naszych gatunków. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Przechodząc. 534 00:27:07,350 --> 00:27:11,190 Teraz jest jeszcze jeden rodzaj data-- inny typ danych, zamiast tablic 535 00:27:11,190 --> 00:27:14,940 zwane słowniki, które są bardzo podobna do mieszania tabele lub mapy hash 536 00:27:14,940 --> 00:27:18,560 i jest również podobny Tablice asocjacyjne PHP. 537 00:27:18,560 --> 00:27:20,770 Więc mają pojęcia kluczy i wartości. 538 00:27:20,770 --> 00:27:23,780 >> I są określone także ten plac notacja nawiasów, 539 00:27:23,780 --> 00:27:26,750 ale różnica polega że słowniki mają 540 00:27:26,750 --> 00:27:29,370 wewnątrz nawiasach kwadratowych, dwukropkiem. 541 00:27:29,370 --> 00:27:33,850 I Dwukropek oddziela dane wpisz to jest klucz i wartość. 542 00:27:33,850 --> 00:27:38,540 Więc w tym przypadku, mam zamiar stworzyć Słownik przyjąć pewne stopnie. 543 00:27:38,540 --> 00:27:44,200 I to ma być od typu string: int, 544 00:27:44,200 --> 00:27:46,940 Oznacza to, że wszystkie Klucze będą ciągi, 545 00:27:46,940 --> 00:27:53,080 a wszystkie wartości tych Klucze będą liczbami całkowitymi. 546 00:27:53,080 --> 00:27:55,780 >> Oznacza to, że mogę a następnie odwołać się do określonych danych 547 00:27:55,780 --> 00:28:00,490 że chcę używać tych klawiszy, a niż przy użyciu wskaźników liczbowych jak ja 548 00:28:00,490 --> 00:28:04,350 miałby na standardowej tablicy. 549 00:28:04,350 --> 00:28:06,470 Teraz zobaczmy, tam jedna ważna rzecz 550 00:28:06,470 --> 00:28:10,790 że chciałbym również wspomnieć o Ta szczególna sekwencja kodu. 551 00:28:10,790 --> 00:28:12,910 I to jest to, że nie ma Innym rodzajem danych 552 00:28:12,910 --> 00:28:15,580 czy raczej nie ma to idea danych, który jest 553 00:28:15,580 --> 00:28:18,340 zawarte w Swift nazywa ewentualne,. 554 00:28:18,340 --> 00:28:21,270 >> A co to znaczy Opcjonalne że przyjmuje do wiadomości, 555 00:28:21,270 --> 00:28:27,500 że czasem nie będziemy uzyskać dane, które faktycznie oczekiwać. 556 00:28:27,500 --> 00:28:31,400 A więc co mam na myśli, że is-- niech przyjrzeć się tej sekwencji kodu 557 00:28:31,400 --> 00:28:38,910 która iteruje wszystkie argumenty, które zostały przekazane do tego kodu 558 00:28:38,910 --> 00:28:43,460 i stara się je przekształcić, stara podzielić na różnych ciągów 559 00:28:43,460 --> 00:28:47,310 ponieważ przyjmuje bardzo Szczególny rodzaj argumentu. 560 00:28:47,310 --> 00:28:51,530 I wtedy to będzie próbować zmusić struny, które reprezentują numery 561 00:28:51,530 --> 00:28:55,460 do liczb całkowitych, które są stopnie, że mogę to obliczyć. 562 00:28:55,460 --> 00:28:58,230 >> Więc w zasadzie mam zamiar skorzystać z tej funkcji split, że 563 00:28:58,230 --> 00:29:00,080 istnieje w Swift biblioteka standardowa. 564 00:29:00,080 --> 00:29:03,720 Zamierzam przejść do niego w ciąg, który chcę podzielić. 565 00:29:03,720 --> 00:29:06,980 I wtedy w użyciu to rodzaj składni funky, które 566 00:29:06,980 --> 00:29:09,670 Nie wiem, czy my będziemy dostać się do, ale być może, że 567 00:29:09,670 --> 00:29:14,320 rzeczywiście określić precyzyjne znak, że chcemy podzielić się. 568 00:29:14,320 --> 00:29:16,030 Więc co to właściwie wygląda? 569 00:29:16,030 --> 00:29:18,740 Rzućmy okiem na faktycznie działa ten kod. 570 00:29:18,740 --> 00:29:22,000 >> Tak na przykład, powiedzmy, że mam Quiz i mam 50 na ten temat. 571 00:29:22,000 --> 00:29:23,960 I mam PSETs i Mam sto na ten temat. 572 00:29:23,960 --> 00:29:29,180 A ja got-- istnieje inny Quiz i mam 40 na ten temat. 573 00:29:29,180 --> 00:29:33,520 I naciśnij Enter, a ostatecznie, co stanie się to, że, co robi 574 00:29:33,520 --> 00:29:37,730 podejmuje te parametry, podział struny w tych dwukropkami, 575 00:29:37,730 --> 00:29:41,390 uznając, że nie ma dwa elementy w każdej z nich, 576 00:29:41,390 --> 00:29:43,700 i to jest w zasadzie śledzenie każdego. 577 00:29:43,700 --> 00:29:49,226 >> Więc mam w moim słowniku quiz, którego Wartość ta jest reprezentowany przez liczbę 50, 578 00:29:49,226 --> 00:29:54,290 Mam pset, który ma wartość 100, i jednego quizu, który ma wartość 40. 579 00:29:54,290 --> 00:29:57,400 Następnie później w kodzie I faktycznie średnio wszystkich tych wartości 580 00:29:57,400 --> 00:30:01,160 oraz listę wszystkich kluczy że zwłaszcza słownika. 581 00:30:01,160 --> 00:30:03,217 Ale to jest ważne tak, że można zauważyć, 582 00:30:03,217 --> 00:30:06,050 co się dzieje, jest to, że to, co chcesz zrobić, to podjąć ten ciąg 583 00:30:06,050 --> 00:30:11,450 i podzielić go na tej postaci, które możemy zrobić ponownie tego podziału 584 00:30:11,450 --> 00:30:15,690 Funkcja przy użyciu tego rodzaju ciekawe, że istnieje tutaj składni. 585 00:30:15,690 --> 00:30:17,880 >> Tylko na razie zakładamy, że to jest OK. 586 00:30:17,880 --> 00:30:19,980 Przyjrzymy się więcej na ten w zaledwie chwilę. 587 00:30:19,980 --> 00:30:23,230 Ale teraz jest ciekawa aspekt, że faktycznie 588 00:30:23,230 --> 00:30:27,250 chcesz spróbować przekonwertować to ciąg do liczby całkowitej. 589 00:30:27,250 --> 00:30:29,720 Ale w innych językach co może się zdarzyć, 590 00:30:29,720 --> 00:30:33,440 że to prawdopodobnie spróbować to zrobić i albo wrócić 591 00:30:33,440 --> 00:30:36,185 jakiś wartownik wartość jak negatywny 592 00:30:36,185 --> 00:30:39,420 a może null lub coś w tym stylu. 593 00:30:39,420 --> 00:30:41,070 A może to po prostu spowodował błąd. 594 00:30:41,070 --> 00:30:42,820 I musielibyśmy następnie złapać tego błędu 595 00:30:42,820 --> 00:30:44,820 a następnie spróbuj zrobić coś w oparciu o fakt 596 00:30:44,820 --> 00:30:48,280 że tej konwersji oznacza liczbę całkowitą nie powiodło się. 597 00:30:48,280 --> 00:30:50,460 To gdzie ta idea z optionals przychodzi. 598 00:30:50,460 --> 00:30:56,120 Rzeczywiście można utworzyć typ danych jest int znak zapytania, na przykład. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Oznacza to, że tej liczby całkowitej jest w istocie opcjonalne. 601 00:31:01,910 --> 00:31:05,980 A co się stanie, jest to, że może zawiera liczbę całkowitą, albo i nie. 602 00:31:05,980 --> 00:31:10,650 Może ona być w rzeczywistości ta druga Pomysł, całkowicie nazywa nill. 603 00:31:10,650 --> 00:31:14,900 W którym to oznacza, że ​​nie ma nie ma żadnej wartości w tym. 604 00:31:14,900 --> 00:31:16,810 To nawet nie jest równa zero, tam po prostu nie ma wartości. 605 00:31:16,810 --> 00:31:18,790 Nie ma absolutnie żadnej wartości reprezentowane. 606 00:31:18,790 --> 00:31:21,650 >> I to właśnie ta linia 71 robi. 607 00:31:21,650 --> 00:31:25,990 Jest to, że mówi, że ja chcesz spróbować ustawić wartość, 608 00:31:25,990 --> 00:31:31,790 Zmienna o nazwie klasy, równa Konwersja ciągu znaków do int. 609 00:31:31,790 --> 00:31:34,010 Więc wziąłem ten ciąg, To pierwsze części, 610 00:31:34,010 --> 00:31:37,680 czy raczej druga Składniki, ponieważ 611 00:31:37,680 --> 00:31:40,770 jest zerem indeksowane, to Ciąg że już podzielone. 612 00:31:40,770 --> 00:31:42,930 I chcę do konwersji że do całkowitej. 613 00:31:42,930 --> 00:31:46,730 Ale to nie zawsze może przejść normalnie, bo wyobraź sobie, 614 00:31:46,730 --> 00:31:50,710 co by się stało, gdyby zamiast typu Numer, ja piszę oczywiście jak asdf. 615 00:31:50,710 --> 00:31:51,534 >> To się nie uda. 616 00:31:51,534 --> 00:31:54,200 To nie jest w rzeczywistości będzie może przekonwertować do całkowitej 617 00:31:54,200 --> 00:31:55,510 jak by się spodziewać. 618 00:31:55,510 --> 00:31:58,660 Tak więc, zamiast kopać jakiś błąd, 619 00:31:58,660 --> 00:32:01,210 mamy tę ideę opcjonalne. 620 00:32:01,210 --> 00:32:04,240 A to oznacza, że ​​za pomocą ten znak zapytania, co mogę powiedzieć, 621 00:32:04,240 --> 00:32:09,100 OK, to możliwe, że mogę wziąć tego, zamieniona int, 622 00:32:09,100 --> 00:32:12,630 i umieścić go w zmiennej, który również int. 623 00:32:12,630 --> 00:32:15,420 Jeśli tak, to znaczy że udało 624 00:32:15,420 --> 00:32:18,720 a ta pierwsza część Blok może być kontynuowana. 625 00:32:18,720 --> 00:32:21,040 >> W przeciwnym razie, nie powiodła się. 626 00:32:21,040 --> 00:32:25,840 Nie ma wartości w grade-- lub raczej nie ma wartości w istniejących, 627 00:32:25,840 --> 00:32:30,220 i rzeczywiście trzeba spróbować obsłużyć ten błąd. 628 00:32:30,220 --> 00:32:33,340 Będziesz zobaczyć znak zapytania cały czas 629 00:32:33,340 --> 00:32:35,990 w Swift i przykładowy kod dla Swifta. 630 00:32:35,990 --> 00:32:40,980 A w rzeczywistości nill operatora, ten rodzaj z znakiem zapytania, część składników ewentualnych, 631 00:32:40,980 --> 00:32:45,057 będzie prawdopodobnie jednym z trudniejszych rzeczy 632 00:32:45,057 --> 00:32:47,640 do rodzaju owiń głowę jak właściwie z nim pracować. 633 00:32:47,640 --> 00:32:48,490 >> Może warto byłoby teraz. 634 00:32:48,490 --> 00:32:50,760 I rzeczywiście, kiedy byłem pisanie kodu do tego, 635 00:32:50,760 --> 00:32:52,780 pewnością zrozumiałem co się dzieje, 636 00:32:52,780 --> 00:32:55,570 ale złapał mnie za tak często niespodzianka 637 00:32:55,570 --> 00:32:58,370 kiedy uważam, że niektóre dane faktycznie 638 00:32:58,370 --> 00:33:04,024 nil wersja opcjonalna wersja danych, które się spodziewałem. 639 00:33:04,024 --> 00:33:06,190 Więc po prostu sobie sprawę, że jeśli posiadają opcjonalnie wersja 640 00:33:06,190 --> 00:33:09,360 trzeba rozpakować, że dane z tego pola. 641 00:33:09,360 --> 00:33:15,870 >> Więc jest to coś w rodzaju ja-- sobie wyobrazić, jeśli Ciebie mieć polu i zawiera coś. 642 00:33:15,870 --> 00:33:18,490 A co trzeba zrobić, jest, aby zadać pytanie, 643 00:33:18,490 --> 00:33:22,800 to możliwe, że w rzeczywistości to okno zawiera dane, które szukam? 644 00:33:22,800 --> 00:33:28,180 Jeśli tak, to wyciągnąć, że z danych i umieścić go w tej zmiennej istniejącą. 645 00:33:28,180 --> 00:33:32,080 Jeśli nie, to po prostu trzeba pominąć zawartość pudełka 646 00:33:32,080 --> 00:33:34,310 w ogóle, bo to dosłownie nie zawiera niczego. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Wszelkie pytania na ten temat? 649 00:33:40,400 --> 00:33:44,430 OK, przejdźmy od tego Takie rzeczy z linii poleceń 650 00:33:44,430 --> 00:33:47,610 i zacząć patrzeć na niektóre z technologii 651 00:33:47,610 --> 00:33:53,060 że Xcode zapewnia nam w postaci zabaw. 652 00:33:53,060 --> 00:33:56,669 Więc nie ma dużo Możliwość tutaj z Swift. 653 00:33:56,669 --> 00:33:59,210 A jeśli otworzyć Xcode i go pyta co chcesz zrobić, 654 00:33:59,210 --> 00:34:01,340 można otworzyć się na placu zabaw i po prostu bawić 655 00:34:01,340 --> 00:34:06,200 z wielu różnych struktur i elementy języka 656 00:34:06,200 --> 00:34:11,800 jeszcze przed uruchomieniem dotykając iOS SDK lub Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Więc w tym przypadku, powiedzmy, że have-- Mam stosunkowo contrived przykład 658 00:34:15,670 --> 00:34:18,460 tutaj, ale pokrywa się ze mną jak rodzaj z pracy przez ten przykład. 659 00:34:18,460 --> 00:34:22,639 Powiedzmy, że mamy wiele do zrobienia wykładników o stałej wartości, 660 00:34:22,639 --> 00:34:26,397 jak wiemy, że będziemy muszą zrobić wiele uprawnień kwadratowych, na przykład. 661 00:34:26,397 --> 00:34:28,980 Tak więc mamy zamiar podjąć jakąś wartość x, będziemy je pogodzić, 662 00:34:28,980 --> 00:34:30,540 mamy zamiar podjąć jakąś wartość y i mamy zamiar je pogodzić. 663 00:34:30,540 --> 00:34:31,780 Tak dalej, i tak dalej. 664 00:34:31,780 --> 00:34:35,549 >> Teraz możemy właściwie tylko stworzyć Moc dwóch funkcji dla tego, prawda? 665 00:34:35,549 --> 00:34:37,090 Więc chcemy stworzyć moc 2 funkcji. 666 00:34:37,090 --> 00:34:38,600 Będziemy przyjmować podwójnej. 667 00:34:38,600 --> 00:34:41,489 Będziemy output-- lub my będziemy powrót podwójne typu. 668 00:34:41,489 --> 00:34:46,159 Weźmiemy ten wynik a następnie przez dwa 669 00:34:46,159 --> 00:34:52,040 to, co faktycznie się wyniki, które został zainicjowany na wartość równą jeden, 670 00:34:52,040 --> 00:34:53,090 i pomnożyć przez x. 671 00:34:53,090 --> 00:34:56,540 Tak w istocie mamy tu x razy x. 672 00:34:56,540 --> 00:35:01,860 >> A tak, to możesz wtedy, jak moglibyśmy oczekiwać, weź to, uruchomić zasilanie z 2, 673 00:35:01,860 --> 00:35:03,680 dostarczają do niego niektóre dane, lubię 2,0. 674 00:35:03,680 --> 00:35:05,756 A my się zobaczyć tutaj 4,0 wyniki. 675 00:35:05,756 --> 00:35:09,200 Uruchom moc 2 na 3,2 i my dostać się do zobaczyć nasz wynik, 10,24. 676 00:35:09,200 --> 00:35:10,840 Jak na razie dobrze, prawda? 677 00:35:10,840 --> 00:35:12,070 Teraz myślimy, dobrze, OK. 678 00:35:12,070 --> 00:35:15,530 Teraz rzeczywiście trzeba zrobić wiele kompetencji 3. 679 00:35:15,530 --> 00:35:19,180 Więc będę skopiować wkleić cały ten kod, zmienić nazwę funkcji z 680 00:35:19,180 --> 00:35:24,440 moc 2 do potęgi 3, a wszystko będą identyczne, z wyjątkiem tej wartości 681 00:35:24,440 --> 00:35:26,740 tutaj, ten zakres, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Tak więc, zamiast powtarzać pętla dwa razy, 683 00:35:29,590 --> 00:35:31,880 Chcę powtórzyć tej pętli trzy razy. 684 00:35:31,880 --> 00:35:36,330 Więc po prostu zmienić tę wartość z 1 do 3-- lub raczej od 2 do 3. 685 00:35:36,330 --> 00:35:39,230 Ponownie więc, ten sam kod, to jedyna zmiana. 686 00:35:39,230 --> 00:35:40,080 Teraz działa to również. 687 00:35:40,080 --> 00:35:43,860 Moc 3 zawarte w niektórych wartości 2. 688 00:35:43,860 --> 00:35:44,420 Dostajemy 8. 689 00:35:44,420 --> 00:35:45,370 Więc 2 pokrojone w kostkę. 690 00:35:45,370 --> 00:35:48,060 I 3,2 kostkę to 32,768. 691 00:35:48,060 --> 00:35:50,597 I do tej pory tak dobrze, prawda? 692 00:35:50,597 --> 00:35:52,930 Ale mam nadzieję, że jest to mało trochę czerwona flaga dla Ciebie 693 00:35:52,930 --> 00:35:55,530 na tym, że mamy teraz niektóre powielanie kodu 694 00:35:55,530 --> 00:35:58,800 z wyjątkiem niektórych bardzo niewielkie zmienić z jednego do drugiego. 695 00:35:58,800 --> 00:36:02,170 Więc to jest jakiś sposób, że może uda nam się do uproszczenia 696 00:36:02,170 --> 00:36:06,080 problem ten, w którym będziemy mogli rzeczywiście, w czasie pracy, dowiedzieć się, niektóre, 697 00:36:06,080 --> 00:36:11,320 zapewnić nam jakąś funkcję, która ma właśnie moc, że chcemy. 698 00:36:11,320 --> 00:36:13,960 >> I jest to pomysł zamknięcia, które jest naprawdę 699 00:36:13,960 --> 00:36:18,180 istotne w kontekście Swift oraz w wielu innych językach. 700 00:36:18,180 --> 00:36:21,580 Ale chyba widać jest używany bardziej w Swift 701 00:36:21,580 --> 00:36:23,650 ponieważ jest wbudowany w języku 702 00:36:23,650 --> 00:36:28,280 niż w innych będzie również języki nowożytne. 703 00:36:28,280 --> 00:36:31,140 Więc pomysł zamknięcia to jest, jest to, że 704 00:36:31,140 --> 00:36:35,430 może mieć funkcję, która jest określona być ogólna funkcji, moc ogólna 705 00:36:35,430 --> 00:36:36,860 wyłączone. 706 00:36:36,860 --> 00:36:41,010 >> I ta funkcja będzie akceptować wykładnik ten, że tak naprawdę 707 00:36:41,010 --> 00:36:42,990 chcemy stworzyć. 708 00:36:42,990 --> 00:36:46,550 Tak na przykład, pierwszy instancji, chcieliśmy moc 2. 709 00:36:46,550 --> 00:36:50,050 Więc chcemy zapewnić moc a następnie w nawiasach 2. 710 00:36:50,050 --> 00:36:52,490 A teraz zauważyć, co to rzeczywiście powraca. 711 00:36:52,490 --> 00:36:57,680 Zajmuje to wejście podkładu nazywany y to liczba całkowita 712 00:36:57,680 --> 00:37:03,090 i zwraca ten szalony szuka rzecz w parentheses-- nawiasach 713 00:37:03,090 --> 00:37:06,230 dwukrotnie, a następnie strzałka podwójna. 714 00:37:06,230 --> 00:37:10,270 >> Oznacza to, że jestem powróci funkcję. 715 00:37:10,270 --> 00:37:13,510 Nie chcę wracać inny typ danych, jestem 716 00:37:13,510 --> 00:37:16,350 w istocie powrót funkcji który ma ten parametr, który 717 00:37:16,350 --> 00:37:22,680 przyjmuje jako wejście i podwójne wyprowadza podwójne jako wartości zwracanej. 718 00:37:22,680 --> 00:37:29,750 I w rezultacie, bo teraz mam nazwie moc, przekazując jakąś wartość dla y, 719 00:37:29,750 --> 00:37:32,280 i tworzę ten drugi function-- zawiadomienie, że nie 720 00:37:32,280 --> 00:37:35,980 kolejna funkcja, która jest tworzona wewnątrz this-- co robię 721 00:37:35,980 --> 00:37:37,830 jest następnie można zmienić że wartość, że jedna 722 00:37:37,830 --> 00:37:41,010 Wartość, że się zmienił od 2 do 3, teraz sprawiają, że r. 723 00:37:41,010 --> 00:37:42,500 >> I to ustąpi. 724 00:37:42,500 --> 00:37:48,530 Dlatego za każdym razem, że nazywam moc of zasadniczo to co dzieje 725 00:37:48,530 --> 00:37:51,030 jest to, że się zwrócił funkcję. 726 00:37:51,030 --> 00:37:54,310 Zauważ, że tutaj mam zdefiniowane nową zmienną o nazwie placu. 727 00:37:54,310 --> 00:37:59,340 Mam ustawiony jest równa sile, pod warunkiem tej wartości 2 do potęgi. 728 00:37:59,340 --> 00:38:02,030 A co to jest funkcja wrócił. 729 00:38:02,030 --> 00:38:05,970 Więc kwadrat, zmienna kwadratowych, jest teraz z funkcją typu 730 00:38:05,970 --> 00:38:11,390 że ma this-- oops, przewiń w górę Trochę bit--, że ma ten podpis, 731 00:38:11,390 --> 00:38:15,560 zaakceptować podwójne i wyjście podwójne. 732 00:38:15,560 --> 00:38:17,330 >> Więc teraz to, co zrobiłem jest zasadniczo mam 733 00:38:17,330 --> 00:38:22,890 stworzył, że funkcja nazywa się plac przyjmuje jakąkolwiek wartość i będzie je pogodzić. 734 00:38:22,890 --> 00:38:24,960 Widzimy, co się dzieje na dole. 735 00:38:24,960 --> 00:38:29,960 Plac 3 na przykład, oznacza zamierzam wziąć wartość 3 i kwadratu go. 736 00:38:29,960 --> 00:38:32,010 Więc jak dokładnie to działa? 737 00:38:32,010 --> 00:38:37,800 Kiedy przechodzą uprawnienia z 2-- kiedy przekazać 2 do tej potęgi funkcji, 738 00:38:37,800 --> 00:38:44,430 ta zmienna y jest wypełniona tej wartości 2. 739 00:38:44,430 --> 00:38:46,340 I to jest coś w rodzaju przechowywanych w pamięci. 740 00:38:46,340 --> 00:38:49,430 To coś w rodzaju odbywają się w Stan gdzieś w komputerze, 741 00:38:49,430 --> 00:38:51,980 tak naprawdę nie obchodzi, jak lub w których na tym etapie. 742 00:38:51,980 --> 00:38:54,692 >> Ale wrócę z tej funkcji nazywa exponentiate. 743 00:38:54,692 --> 00:38:57,400 I znowu, to nie ma znaczenia co ta funkcja jest wywoływana, 744 00:38:57,400 --> 00:39:01,730 naprawdę możemy nazwać to coś, że akceptuje podwójne i zwraca podwójne, 745 00:39:01,730 --> 00:39:05,640 ale wykorzystuje tę wartość y wewnątrz niego. 746 00:39:05,640 --> 00:39:09,290 Więc nawet jeśli jest to funkcja, funkcja ta exponentiater to 747 00:39:09,290 --> 00:39:13,600 wróciły z powrotem do mojego Zmienna, że ​​zadzwoniłem kwadratowych, 748 00:39:13,600 --> 00:39:17,980 to jest w nim zawarte pojęcie o tym, co y było. 749 00:39:17,980 --> 00:39:19,070 I pamięta, że. 750 00:39:19,070 --> 00:39:24,810 >> Dlatego za każdym razem zgłoszę taką funkcję, że nazywa się teraz plac, wykorzystuje to. 751 00:39:24,810 --> 00:39:27,990 Ale oznacza to również, że mogę tworzenie innej zmiennej za pomocą 752 00:39:27,990 --> 00:39:29,120 inna moc. 753 00:39:29,120 --> 00:39:33,240 Więc mogę utworzyć zmienną kostki, na przykład, zapewnić mu moc trzech. 754 00:39:33,240 --> 00:39:37,230 Teraz kostki zabiorę niektóre Wartość i kostki, które i powrócić. 755 00:39:37,230 --> 00:39:39,570 Tak więc widzimy, że mam Wartość 8 z tym. 756 00:39:39,570 --> 00:39:42,720 >> Ale to nie ma wartości y zmianie, ponieważ są one 757 00:39:42,720 --> 00:39:44,980 odbędzie się w rodzaju zmiennych niezależnych. 758 00:39:44,980 --> 00:39:47,480 Są one przechowywane w rodzaju niezależne przestrzenie w pamięci. 759 00:39:47,480 --> 00:39:51,290 Więc zawsze będą kostki x do potęgi 3. 760 00:39:51,290 --> 00:39:55,380 I zawsze będzie miał kwadratowy x do potęgi 2, w którym 761 00:39:55,380 --> 00:39:58,470 Oznacza to, że plac będzie zawsze numery kwadratowych, jak oczekuję. 762 00:39:58,470 --> 00:40:01,794 A kostka zawsze kostkach numery, jak oczekuję. 763 00:40:01,794 --> 00:40:04,960 Oznacza to również, że czasami można uzyskać jakieś funky składni poszukuje 764 00:40:04,960 --> 00:40:09,030 gdzie masz moc w bardzo na dole ekranu tutaj, moc 5. 765 00:40:09,030 --> 00:40:11,410 I przejść do wyniku. 766 00:40:11,410 --> 00:40:14,670 Dzwonisz tej funkcji, która jest zostały zwrócone z numerem 4. 767 00:40:14,670 --> 00:40:17,440 I tak w zasadzie to, co wynosi od 4 do piątego mocy, 768 00:40:17,440 --> 00:40:20,830 możemy zobaczyć wyniki nie. 769 00:40:20,830 --> 00:40:23,690 U mnie do tej pory? 770 00:40:23,690 --> 00:40:26,620 >> Więc ten pomysł nazywa zamknięcie, bo to, co mamy w zasadzie robi 771 00:40:26,620 --> 00:40:30,610 to mamy do enkapsulacji niektóre dane into-- sortowania 772 00:40:30,610 --> 00:40:33,050 z załączając te dane do funkcji i jesteśmy 773 00:40:33,050 --> 00:40:36,240 możliwość ponownego wykorzystania tej funkcji. 774 00:40:36,240 --> 00:40:41,480 Teraz jednak może faktycznie składni uprościć wielką kwotę. 775 00:40:41,480 --> 00:40:45,005 I jest wiele możliwości w Swift dla tego uproszczenia. 776 00:40:45,005 --> 00:40:47,780 I to jakie Kolejne z nich rzeczywiście patrzeć. 777 00:40:47,780 --> 00:40:51,400 Tak 7b Na przykład, podjąć dokładnie ten sam kod. 778 00:40:51,400 --> 00:40:54,360 >> Ale teraz, a nie właściwie zdefiniować funkcję 779 00:40:54,360 --> 00:40:57,910 wewnątrz tej władzy funkcjonować i nadać mu nazwę, 780 00:40:57,910 --> 00:41:00,150 a następnie zwróci nazwę z tej funkcji, która 781 00:41:00,150 --> 00:41:02,357 następnie stosuje się jako część zamknięcie to, a nie jesteśmy 782 00:41:02,357 --> 00:41:03,440 po prostu się go uprościć. 783 00:41:03,440 --> 00:41:06,580 Nie potrzebujemy tej funkcji, aby być nazwane. 784 00:41:06,580 --> 00:41:09,760 Jest to więc pojęcie funkcja anonimowa, gdzie się da, a następnie 785 00:41:09,760 --> 00:41:15,180 przyjąć jako wejście, w nawiasach tutaj Zmienna x, która jest typu double. 786 00:41:15,180 --> 00:41:17,250 >> Mamy zamiar wrócić typu double. 787 00:41:17,250 --> 00:41:19,830 A potem słów kluczowych, n, jest Początek tej funkcji. 788 00:41:19,830 --> 00:41:22,180 Więc zauważyć, że wszystko znajduje się w nawiasach klamrowych 789 00:41:22,180 --> 00:41:25,310 a my definiowania Anonimowy funkcjonować tutaj. 790 00:41:25,310 --> 00:41:29,910 Wystarczy prostszy sposób definiowania dokładnie to samo. 791 00:41:29,910 --> 00:41:30,810 OK? 792 00:41:30,810 --> 00:41:36,740 Ale trzymaj się, w rzeczywistości pozwala nam Swift iść dalej i uprościć jeszcze bardziej, 793 00:41:36,740 --> 00:41:40,180 bo tak naprawdę nie wiemy obchodzi, że ten parametr jest 794 00:41:40,180 --> 00:41:41,700 nazwie żadnej konkretnej rzeczy. 795 00:41:41,700 --> 00:41:48,090 To może być naprawdę nazywa się niczego i możemy nadal korzystać z tego pierwszego parametru. 796 00:41:48,090 --> 00:41:53,800 >> Tak więc w rzeczywistości nie jest to specjalne Typ danych w funkcji anonimowych, 797 00:41:53,800 --> 00:41:57,710 nie ma to specjalna nazwa zmienne w funkcjach anonimowych 798 00:41:57,710 --> 00:42:00,280 które zaczynają znak dolara i reprezentują 799 00:42:00,280 --> 00:42:03,785 numery parametrów, zero indeksowane, dla tej funkcji. 800 00:42:03,785 --> 00:42:05,410 Więc jest kilka rzeczy dzieje. 801 00:42:05,410 --> 00:42:08,550 Tutaj mam zamiar wrócić, a następnie nawias klamrowy reprezentujący funkcję, 802 00:42:08,550 --> 00:42:09,050 prawda? 803 00:42:09,050 --> 00:42:13,920 >> Zauważ, że nie zdefiniowano parametrów typy lub typ zwracany. 804 00:42:13,920 --> 00:42:16,460 To faktycznie może być wywnioskować ponieważ podpisu 805 00:42:16,460 --> 00:42:18,360 o pierwotnej funkcji. 806 00:42:18,360 --> 00:42:20,500 Więc możemy wyeliminować że jako możliwości. 807 00:42:20,500 --> 00:42:25,120 Ale również można używać zera do dolara reprezentują ten pierwszy parametr, który jest 808 00:42:25,120 --> 00:42:28,200 przeszedł do tej anonimowej funkcji. 809 00:42:28,200 --> 00:42:31,630 Więc uproszczenie go jeszcze bardziej. 810 00:42:31,630 --> 00:42:32,750 OK? 811 00:42:32,750 --> 00:42:33,820 Tak daleko, tak dobrze? 812 00:42:33,820 --> 00:42:36,980 >> Teraz jest to type-- prawda Pamiętam ten znak dolara zera 813 00:42:36,980 --> 00:42:40,130 które widzieliśmy w tym nawiasem że widzieliśmy tylko chwilę 814 00:42:40,130 --> 00:42:43,870 temu w tym Swift sześć przykład? 815 00:42:43,870 --> 00:42:46,560 To było tutaj. 816 00:42:46,560 --> 00:42:48,430 Zauważ, że jest dokładnie to, co patrzymy, 817 00:42:48,430 --> 00:42:51,580 jest to, że przeszliśmy do tego podziału funkcji 818 00:42:51,580 --> 00:42:55,140 Funkcja anonimowy sprawdza pierwszy parametr 819 00:42:55,140 --> 00:42:57,830 aby sprawdzić, czy jest on równy symbol jelita grubego. 820 00:42:57,830 --> 00:42:59,830 I to jest dokładnie to, co jest dzieje, jest to, że wszystkie 821 00:42:59,830 --> 00:43:02,320 jesteśmy doing-- powrót Hasło jest dorozumiany 822 00:43:02,320 --> 00:43:05,800 w tym case-- wracamy wartość ta, gdzie jesteśmy w porównaniu 823 00:43:05,800 --> 00:43:10,020 Pierwszy parametr przed ta grubego charakter. 824 00:43:10,020 --> 00:43:11,730 I tak, że rodzaj demystifies tego. 825 00:43:11,730 --> 00:43:17,210 I masz zamiar zobaczyć ten konstrukt Wiele w składni Swift, więc nie miej to 826 00:43:17,210 --> 00:43:19,400 pamiętać, gdy jesteś rzucić okiem na to. 827 00:43:19,400 --> 00:43:21,970 Teraz możemy wysiąść szyny trochę 828 00:43:21,970 --> 00:43:25,460 i przejść bardzo fantazyjne, że pokazy nawet trochę więcej mocy Swifta. 829 00:43:25,460 --> 00:43:27,950 Można nawet zobaczyć niektóre W tych kodów próbek. 830 00:43:27,950 --> 00:43:29,790 Więc dlatego zamierzam pokazać ci tego. 831 00:43:29,790 --> 00:43:37,260 >> W zasadzie to, co możemy zrobić, to, że pierwsza wszystkim, to był rodzaj niepotrzebnych dla mnie 832 00:43:37,260 --> 00:43:41,710 do wdrożenia wszystkich tego moc Kod bo jeśli import Darwin 833 00:43:41,710 --> 00:43:46,490 biblioteka, faktycznie zawiera funkcję nazywa pow który zrobi to dla Ciebie. 834 00:43:46,490 --> 00:43:50,570 Więc możemy go uprościć jeszcze bardziej i Posiadamy funkcję zasilania się tylko 835 00:43:50,570 --> 00:43:54,890 być wspaniały jedną wkładkę, gdzie po prostu zwrócić funkcję anonimowy 836 00:43:54,890 --> 00:44:00,780 akceptuje dolara 0 w podstawa i jako wykładnik r. 837 00:44:00,780 --> 00:44:02,582 >> Ale możemy się naprawdę, bardzo fantazyjne, kiedy 838 00:44:02,582 --> 00:44:04,790 sobie sprawę, że Swift ma Dużo mocy pod maską. 839 00:44:04,790 --> 00:44:07,010 Wiele podmiotów, które mamy do czynienia z, 840 00:44:07,010 --> 00:44:11,270 oraz znaki i symbole podział i wszystkie te rzeczy, które normalnie 841 00:44:11,270 --> 00:44:15,620 pracy z typami danych w języku programowania, 842 00:44:15,620 --> 00:44:17,600 są rzeczywiście rozszerzalny w Swift. 843 00:44:17,600 --> 00:44:21,460 Więc co to oznacza w tym my może zdefiniować własne operatorów. 844 00:44:21,460 --> 00:44:26,020 >> Więc teraz jestem zmęczony pisania w tym wszystkim pow i nawiasy, a następnie 845 00:44:26,020 --> 00:44:26,520 Podstawa. 846 00:44:26,520 --> 00:44:27,520 Nie chcę, aby to zrobić. 847 00:44:27,520 --> 00:44:30,190 I rzeczywiście chcą mieć Operator, który pozwala mi tego zrobić. 848 00:44:30,190 --> 00:44:34,510 Więc mogę powiedzieć, że chcę Swift utworzyć operatora gwiazdę 849 00:44:34,510 --> 00:44:39,472 star-- przez sposób, że nie mogą korzystać z karata bo Karat jest operatorem, który 850 00:44:39,472 --> 00:44:40,680 robi coś zupełnie innego. 851 00:44:40,680 --> 00:44:42,720 Więc nie chcę, aby posortować z zderzają się z tym. 852 00:44:42,720 --> 00:44:45,750 A więc to, co można zobaczyć w różnych języków, w tym Python, 853 00:44:45,750 --> 00:44:48,810 jest jak operator star star do reprezentowania wykładniki. 854 00:44:48,810 --> 00:44:50,730 >> Więc to jest jedyny powód, Dlatego zrobiłem to. 855 00:44:50,730 --> 00:44:53,067 I to będzie Operator typu wrostkowy. 856 00:44:53,067 --> 00:44:54,900 I muszę dostarczyć do niego pewne informacje 857 00:44:54,900 --> 00:44:58,386 o pierwszeństwie tego Operator więc wiązanie lewe. 858 00:44:58,386 --> 00:45:00,260 To jak stosunkowo Wysoki priorytet w porównaniu 859 00:45:00,260 --> 00:45:02,432 sumowania lub mnożenia. 860 00:45:02,432 --> 00:45:04,140 Jest to wyższy priorytet niż wszystkie z nich. 861 00:45:04,140 --> 00:45:04,931 Tak dalej, i tak dalej. 862 00:45:04,931 --> 00:45:07,410 I wtedy zdefiniować funkcji, które faktycznie 863 00:45:07,410 --> 00:45:10,070 mówi, co robi operator. 864 00:45:10,070 --> 00:45:14,150 Więc zakładając, że mam w lewo lewa strona i prawa strona, 865 00:45:14,150 --> 00:45:17,330 która może być lepsza nazwa zmiennej do tego. 866 00:45:17,330 --> 00:45:20,690 Lewa strona dłoni i prawej stronie. 867 00:45:20,690 --> 00:45:26,740 Można następnie wykorzystać tę moc lewa do prawej strony 868 00:45:26,740 --> 00:45:28,980 i powrót tej wartości. 869 00:45:28,980 --> 00:45:30,370 Więc teraz jest bardzo słodki. 870 00:45:30,370 --> 00:45:33,790 Wszystko, co musimy zrobić, to gwiazdki 2 gwiazdki 3 a wynosi od 2 do trzeciej potęgi, 871 00:45:33,790 --> 00:45:35,290 i otrzymujemy wartość 8. 872 00:45:35,290 --> 00:45:40,280 Gwiazdki 2 gwiazdki 10 wynosi od 2 do 10th mocy, mamy 1024. 873 00:45:40,280 --> 00:45:43,630 >> Więc teraz nasza moc funkcji, , który ponownie jest inna 874 00:45:43,630 --> 00:45:47,030 dlatego, że cała idea tego było to, że mamy jedną funkcję, która 875 00:45:47,030 --> 00:45:50,700 zawsze ma jakąś wartość i czy raczej mnoży it-- 876 00:45:50,700 --> 00:45:53,240 zajmuje wykładnik dla tej samej mocy. 877 00:45:53,240 --> 00:45:54,300 Więc teraz jest to jeszcze prostsze. 878 00:45:54,300 --> 00:45:57,070 Więc teraz to tylko dolar zaloguj 0 star star y. 879 00:45:57,070 --> 00:46:01,190 Nawet nie trzeba używać pow więcej. 880 00:46:01,190 --> 00:46:03,020 >> OK, kto stracił? 881 00:46:03,020 --> 00:46:03,700 Czy robimy dobrze? 882 00:46:03,700 --> 00:46:05,090 Wszelkie pytania dotyczące tego materiału? 883 00:46:05,090 --> 00:46:05,815 Tak? 884 00:46:05,815 --> 00:46:09,500 >> PUBLICZNOŚCI: Gdy you-- [niesłyszalne] Moc funk y dwukrotnie. 885 00:46:09,500 --> 00:46:11,441 Więc kiedy jesteś powrocie funkcji. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendáriz: Funk moc y dwukrotnie. 887 00:46:13,190 --> 00:46:14,270 O tak, nie wiem, co y liczby są. 888 00:46:14,270 --> 00:46:15,708 Przepraszam za to. 889 00:46:15,708 --> 00:46:19,420 >> PUBLICZNOŚCI: Dlaczego powrót Funkcja [niesłyszalne] obudowa. 890 00:46:19,420 --> 00:46:24,214 Dolar zera nie jest gwiazdą gwiazda y [niesłyszalne] 891 00:46:24,214 --> 00:46:29,710 okaże się, że z tym operatorem powrót dwukrotnie [niesłyszalne] dwukrotnie? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendáriz: Więc niech mi odpowiedzieć na to pytanie 893 00:46:32,742 --> 00:46:35,950 jak ja to rozumiem, a możesz mi powiedzieć, jeśli nie rozumiem pytanie. 894 00:46:35,950 --> 00:46:42,850 Więc ten konstrukt, nawias klamrowy Znak dolara zera star y, 895 00:46:42,850 --> 00:46:44,280 jest funkcją. 896 00:46:44,280 --> 00:46:50,080 I przyjmuje parametr, który jest reprezentowane przez ten znak dolara zera. 897 00:46:50,080 --> 00:46:55,830 Hasło powrotu jest domniemanych w tym bardzo krótka, anonimowa funkcja składni. 898 00:46:55,830 --> 00:46:57,870 >> Co oznacza, że ​​w istocie co to mówi 899 00:46:57,870 --> 00:47:01,270 jest to, że jestem definiowania function-- a następnie będę 900 00:47:01,270 --> 00:47:05,320 po prostu nazwać to something-- gdzie mam trochę wartość y. 901 00:47:05,320 --> 00:47:08,300 Mam y, która jest podwójna. 902 00:47:08,300 --> 00:47:10,750 I wracam dwukrotnie. 903 00:47:10,750 --> 00:47:19,010 A ja mam w tym powrocie y-- przykro, Nie powinienem nazwał to y-- x. 904 00:47:19,010 --> 00:47:20,240 Ojej, ojej, ojej. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- star r. 906 00:47:27,440 --> 00:47:29,720 >> Więc jest to tylko uproszczona wersja tego. 907 00:47:29,720 --> 00:47:33,990 I tak dlatego, że mam dolara Znak zerowy jest, że za pomocą tej obudowy 908 00:47:33,990 --> 00:47:41,050 Oznacza to, że nie mam już wpisać pow, albo już nie 909 00:47:41,050 --> 00:47:45,570 Muszę coś zrobić jak 3 star 2. 910 00:47:45,570 --> 00:47:48,530 Mogę tylko mieć pojedynczy Funkcja o nazwie square 911 00:47:48,530 --> 00:47:50,820 która zawsze będzie miała niektóre wartości na wejściu 912 00:47:50,820 --> 00:47:52,980 i rzeczywiście powrócić na plac, który. 913 00:47:52,980 --> 00:47:56,460 >> Tak więc cała celem zamknięcia jest po prostu rodzaj symbolizować fakt, 914 00:47:56,460 --> 00:47:59,920 że zawsze chcesz używać y gdy Ja nazywam tę funkcję jako moc 915 00:47:59,920 --> 00:48:01,710 Podejmując tę ​​wykładnik. 916 00:48:01,710 --> 00:48:04,650 Więc wracając następnie, funkcja, która przyjmuje 917 00:48:04,650 --> 00:48:08,460 podwójne, który jest podstawą, a powrót wynik tego wykładnikiem 918 00:48:08,460 --> 00:48:10,740 jest kluczem tutaj. 919 00:48:10,740 --> 00:48:12,790 I to jest ważnym wyróżnieniem. 920 00:48:12,790 --> 00:48:14,430 Był tylko trochę rozmachem. 921 00:48:14,430 --> 00:48:17,970 >> To nie jest inaczej w porównaniu z wcześniejszymi przykładami 922 00:48:17,970 --> 00:48:20,530 ale to był tylko trochę faktycznie możemy rozwijać 923 00:48:20,530 --> 00:48:24,500 stworzenie operatora w Swift i faktycznie rzeczy z nim, 924 00:48:24,500 --> 00:48:26,396 co jest raczej chłodnym rzeczy. 925 00:48:26,396 --> 00:48:27,520 Czy mogę odpowiedzieć na to pytanie? 926 00:48:27,520 --> 00:48:28,390 Słodkie. 927 00:48:28,390 --> 00:48:31,350 Coś jeszcze zanim ruszymy dalej? 928 00:48:31,350 --> 00:48:33,570 OK. 929 00:48:33,570 --> 00:48:36,430 >> Teraz ten rodzaj błaga Pytanie jest that-- również OK, 930 00:48:36,430 --> 00:48:40,870 teraz mamy zdolność do Funkcje zostać zwrócone. 931 00:48:40,870 --> 00:48:48,950 Możemy również przekazać funkcje jak dane lub jako parametry do innych funkcji? 932 00:48:48,950 --> 00:48:50,710 A w rzeczywistości możemy. 933 00:48:50,710 --> 00:48:53,480 Więc powiedzmy, że mamy wszystkie w tym samym kodzie. 934 00:48:53,480 --> 00:48:56,120 Mamy zmienną kwadratowy że będzie pogodzić ten kod. 935 00:48:56,120 --> 00:48:59,320 I mamy zmienną kostki że będzie kostka jakieś dane. 936 00:48:59,320 --> 00:49:02,440 A my naprawdę chcemy zastosować szerokiego zakresu numerów. 937 00:49:02,440 --> 00:49:06,870 >> Więc co możemy pokusić się zrobić, Oczywiście, co jest z pewnością ważne, 938 00:49:06,870 --> 00:49:15,430 jest w celu przechodzenia do tej listy numerów i stosować moje funkcje kwadratowe i kostki 939 00:49:15,430 --> 00:49:22,270 i dostać dwa nowe listy jak wyniki że są to oryginalne lista kwadratu 940 00:49:22,270 --> 00:49:24,970 i pokrojone w kostkę, odpowiednio. 941 00:49:24,970 --> 00:49:26,880 Całkowicie dopuszczalne. 942 00:49:26,880 --> 00:49:29,130 Ale co jest rzeczą, Widzimy tutaj, że mamy, 943 00:49:29,130 --> 00:49:31,310 ponownie, powielanie naszego kodu. 944 00:49:31,310 --> 00:49:34,310 I nie ma chyba szansę dla nas do uproszczenia tego trochę. 945 00:49:34,310 --> 00:49:41,260 Co zrobić, jeśli nie było to dla nas sposób rzeczywiście zawsze iteracji przez jakiś listę 946 00:49:41,260 --> 00:49:45,450 i po prostu przejść do tego magicznego funkcjonować zmienną, która 947 00:49:45,450 --> 00:49:47,350 oznacza funkcję że chcemy zastosować 948 00:49:47,350 --> 00:49:50,336 do każdego elementu w tej liście. 949 00:49:50,336 --> 00:49:53,210 Pojawi się pojęcia, co nazywane są wyższe funkcje rzędu. 950 00:49:53,210 --> 00:49:57,150 I to jest w zasadzie to, co w tym jest to, że można utworzyć funkcję. 951 00:49:57,150 --> 00:50:00,210 >> I w tym przypadku to się nazywa mapper, tak aby nadać mu nazwę, po prostu 952 00:50:00,210 --> 00:50:02,510 Mapowanie nad każdym Pojedynczy element na liście. 953 00:50:02,510 --> 00:50:06,191 Gdzie zabrać listę i biorę funkcję. 954 00:50:06,191 --> 00:50:08,440 I to funkcja, oczywiście, ma pewną podpis. 955 00:50:08,440 --> 00:50:11,980 Przyjmuje za podwójnym parametrem i to będzie wyjście jest podwójna. 956 00:50:11,980 --> 00:50:14,310 I cały wynik Ta funkcja będzie 957 00:50:14,310 --> 00:50:18,921 będzie nowa lista, która jest typu double. 958 00:50:18,921 --> 00:50:19,420 OK? 959 00:50:19,420 --> 00:50:22,650 >> I co mam zrobić jest, aby zastosować tę funkcję f 960 00:50:22,650 --> 00:50:24,960 do każdego elementu w moim liście. 961 00:50:24,960 --> 00:50:30,280 I reply-- i raczej powrócić nowa Lista w wyniku, co jest naprawdę fajne. 962 00:50:30,280 --> 00:50:31,820 Teraz mogę przejść funkcje wokół. 963 00:50:31,820 --> 00:50:35,290 I ten pomysł wyższego rzędu funkcji jest naprawdę ważne. 964 00:50:35,290 --> 00:50:39,260 I to jest naprawdę tylko mapper Realizacja tego biedaka 965 00:50:39,260 --> 00:50:43,130 funkcji, która jest zbudowana do Swift zwany mapę. 966 00:50:43,130 --> 00:50:45,690 I robi właśnie to, być może nawet nieco lepiej. 967 00:50:45,690 --> 00:50:48,260 >> To jest po prostu swego rodzaju ogólny, Uproszczona wersja, że 968 00:50:48,260 --> 00:50:51,270 pozwala nam zobaczyć pojęcie, które odnosi się tutaj. 969 00:50:51,270 --> 00:50:54,630 Teraz spójrz na sposób, że może faktycznie zastosować mój plac 970 00:50:54,630 --> 00:50:57,850 i moje funkcje kostki do tej listy numerów. 971 00:50:57,850 --> 00:50:58,780 Prowadzę mój mapowania. 972 00:50:58,780 --> 00:51:00,280 I dostarczyć do niego moją listę numerów. 973 00:51:00,280 --> 00:51:02,155 I dostarczyć do niej na Funkcja, która będzie 974 00:51:02,155 --> 00:51:04,170 stosuje się do każdego z tych indeksów. 975 00:51:04,170 --> 00:51:07,120 I to ma być wyświetlania wyniku. 976 00:51:07,120 --> 00:51:11,810 A ja się zobaczyć, że mam do kwadratu i pokrojone w kostkę moje numery w wyniku. 977 00:51:11,810 --> 00:51:14,660 >> I oczywiście zajmie mapper każdy rodzaj funkcji anonimowej. 978 00:51:14,660 --> 00:51:17,640 Możemy nawet zobaczyć, że stworzyłem Nowa funkcja anonimowa, że 979 00:51:17,640 --> 00:51:20,220 po prostu ma jakiś parametr i dzieli się przez 2. 980 00:51:20,220 --> 00:51:24,340 I widzimy, że mam w rzeczywistości, podzielić moją listę o 2 zamiast. 981 00:51:24,340 --> 00:51:25,250 Fajne? 982 00:51:25,250 --> 00:51:27,340 Tak daleko, tak dobrze? 983 00:51:27,340 --> 00:51:29,650 Dobra, teraz niech wrócić do tego pomysłu. 984 00:51:29,650 --> 00:51:36,160 Miejmy wdrożenia tej plecy kontekście Dziennik ocen. 985 00:51:36,160 --> 00:51:41,860 >> A jeśli to zrobić, możemy zobaczyć, że mogę stosować wiele z tych options-- 986 00:51:41,860 --> 00:51:44,330 lub wiele z tych wyższe funkcje zamówienie 987 00:51:44,330 --> 00:51:51,450 rzeczywiście uprościć moją zdolność do wiele rzeczy na list numerów. 988 00:51:51,450 --> 00:51:53,660 Tak na przykład, jeśli wziąć listę numerów, 989 00:51:53,660 --> 00:51:57,060 jeden z wyższymi funkcjami rzędu że istnieje nazywa się zmniejszyć. 990 00:51:57,060 --> 00:52:00,080 Co robi, a zmniejszyć niż mapie, zmniejsza się będzie 991 00:52:00,080 --> 00:52:03,710 wziąć dwa elementy na liście, zajmie trochę funkcji, które 992 00:52:03,710 --> 00:52:07,420 porównuje dwa elementy lista, i będzie to 993 00:52:07,420 --> 00:52:09,610 rodzaj output-- Wyjście tej funkcji 994 00:52:09,610 --> 00:52:13,790 będzie kolejnym elementem, który można następnie porównać do innych. 995 00:52:13,790 --> 00:52:18,190 >> Więc można to wykorzystać, aby właściwie suma liczb znajdujących się na liście. 996 00:52:18,190 --> 00:52:20,640 Na przykład, jeśli miał Lista 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 Ci podjąć pierwsze elementy, 1 i 2. 998 00:52:22,940 --> 00:52:27,270 Można stosować do niego dodatku funkcja, która bierze te dwa elementy 999 00:52:27,270 --> 00:52:30,980 i wypluwa jeden z tych elementów, która byłaby wartość 3. 1000 00:52:30,980 --> 00:52:35,684 Następnie bierzemy tę wartość 3 w przyszłym element listy suma tych dwóch, 1001 00:52:35,684 --> 00:52:37,100 a następnie iść dalej w dół listy. 1002 00:52:37,100 --> 00:52:40,410 >> Jesteśmy redukcji listy do jednej wartości. 1003 00:52:40,410 --> 00:52:42,700 A tak się składa, że symbol plus 1004 00:52:42,700 --> 00:52:44,670 jest operatorem, podobnie jak przed chwilą widzieliśmy. 1005 00:52:44,670 --> 00:52:47,500 Ten operator jest faktycznie funkcja 1006 00:52:47,500 --> 00:52:53,100 ma dokładnie tę listę, że chciał, a te właściwości 1007 00:52:53,100 --> 00:52:54,770 które chcemy. 1008 00:52:54,770 --> 00:52:56,760 Więc zachęcam do spójrz na to. 1009 00:52:56,760 --> 00:52:59,290 Chcę, aby posortować w ruchu na niektórych z tym kodem 1010 00:52:59,290 --> 00:53:05,330 tak, że rzeczywiście możemy spojrzeć na niektóre rzeczywiste, realne, prawdziwe Swift w Xcode, 1011 00:53:05,330 --> 00:53:06,880 w rozwoju iOS. 1012 00:53:06,880 --> 00:53:08,630 Ale spójrz na to i zobacz, czy możesz 1013 00:53:08,630 --> 00:53:11,171 analizować poprzez to, co się dzieje niektóre z tych wyższego rzędu 1014 00:53:11,171 --> 00:53:13,790 funkcje, łącznie z filtrem, zmniejszyć, a nawet będziesz 1015 00:53:13,790 --> 00:53:17,060 zobacz gdzieś tutaj, map, jak również. 1016 00:53:17,060 --> 00:53:17,910 To właśnie tutaj. 1017 00:53:17,910 --> 00:53:20,410 Gdzie to zajmie sekwencję z klas i będzie naprawdę 1018 00:53:20,410 --> 00:53:24,230 map je za pomocą konstruktu przełącznika, które można rozpoznać z C, 1019 00:53:24,230 --> 00:53:27,640 ale w rzeczywistości jest dużo więcej potężniejsze niż konstruktu przełącznika 1020 00:53:27,640 --> 00:53:29,810 że mamy w C 1021 00:53:29,810 --> 00:53:31,930 >> I będziemy stosować, że do Każdy element listy 1022 00:53:31,930 --> 00:53:34,540 i rzeczywiście świadczą List każdej klasy 1023 00:53:34,540 --> 00:53:40,780 z tych klas z wykorzystaniem wszystkich tych pojęć że niedawno mówił o wcześniej. 1024 00:53:40,780 --> 00:53:44,760 Teraz wystarczyło tylko ominąć minut i mówić o elemencie. 1025 00:53:44,760 --> 00:53:49,680 I tak elemencie są oczekiwania, że ​​w C mogli określić nowy typ danych. 1026 00:53:49,680 --> 00:53:53,590 Structury istnieje w Swift. 1027 00:53:53,590 --> 00:53:58,980 I tak robić wiele innych konstrukcji zwane teksty stałe i klasy, które naprawdę 1028 00:53:58,980 --> 00:54:01,175 w życie tej koncepcji do zupełnie inny poziom. 1029 00:54:01,175 --> 00:54:05,300 >> I w zasadzie to tylko sposób zdefiniowania nowego typu danych. 1030 00:54:05,300 --> 00:54:11,010 Więc jeśli get-- jeśli się całej klasy lub elemencie lub teksty stałe, 1031 00:54:11,010 --> 00:54:13,290 Nie należy się martwić o to. 1032 00:54:13,290 --> 00:54:16,280 To jest po prostu sposobem definiowania niektóre nowe szczególności rodzaj danych. 1033 00:54:16,280 --> 00:54:20,230 I to jest bardzo ważne, gdy mówimy o rozwoju aplikacji iOS 1034 00:54:20,230 --> 00:54:24,630 bo wszystko, istnieje w aplikacji iOS 1035 00:54:24,630 --> 00:54:27,460 jest w istocie przedmiotem pewnego rodzaju. 1036 00:54:27,460 --> 00:54:31,980 A celem jest w zasadzie klasy lub enum lub struktury. 1037 00:54:31,980 --> 00:54:34,760 >> Więc w tym przypadku jestem zdefiniowania nowego typu danych 1038 00:54:34,760 --> 00:54:37,740 że dzwonię oceny to pewne właściwości, w tym 1039 00:54:37,740 --> 00:54:41,040 Nazwa i kolejność klas. 1040 00:54:41,040 --> 00:54:43,470 Więc jeden rodzaj oceny że mogę mieć na uwadze, 1041 00:54:43,470 --> 00:54:44,760 byłoby quizy, np. 1042 00:54:44,760 --> 00:54:48,180 Nie chcę mieć ocena, że ​​był quiz 1043 00:54:48,180 --> 00:54:51,460 i miały różne stopnie wiąże się z tym, do quizu jeden, 1044 00:54:51,460 --> 00:54:52,840 quiz dwa, tak dalej, i tak dalej. 1045 00:54:52,840 --> 00:54:55,720 >> A może mam inny typ opodatkowania zestawów problemowych. 1046 00:54:55,720 --> 00:54:56,650 I mogę robić rzeczy. 1047 00:54:56,650 --> 00:54:59,860 Mogę rzeczywiście Funkcje w tym rodzaju 1048 00:54:59,860 --> 00:55:02,645 danych, które są obecnie zwane metody. 1049 00:55:02,645 --> 00:55:04,520 Więc jeśli kiedykolwiek zobaczyć Metoda słowo, to naprawdę 1050 00:55:04,520 --> 00:55:08,190 jest tylko funkcja, która dotyczy do bardzo konkretnej klasy, 1051 00:55:08,190 --> 00:55:10,100 lub bardzo specyficznego typu danych. 1052 00:55:10,100 --> 00:55:12,350 To pozwala nam modyfikować dane wewnątrz. 1053 00:55:12,350 --> 00:55:15,510 >> Więc innymi słowy, jeśli chcę dodaj do mojej oceny stopnia, 1054 00:55:15,510 --> 00:55:18,630 to wszystko, co musisz zrobić, to do dołączyć ocenę, że został wprowadzony 1055 00:55:18,630 --> 00:55:22,660 do tej funkcji do moja własność wewnętrzna. 1056 00:55:22,660 --> 00:55:25,880 Jest jeszcze jeden zgrabny konstrukt tutaj w Swift, który jest w tym dot dot dot 1057 00:55:25,880 --> 00:55:31,780 operatora, co oznacza, że ​​wyniki mogą teraz przyjąć dowolną ilość liczb całkowitych. 1058 00:55:31,780 --> 00:55:33,940 A wyniki będą wartości całkowitych 1059 00:55:33,940 --> 00:55:39,030 zostały przekazane do mojej funkcji, które Oznacza to, że można zrobić takie rzeczy. 1060 00:55:39,030 --> 00:55:42,360 >> Mogę nie dodać stopnie i po prostu zapewnić dowolne liczby całkowite są w nim 1061 00:55:42,360 --> 00:55:47,420 i rzeczywiście mieć tablicę z tych wartości w mojej funkcji 1062 00:55:47,420 --> 00:55:50,270 lub w moim sposób, jak to dzieje. 1063 00:55:50,270 --> 00:55:54,040 Teraz jest to ważne, ponieważ wszystko w Xcode, wszystko w iOS, 1064 00:55:54,040 --> 00:55:56,250 jest w istocie obiektem. 1065 00:55:56,250 --> 00:55:59,630 Miejcie to na uwadze, kiedy biust otwarty Xcode 1066 00:55:59,630 --> 00:56:04,890 i przejść od razu poza iOS Dwa i trzy wersje 1067 00:56:04,890 --> 00:56:08,820 i rzeczywiście przejść do wersji czwartej. 1068 00:56:08,820 --> 00:56:11,940 >> I znów wszystko będzie być umieszczane na stronie seminarium. 1069 00:56:11,940 --> 00:56:16,980 iOS cztery jest rodzaj pełnowartościowy realizacja bardzo podstawowym aplikacji. 1070 00:56:16,980 --> 00:56:23,920 A co ta aplikacja robi to go ładuje UI, który wygląda tak. 1071 00:56:23,920 --> 00:56:28,680 Ponownie, jeśli klikniemy na storyboard możemy zobaczyć, że jest to, jak to wygląda. 1072 00:56:28,680 --> 00:56:31,320 Jest to interfejs użytkownika. 1073 00:56:31,320 --> 00:56:33,676 Posiada tytuł na samej górze. 1074 00:56:33,676 --> 00:56:34,800 Zadzwoniłem go galerii internetowej. 1075 00:56:34,800 --> 00:56:38,400 >> W środku nie ma elementów nazywa widok UI obrazu. 1076 00:56:38,400 --> 00:56:41,340 A na dole nie ma pasek narzędzi za pomocą jednego przycisku, który 1077 00:56:41,340 --> 00:56:46,850 ma elastycznych przestrzenie, które pozwalają go do Centrum w środku tego paska. 1078 00:56:46,850 --> 00:56:51,780 A co się dzieje, jest to, że gdy obciążenia pobiera plik JSON, który jest 1079 00:56:51,780 --> 00:56:55,540 zawierał on serwera w innym miejscu, analizuje ten plik JSON, 1080 00:56:55,540 --> 00:56:58,130 i plik JSON wygląda trochę jak ten. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 Plik JSON wygląda tak. 1083 00:57:06,230 --> 00:57:08,650 Nie jest. 1084 00:57:08,650 --> 00:57:11,730 >> Ma nazwę albumu i posiada tablicę ze zdjęć. 1085 00:57:11,730 --> 00:57:13,490 Każde z tych zdjęć ma imię, a także 1086 00:57:13,490 --> 00:57:19,460 URL się, że stanowią jpeg wersja tego pojedynczego zdjęcia. 1087 00:57:19,460 --> 00:57:24,780 Więc co się stało jest to, że gdy ten program Obciążenia, pobiera plik JSON, 1088 00:57:24,780 --> 00:57:30,590 analizuje go, stawia wszystko na odpowiednik tablicy w iOS 1089 00:57:30,590 --> 00:57:33,020 Aplikacja rozwoju, który jest NSArray. 1090 00:57:33,020 --> 00:57:37,520 A potem można następnie załadować dane do aplikacji 1091 00:57:37,520 --> 00:57:41,100 i załadować go na ekranie. 1092 00:57:41,100 --> 00:57:44,760 >> Jest to obraz, który został załadowany za pomocą przycisku na samym dole. 1093 00:57:44,760 --> 00:57:49,190 Gdybym kliknij Pobierz następnego zdjęcia, następnie ciągnie, że obraz z internetu 1094 00:57:49,190 --> 00:57:53,370 i zastępuje ten obraz w widoku interfejsu obrazu. 1095 00:57:53,370 --> 00:57:57,820 Więc możecie pobrać ten i faktycznie spójrz na niego na komputerze. 1096 00:57:57,820 --> 00:58:00,940 I zbudować go i faktycznie skompilować go na urządzenie. 1097 00:58:00,940 --> 00:58:04,710 Ale w istocie proces był tym, stworzyć storyboard-- 1098 00:58:04,710 --> 00:58:08,080 czy raczej nie create-- ale wybrać storyboard. 1099 00:58:08,080 --> 00:58:15,030 I rzeczywiście we'll-- jeśli nie mind-- weźmiemy tylko kilka sekund 1100 00:58:15,030 --> 00:58:18,390 rzeczywiście pokazać, jak to się stało. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Wystarczy więc, że, jak to możliwe w rzeczywistości osiągnięcia tego celu jest nieco bardziej 1103 00:58:27,820 --> 00:58:28,360 widoczne. 1104 00:58:28,360 --> 00:58:30,651 Jeden wniosek widok, jestem Zadzwonię do tego seminarium 1105 00:58:30,651 --> 00:58:35,330 czterech reprezentujących ten szczególności liczbę. 1106 00:58:35,330 --> 00:58:36,335 Zapisz go na pulpicie. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, będzie kliknąć w serii ujęć. 1109 00:58:42,110 --> 00:58:47,030 I co mam zrobić jest znaleźć mój widok obrazu, 1110 00:58:47,030 --> 00:58:50,940 przeciągnij go na mojej użytkownika Interfejs i centrum to. 1111 00:58:50,940 --> 00:58:54,850 Teraz tylko skupiając ją niestety Nie ma zamiar zrobić dużo, 1112 00:58:54,850 --> 00:58:58,680 wyjątkiem ekranu to jest dokładnie ten rozmiar. 1113 00:58:58,680 --> 00:59:03,950 >> Tak więc możemy przekonać się o tym przez podwójne kliknięcie na tym okręgu rzeczy, 1114 00:59:03,950 --> 00:59:08,290 obniżenie to pop się menu tutaj i zmiany 1115 00:59:08,290 --> 00:59:11,110 podgląd, gdzie my będziemy rzeczywiście dostać szansę zobaczyć, jak 1116 00:59:11,110 --> 00:59:13,530 będzie to w rzeczywistości patrzeć na innych urządzeniach. 1117 00:59:13,530 --> 00:59:16,500 Jak widać, nie wiemy nawet, zobaczyć go na tym konkretnym przypadku. 1118 00:59:16,500 --> 00:59:18,500 Więc mam zamiar zamknąć to teraz. 1119 00:59:18,500 --> 00:59:22,100 >> I mam zamiar wybrać ta ikona w dół na bardzo 1120 00:59:22,100 --> 00:59:23,910 dolna część ekranu. 1121 00:59:23,910 --> 00:59:26,584 Mówi Rozwiąż Auto problemów dotyczących układu. 1122 00:59:26,584 --> 00:59:28,000 Niestety, nie jest to obcięte na dole. 1123 00:59:28,000 --> 00:59:36,360 Ale jeśli klikam na to, co ja Czy to się pop up-- odejść. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Co mi się to, że pop-up pozwala mi na dodanie brakujących ograniczeń. 1126 00:59:51,220 --> 00:59:53,780 A tym, że to będzie to rodzaj zablokować 1127 00:59:53,780 --> 00:59:56,640 w część środkową Ekran jak ja może się spodziewać. 1128 00:59:56,640 --> 01:00:00,520 >> Teraz, aby dostać się na ten przycisk na Najwięcej z nich, muszę iść do redakcji. 1129 01:00:00,520 --> 01:00:05,010 Idź do Osadza się i kliknij Kontroler nawigacyjny. 1130 01:00:05,010 --> 01:00:08,900 Co to zrobi to, że doda cały ten drugi składnik do niego, 1131 01:00:08,900 --> 01:00:11,310 ale faktycznie odwołuje go z powrotem do mojej oryginalnej UI. 1132 01:00:11,310 --> 01:00:14,450 A szczegóły, znowu, my nie naprawdę trzeba dbać o teraz. 1133 01:00:14,450 --> 01:00:16,710 Ale chcę mieć Pasek na samym dole. 1134 01:00:16,710 --> 01:00:18,530 Więc sprawdzę Pokazy Toolbar. 1135 01:00:18,530 --> 01:00:21,870 >> I to stanowi w moim zdaniem, który jest teraz gdzieś indziej, 1136 01:00:21,870 --> 01:00:23,900 widzimy to związane tutaj. 1137 01:00:23,900 --> 01:00:28,710 Teraz zapewnia pasek narzędzi na dnie mojego UI. 1138 01:00:28,710 --> 01:00:34,770 Więc teraz, zamiast wybierania Widok obrazu, można znaleźć etykietę, 1139 01:00:34,770 --> 01:00:41,140 czy raczej toolbar-- Zobaczmy, gdzie to jest? 1140 01:00:41,140 --> 01:00:41,890 Jak to się nazywa? 1141 01:00:41,890 --> 01:00:49,760 Poz button-- bar-- item-- sorry-- bar poz przycisk. 1142 01:00:49,760 --> 01:00:54,590 Plop że i stosować kilka od elastyczne przestrzenie po obu stronach 1143 01:00:54,590 --> 01:00:57,429 faktycznie centrum tego. 1144 01:00:57,429 --> 01:00:58,970 Więc teraz stworzyłem moje UI, w zasadzie. 1145 01:00:58,970 --> 01:01:01,428 I mogę dać mu nazwę, podwójne kliknięcie na samej górze 1146 01:01:01,428 --> 01:01:04,880 tu i mówiąc galerię internetową i tak dalej. 1147 01:01:04,880 --> 01:01:08,100 Teraz znowu, są elementami które istnieją same z siebie. 1148 01:01:08,100 --> 01:01:10,400 A ja mam się połączyć je do mojego kodu, który 1149 01:01:10,400 --> 01:01:14,297 Mogę zrobić ponownie przynosząc się tym podwójnym ikonę koła, 1150 01:01:14,297 --> 01:01:15,380 zmiany z podglądu. 1151 01:01:15,380 --> 01:01:18,950 Który, nawiasem mówiąc, teraz możemy zobaczyć, jest ładnie na środku i będzie dobrze wyglądać 1152 01:01:18,950 --> 01:01:23,720 na różnych urządzeniach. 1153 01:01:23,720 --> 01:01:27,280 >> Przełączyć na tryb automatyczny, który będzie wywołać kod ViewController. 1154 01:01:27,280 --> 01:01:29,030 A teraz ta część jest ważna. 1155 01:01:29,030 --> 01:01:34,590 W celu, aby połączyć te dwa elementy, kod do interfejsu użytkownika, 1156 01:01:34,590 --> 01:01:36,680 wybrać element, który chcesz się połączyć. 1157 01:01:36,680 --> 01:01:39,570 Tak więc w tym przypadku rzeczywiście chcesz zakodować 1158 01:01:39,570 --> 01:01:43,520 zmienić obraz, który jest zawarty w tym widoku interfejsu obrazu. 1159 01:01:43,520 --> 01:01:47,070 Więc jeśli kontrolować kliknięcie Widok obrazu i przeciągnij, 1160 01:01:47,070 --> 01:01:51,960 zauważysz, że masz mały bar, kiedy puścić wszystko to pop 1161 01:01:51,960 --> 01:01:53,550 pojawią się. 1162 01:01:53,550 --> 01:01:56,470 >> I mówi, że będzie utworzyć połączenie. 1163 01:01:56,470 --> 01:01:59,300 I tutaj chcę dać go Nazwa, coś galerii. 1164 01:01:59,300 --> 01:02:00,240 Naciśnij Enter. 1165 01:02:00,240 --> 01:02:03,040 I to rzeczywiście zapewnia Zmienna o nazwie Galeria 1166 01:02:03,040 --> 01:02:08,600 które można następnie odwoływać w kodzie aby zmienić, na przykład. 1167 01:02:08,600 --> 01:02:10,430 Więc jak to, że kod faktycznie wygląda? 1168 01:02:10,430 --> 01:02:13,030 Cóż znowu, ja nie chcę spędzać zbyt dużo czasu na to. 1169 01:02:13,030 --> 01:02:15,430 I zachęcam do pobrać go i spójrz. 1170 01:02:15,430 --> 01:02:18,330 Ale jednym z najbardziej Ważnym aspektem jest kod 1171 01:02:18,330 --> 01:02:20,980 faktycznie pobiera obraz. 1172 01:02:20,980 --> 01:02:26,470 >> Więc w tym przypadku chcę aby w ramach moich zdjęć 1173 01:02:26,470 --> 01:02:28,520 Tablica, która jest zawarta w moim klasy. 1174 01:02:28,520 --> 01:02:33,390 Chcę zdefiniować nazwę i adres URL który został przeanalizowany z tego JSON. 1175 01:02:33,390 --> 01:02:39,810 Właściwie zwrócić urządzenie, aby uzyskać Adres URL, aby pobrać URL z tego, 1176 01:02:39,810 --> 01:02:44,060 a następnie pobrać dane z zawartość tego adresu URL. 1177 01:02:44,060 --> 01:02:49,430 Następnie przekonwertować dane na obraz przez przekazanie go do obrazu UI. 1178 01:02:49,430 --> 01:02:52,880 Więc jeszcze raz, wszystko to są różne rodzaje obiektów, na różne klasy. 1179 01:02:52,880 --> 01:02:58,410 >> A potem można następnie ustawić moje gallery.image równa tych danych. 1180 01:02:58,410 --> 01:03:00,750 I to jest rodzaj mięsa o tym, że w rzeczywistości jest to 1181 01:03:00,750 --> 01:03:08,250 w stanie zmienić zmienić dane from-- obraz z jednego do drugiego. 1182 01:03:08,250 --> 01:03:10,660 Więc jeszcze raz, mam nadzieję, że teraz Wiele z konstruktów 1183 01:03:10,660 --> 01:03:12,240 będzie trochę więcej sensu. 1184 01:03:12,240 --> 01:03:15,260 Zauważ, że istnieje jakiś wykrzykniki tutaj. 1185 01:03:15,260 --> 01:03:19,810 Te wykrzykniki są głównie związane z optionals. 1186 01:03:19,810 --> 01:03:22,657 >> Co mam w zasadzie powiedzieć, że nawet bez kontroli 1187 01:03:22,657 --> 01:03:24,490 aby sprawdzić, czy nie ma danych w ramach tego opcjonalne, 1188 01:03:24,490 --> 01:03:27,140 Mam zamiar iść do przodu i przyjąć, że istnieje i rozpakowanie go. 1189 01:03:27,140 --> 01:03:31,340 Pamiętaj, że użyliśmy analogii rodzaj opakowania dla optionals 1190 01:03:31,340 --> 01:03:34,700 i musimy rozpakować Pakiet i wyciągnąć dane z. 1191 01:03:34,700 --> 01:03:37,570 Wykrzyknik Siły, które rzeczywiście się zdarzają. 1192 01:03:37,570 --> 01:03:39,590 >> Ale wiem, że to jest bezpieczne, bo sprawdzone 1193 01:03:39,590 --> 01:03:42,070 aby sprawdzić, czy dane zdjęcie jest równa do zera, mam faktycznie sprawdzić 1194 01:03:42,070 --> 01:03:45,420 aby sprawdzić, czy opcja był w rzeczywistości nie powiodło się. 1195 01:03:45,420 --> 01:03:47,110 Gdyby to, w rzeczywistości, nie powiodła się już. 1196 01:03:47,110 --> 01:03:52,450 A więc jestem pewien, że raz mogę to Punkt Śmiało mogę rozpakować te dane. 1197 01:03:52,450 --> 01:03:55,710 Możesz również zobaczyć go w forma znakiem zapytania. 1198 01:03:55,710 --> 01:03:59,100 Jeśli więc przewinąć w dół do miejsca, gdzie trzeba właściwie analizować dane. 1199 01:03:59,100 --> 01:04:01,850 >> Więc nie zniechęcaj się ten rodzaj długich nazw. 1200 01:04:01,850 --> 01:04:06,580 Można znaleźć w Apple strona deweloper dużo 1201 01:04:06,580 --> 01:04:09,620 odniesień do wszystkich Cele i wszystkie procesy 1202 01:04:09,620 --> 01:04:11,170 że w rzeczywistości było to możliwe. 1203 01:04:11,170 --> 01:04:15,990 Ale zauważ, że jest to w istocie Funkcja gdzie przekazać mu jakieś dane. 1204 01:04:15,990 --> 01:04:18,410 I wrócę jakieś dane. 1205 01:04:18,410 --> 01:04:24,190 I trzeba to wykorzystać jako słowo kluczowe do przekształcić go w tym NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Co jest znowu, opcjonalnie NSDictionary. 1207 01:04:26,490 --> 01:04:31,070 Które następnie muszą sprawdzić, czy istnieje. 1208 01:04:31,070 --> 01:04:37,130 >> Więc mogę używać, jeśli pozwól udane równi analizowany, 1209 01:04:37,130 --> 01:04:40,620 wtedy wiem, że opcja rzeczywiście zawiera jakieś dane. 1210 01:04:40,620 --> 01:04:43,840 Albo to, co zrobiłem tutaj było po prostu założyć, że jeśli nie 1211 01:04:43,840 --> 01:04:49,067 było żadnych błędów, które w rzeczywistości jest on bezpieczny. 1212 01:04:49,067 --> 01:04:51,400 Dobrze, chcę podziękować wszyscy bardzo za przybycie. 1213 01:04:51,400 --> 01:04:53,540 Wiem, że to było dużo, ale to była tylko godzina 1214 01:04:53,540 --> 01:04:55,920 rozmawiać o niektórych dość zaawansowane rzeczy. 1215 01:04:55,920 --> 01:04:59,640 I tak mam nadzieję, że dostaniesz szansa, aby pobrać cały kod 1216 01:04:59,640 --> 01:05:01,657 i weź lepiej, dokładne spojrzenie na niego. 1217 01:05:01,657 --> 01:05:04,240 Rodzaj przekonać się o wszystkim z rzeczy, które się dzieje. 1218 01:05:04,240 --> 01:05:06,800 I chcę podziękować wszystkim, znowu, za przybycie. 1219 01:05:06,800 --> 01:05:08,760 Powodzenia w swoich ostatnich projektów. 1220 01:05:08,760 --> 01:05:10,600 Miłego dnia. 1221 01:05:10,600 --> 01:05:11,467