1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL ARMENDARIZ: Hola a tots, la benvinguda a iOS desenvolupament d'aplicacions 3 00:00:14,340 --> 00:00:15,020 amb rapidesa. 4 00:00:15,020 --> 00:00:15,870 Estic Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Estic preceptor d'equip ciència aquí a l'Escola 6 00:00:18,920 --> 00:00:21,200 d'Enginyeria i Ciències Aplicades. 7 00:00:21,200 --> 00:00:24,310 I ràpid és en realitat una mica d'un llenguatge molt ben cuidat. 8 00:00:24,310 --> 00:00:27,190 I tinc alguns plans per avui. 9 00:00:27,190 --> 00:00:31,430 Així que durant la següent hora o així que anem a mirar-se a si mateixa iOS desenvolupament d'aplicacions 10 00:00:31,430 --> 00:00:36,640 usant Xcode i crear realment una mica , Aplicacions molt simples molt bàsics. 11 00:00:36,640 --> 00:00:40,070 I mirant a la forma en què realment prendre aquestes aplicacions, 12 00:00:40,070 --> 00:00:42,887 i construir amb elles, i en realitat posar-los en un dispositiu iOS. 13 00:00:42,887 --> 00:00:44,970 Algunes de les coses que no anem a mirar 14 00:00:44,970 --> 00:00:47,540 inclourà coses com en realitat tenint una aplicació 15 00:00:47,540 --> 00:00:48,940 i posar-lo en l'App Store. 16 00:00:48,940 --> 00:00:52,930 Hi ha una gran quantitat de tutorials en línia que l'ajudarà amb aquest aspecte d'ella. 17 00:00:52,930 --> 00:00:56,230 Però també perquè com part del CS50, s'obté 18 00:00:56,230 --> 00:00:59,780 a unir-se al desenvolupament d'Apple equip, equip de desenvolupament d'aplicacions de CS50. 19 00:00:59,780 --> 00:01:02,790 Si no ha fet encara i que ets soci CS50, 20 00:01:02,790 --> 00:01:04,810 Jo recomano que fer això perquè això 21 00:01:04,810 --> 00:01:08,820 és com ets capaç de crear alguns programes en Xcode, 22 00:01:08,820 --> 00:01:11,890 construir-les, i de fet posar ells en alguns dels seus dispositius iOS 23 00:01:11,890 --> 00:01:14,087 si vostè realment té un dispositiu iOS física. 24 00:01:14,087 --> 00:01:16,670 Si vostè no té un iOS física dispositiu que està més que bé. 25 00:01:16,670 --> 00:01:19,810 En realitat pot desenvolupar per iOS. 26 00:01:19,810 --> 00:01:22,390 I Xcode té una simulador que permet 27 00:01:22,390 --> 00:01:26,570 per veure la seva aplicació en acció en l'equip. 28 00:01:26,570 --> 00:01:30,440 Però quin tipus de és una cosa endreçada per jugar i interactuar realment 29 00:01:30,440 --> 00:01:34,235 amb la seva aplicació en un dispositiu real. 30 00:01:34,235 --> 00:01:37,360 Així que hi ha un parell de requisits per realment fer tot aquest desenvolupament. 31 00:01:37,360 --> 00:01:39,151 Un d'ells és que vostè ha de tenir un Mac. 32 00:01:39,151 --> 00:01:44,770 Ha d'estar en execució 10.9.4 o posterior per tal de fer el desenvolupament amb ràpid. 33 00:01:44,770 --> 00:01:47,770 >> Podeu utilitzar una anterior versió per desenvolupar 34 00:01:47,770 --> 00:01:50,810 amb Objective C per iOS i Mac. 35 00:01:50,810 --> 00:01:53,990 Però recomano, i una gran part del exemples que veurem avui, 36 00:01:53,990 --> 00:01:55,700 utilitzar 10,10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Així que si vostè encara no ha millorat, que és una bona excusa per fer-ho. 38 00:02:00,910 --> 00:02:05,480 Ara Xcode 6.1 és l'última versió del l'entorn de desenvolupament integrat 39 00:02:05,480 --> 00:02:08,979 que Apple ofereix de forma gratuïta que es pot descarregar de l'App Store. 40 00:02:08,979 --> 00:02:11,220 I li recomano que També executar la versió més recent. 41 00:02:11,220 --> 00:02:14,700 >> Si li passa a estar corrent una anterior versió, Xcode 5 i per sota només 42 00:02:14,700 --> 00:02:16,741 simplement no donen suport ràpid que sigui. 43 00:02:16,741 --> 00:02:19,490 I les versions beta de sis, que van ser posats en llibertat durant l'estiu, 44 00:02:19,490 --> 00:02:21,770 fer compatible ràpid, però hi ha hagut un nombre enorme 45 00:02:21,770 --> 00:02:25,220 de canvis en el llenguatge, prou perquè el codi que ets 46 00:02:25,220 --> 00:02:28,320 anar a la vista i que podria trobar a Internet 47 00:02:28,320 --> 00:02:33,294 serà en realitat no compilar correctament en aquestes versions anteriors de Xcode. 48 00:02:33,294 --> 00:02:35,460 Així que de nou, si no encara tenir un compte de desenvolupador, 49 00:02:35,460 --> 00:02:38,560 Et recomano que vagis a developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Inscriu-te, creu un compte de desenvolupador, i unir-se a l'equip CS50 desenvolupament d'aplicacions. 51 00:02:42,240 --> 00:02:45,530 Això proporcionarà a vostè una oportunitat compilar les seves aplicacions 52 00:02:45,530 --> 00:02:47,840 i els va posar al dispositiu. 53 00:02:47,840 --> 00:02:49,222 OK, així que anem a començar. 54 00:02:49,222 --> 00:02:50,930 La primera cosa que farem és 55 00:02:50,930 --> 00:02:55,140 per crear en realitat una molt simple projecte en Xcode 56 00:02:55,140 --> 00:02:59,530 que li permetrà fer una sol·licitud. 57 00:02:59,530 --> 00:03:03,170 >> Així que si vostè encara no té Xcode obert, endavant i obrir- 58 00:03:03,170 --> 00:03:04,270 i crear un nou projecte. 59 00:03:04,270 --> 00:03:06,570 Una pantalla especial de benvinguda s'obrirà i li donarà 60 00:03:06,570 --> 00:03:08,800 algunes opcions sobre el que que és el que vols fer. 61 00:03:08,800 --> 00:03:12,170 Només dir que voleu crear un nou projecte, una nova aplicació. 62 00:03:12,170 --> 00:03:15,650 Aquesta finestra s'obrirà, assumint que vostè està utilitzant Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 En aquest moment, i per al durada d'aquest seminari, 64 00:03:17,650 --> 00:03:19,990 estarem fent servir veure aplicacions individuals, simplement 65 00:03:19,990 --> 00:03:22,590 tipus d'una aplicació bàsica a mullar-se els peus. 66 00:03:22,590 --> 00:03:25,200 I vostè pot ramificar pel seu compte a partir d'aquí. 67 00:03:25,200 --> 00:03:27,660 >> Feu clic a Següent a aquest punt. 68 00:03:27,660 --> 00:03:30,796 Ara aquí hi ha un parell de coses que és possible que vulgueu entrar. 69 00:03:30,796 --> 00:03:32,670 El nom del producte és el Nom del teu projecte. 70 00:03:32,670 --> 00:03:34,859 En aquest cas, només sóc anomenarem Seminar1 71 00:03:34,859 --> 00:03:36,150 perquè és el nostre primer exemple. 72 00:03:36,150 --> 00:03:38,290 Nom de l'organització, en aquest cas és només el meu nom. 73 00:03:38,290 --> 00:03:41,760 Per descomptat, pots canviar- al seu propi nom, o per CS50. 74 00:03:41,760 --> 00:03:46,160 Identificador d'Organització, si passa que té un lloc web acaba de prendre 75 00:03:46,160 --> 00:03:49,940 el nom de domini en revertir, com.yourname. 76 00:03:49,940 --> 00:03:54,200 i després el nom del producte ha d'aparèixer de forma automàtica 77 00:03:54,200 --> 00:03:55,820 després d'això com l'identificador de paquet. 78 00:03:55,820 --> 00:03:59,200 >> Òbviament, l'idioma que estem estarà usant per avui és ràpida. 79 00:03:59,200 --> 00:04:02,590 Pot, per descomptat, utilitzar Objective C per això, però avui serà ràpida. 80 00:04:02,590 --> 00:04:04,920 I anem a per ara diem dispositius universals, per la qual cosa 81 00:04:04,920 --> 00:04:06,900 que funciona tant en l'iPad i l'iPhone. 82 00:04:06,900 --> 00:04:10,040 I deixarem nucli dades no comprovades per mantenir 83 00:04:10,040 --> 00:04:12,830 el projecte relativament senzill de moment. 84 00:04:12,830 --> 00:04:14,430 Així que seguirem endavant i feu clic a Següent. 85 00:04:14,430 --> 00:04:16,471 I es va a preguntar- on vull guardar-lo. 86 00:04:16,471 --> 00:04:19,250 Vaig a guardar en el meu escriptori per ara. 87 00:04:19,250 --> 00:04:22,267 >> Molt bé, així que ara això és el que passar quan Xcode realment obert. 88 00:04:22,267 --> 00:04:24,100 I noti que el El primer que es veu 89 00:04:24,100 --> 00:04:28,770 És aquest punt d'exclamació que diu sense identitat signatura trobat. 90 00:04:28,770 --> 00:04:31,520 Jo vaig fer això intencionalment en el meu equip i estic 91 00:04:31,520 --> 00:04:34,220 l'esperança que vaig a ser capaç de solucionar en realitat, 92 00:04:34,220 --> 00:04:37,860 perquè jo vull que vegi com això en realitat treballar en la seva pròpia màquina. 93 00:04:37,860 --> 00:04:40,400 >> Endavant, feu clic qüestió fix. 94 00:04:40,400 --> 00:04:45,400 Se us demanarà si té una compte de desenvolupador d'Apple existent. 95 00:04:45,400 --> 00:04:48,330 Aquí és on l'adhesió a la CS50 equip de desenvolupament d'aplicacions 96 00:04:48,330 --> 00:04:51,240 és important perquè no només tenen un compte d'aplicacions, 97 00:04:51,240 --> 00:04:53,690 però també té la capacitat per signar les aplicacions 98 00:04:53,690 --> 00:04:56,420 i els va posar en el seu dispositiu iOS. 99 00:04:56,420 --> 00:04:58,957 Es tracta clic no-- tema correcció no és necessària 100 00:04:58,957 --> 00:05:01,040 si només anem a construir i desenvolupar a nivell local, 101 00:05:01,040 --> 00:05:03,520 enterament dins del simulador de iOS. 102 00:05:03,520 --> 00:05:05,820 >> Però per ara em vaig desenvolupar i posar ells 103 00:05:05,820 --> 00:05:08,160 en el meu iPad, que serà capaç de transmetre també. 104 00:05:08,160 --> 00:05:10,770 Així que vull afegir realment això. 105 00:05:10,770 --> 00:05:13,670 I es preguntarà em per a mi ID poma. 106 00:05:13,670 --> 00:05:15,700 Així que serà això. 107 00:05:15,700 --> 00:05:18,940 I he de buscar el meu contrasenya, que és per aquí. 108 00:05:18,940 --> 00:05:27,760 Així que em donen només un segon per trobar que, i copiar això i enganxar-lo aquí. 109 00:05:27,760 --> 00:05:28,580 >> Feu clic a Afegeix. 110 00:05:28,580 --> 00:05:31,095 Es va a preguntar- quin equip Vull unir-me. 111 00:05:31,095 --> 00:05:33,240 Jo vaig a fer l'escola d'enginyeria. 112 00:05:33,240 --> 00:05:35,680 Feu clic a Unir-se. 113 00:05:35,680 --> 00:05:37,780 Vaja, això és el equivocat. 114 00:05:37,780 --> 00:05:40,730 Anem a fer això. 115 00:05:40,730 --> 00:05:42,060 Esperem que un funcionarà. 116 00:05:42,060 --> 00:05:44,220 Que un segueix sense funcionar. 117 00:05:44,220 --> 00:05:46,610 Ens estem quedant sense bones aquí. 118 00:05:46,610 --> 00:05:48,260 Bé, aquest hauria de funcionar. 119 00:05:48,260 --> 00:05:50,816 Ara tanca això. 120 00:05:50,816 --> 00:05:54,450 Ara anem a fer l'escola de enginyeria, feu clic a seleccionar. 121 00:05:54,450 --> 00:06:00,190 >> I ara espero que després d'un parell de segons can-- Acceptar, 122 00:06:00,190 --> 00:06:02,550 Vaig a arrebossat i petició. 123 00:06:02,550 --> 00:06:05,410 Oh home, això va a no funcionar. 124 00:06:05,410 --> 00:06:08,890 Bé, vaig a tractar d'una diferent. 125 00:06:08,890 --> 00:06:11,167 Anem a fer això d'aquí. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Demostracions en viu m'estan fallant. 128 00:06:19,310 --> 00:06:22,540 Potser hàgim de tornar a només Edifici completament a nivell local, 129 00:06:22,540 --> 00:06:25,050 però que estaria bé en aquest cas. 130 00:06:25,050 --> 00:06:28,560 >> Així que aquí, mentre que això és en realitat de treball, el que farem és simplement 131 00:06:28,560 --> 00:06:31,190 crear un molt simple Hola aplicació Mundial. 132 00:06:31,190 --> 00:06:32,340 Així que això és Xcode. 133 00:06:32,340 --> 00:06:37,300 I si no has vist encara, que pot ser una mica intimidatori al principi. 134 00:06:37,300 --> 00:06:41,430 Hi ha una gran quantitat de panells, hi ha un gran quantitat de xafarderies en diverses àrees. 135 00:06:41,430 --> 00:06:44,300 Però tot just s'adonen que hi ha realment diversos components principals 136 00:06:44,300 --> 00:06:46,580 a aquest entorn de desenvolupament. 137 00:06:46,580 --> 00:06:51,090 En l'extrema esquerra són tots els arxius que són aplicables al seu programa 138 00:06:51,090 --> 00:06:52,997 o per al seu projecte en particular. 139 00:06:52,997 --> 00:06:55,080 Estarem fent clic al voltant en alguns d'ells i anem a 140 00:06:55,080 --> 00:06:57,660 assenyalar la més de les més importants en el temps. 141 00:06:57,660 --> 00:06:59,650 A l'extrem dret, que tenir un conjunt d'atributs. 142 00:06:59,650 --> 00:07:02,920 I tots aquests atributs, hi ha són diversos panells per als atributs. 143 00:07:02,920 --> 00:07:06,770 Els panells canviaran depenent de el context de la pàgina principal, el qual 144 00:07:06,770 --> 00:07:08,290 passa a ser en el medi. 145 00:07:08,290 --> 00:07:11,740 Ara el medi realment pot mostrar que una varietat de coses, per exemple, 146 00:07:11,740 --> 00:07:13,290 el seu propi codi. 147 00:07:13,290 --> 00:07:17,070 O pot ser que en realitat tener-- quan fa clic en el guió gràfic que 148 00:07:17,070 --> 00:07:21,270 és, per cert, només una gràfica representació del seu usuari 149 00:07:21,270 --> 00:07:25,350 interfície per a la seva application-- a continuació, el panell d'atributs 150 00:07:25,350 --> 00:07:27,334 a l'extrem dret canviarà realment. 151 00:07:27,334 --> 00:07:29,750 Ara hi ha un parell d'altres coses que vull assenyalar. 152 00:07:29,750 --> 00:07:33,360 Pot espècie d'explorar els voltants en el medi ambient pel seu compte. 153 00:07:33,360 --> 00:07:35,730 Però una de les coses que ha estat molt útil 154 00:07:35,730 --> 00:07:38,470 és aquest botó d'aquí, el la part superior dreta de la finestra. 155 00:07:38,470 --> 00:07:41,230 Hi ha un botó que s'assembla més a la 156 00:07:41,230 --> 00:07:46,090 l'esquerra té un paràgraf seguida de dos cercles i ordenar 157 00:07:46,090 --> 00:07:49,540 de dues fletxes que apunten de distància uns dels altres. 158 00:07:49,540 --> 00:07:52,640 Si es canvia entre la editor estàndard, que 159 00:07:52,640 --> 00:07:55,560 és l'extrem esquerre, l'un que està seleccionat per defecte, 160 00:07:55,560 --> 00:08:01,040 i els dos cercles superposats entre si, el que ofereix 161 00:08:01,040 --> 00:08:02,210 són una vista doble panell. 162 00:08:02,210 --> 00:08:04,240 >> I això és en realitat serà útil per a nosaltres 163 00:08:04,240 --> 00:08:07,330 quan necessitem enllaçar articles en la interfície d'usuari al codi. 164 00:08:07,330 --> 00:08:09,330 I parlarem més sobre que en un moment. 165 00:08:09,330 --> 00:08:12,050 Però s'adona que si vostè aconsegueix fins i tot més panells d'aquest tipus, 166 00:08:12,050 --> 00:08:15,830 pot simplificar la vista només una mica fent clic de nou 167 00:08:15,830 --> 00:08:20,680 en el seu editor individual. 168 00:08:20,680 --> 00:08:21,580 Fins ara, tot bé. 169 00:08:21,580 --> 00:08:24,560 Així que, bàsicament tenim el codi a l'esquerra, atribueix a la dreta, 170 00:08:24,560 --> 00:08:28,260 i sigui el que sigui que estem treballant aquí al mateix centre. 171 00:08:28,260 --> 00:08:30,390 >> Així que aquí m'he fet clic en el guió gràfic principal. 172 00:08:30,390 --> 00:08:33,350 I el guió gràfic, de nou, és una forma en Xcode 173 00:08:33,350 --> 00:08:38,110 que en realitat es pot crear el seu usuari interfície mitjançant arrossegar i deixar anar 174 00:08:38,110 --> 00:08:39,130 tècniques. 175 00:08:39,130 --> 00:08:41,190 I així, per la nostra mateixa primera aplicació d'aquest 176 00:08:41,190 --> 00:08:42,720 és precisament el que farem. 177 00:08:42,720 --> 00:08:45,950 Anem a anar a la porció molt lluny inferior dreta 178 00:08:45,950 --> 00:08:49,900 de la pantalla, que conté una varietat d'elements d'usuari 179 00:08:49,900 --> 00:08:53,270 que després es pot fer clic i arrossegar per crear la interfície d'usuari. 180 00:08:53,270 --> 00:08:55,550 >> Ara tots ells elements s'anomenen vistes 181 00:08:55,550 --> 00:08:57,370 perquè proporcionen algun tipus de vista. 182 00:08:57,370 --> 00:09:00,190 Hi ha una vista de la imatge, per exemple, per mostrar en realitat 183 00:09:00,190 --> 00:09:01,740 una imatge en la interfície d'usuari. 184 00:09:01,740 --> 00:09:04,310 Hi ha una vista de taula a en realitat mostrar una taula. 185 00:09:04,310 --> 00:09:05,190 Així successivament i així successivament. 186 00:09:05,190 --> 00:09:08,250 Hi ha una àmplia varietat de vistes que es poden seleccionar aquí. 187 00:09:08,250 --> 00:09:11,100 Així que per ara anem per buscar una etiqueta. 188 00:09:11,100 --> 00:09:13,550 Vostè només pot desplaçar-se a través de totes les llistes que hi és. 189 00:09:13,550 --> 00:09:15,460 Però aquí hi ha la recerca bar a la part inferior 190 00:09:15,460 --> 00:09:19,460 que fa que sigui més fàcil identificar visites específiques que en realitat 191 00:09:19,460 --> 00:09:22,020 voler arrossegar a la seva interfície d'usuari. 192 00:09:22,020 --> 00:09:23,560 >> Vaig trobar la meva etiqueta. 193 00:09:23,560 --> 00:09:28,430 Vaig a arrossegar aquí, directament en la meva aplicació d'exemple. 194 00:09:28,430 --> 00:09:30,130 Allà mateix, al mig es veu bé. 195 00:09:30,130 --> 00:09:33,180 I jo vaig a escriure "Hola Món!" 196 00:09:33,180 --> 00:09:33,810 Premeu Enter. 197 00:09:33,810 --> 00:09:34,877 Ara tinc una etiqueta. 198 00:09:34,877 --> 00:09:36,960 No es veu com si fos centrada bastant correctament. 199 00:09:36,960 --> 00:09:38,500 Així que puc tractar de tornar a centrar. 200 00:09:38,500 --> 00:09:42,100 Afortunadament s'ofereix a aquests guies per fer les coses molt més fàcil. 201 00:09:42,100 --> 00:09:44,130 Vaig a tractar de compilar. 202 00:09:44,130 --> 00:09:46,570 És d'esperar que en realitat treballar aquí. 203 00:09:46,570 --> 00:09:52,870 I si no ho fa, en un moment que, de fet, apareix en el meu iPad. 204 00:09:52,870 --> 00:09:54,360 Està aquí mateix. 205 00:09:54,360 --> 00:09:55,060 Aquí està. 206 00:09:55,060 --> 00:09:56,590 >> OK, així que això és tot. 207 00:09:56,590 --> 00:09:57,160 Hem acabat. 208 00:09:57,160 --> 00:09:58,868 Hem creat la nostra pròpia primera aplicació. 209 00:09:58,868 --> 00:10:01,330 Ara, òbviament, això no fa res. 210 00:10:01,330 --> 00:10:02,280 És només una etiqueta. 211 00:10:02,280 --> 00:10:07,350 No hi ha connexió entre la interfície d'usuari i el codi. 212 00:10:07,350 --> 00:10:10,130 Així que si en realitat volia per crear aquesta connexió, 213 00:10:10,130 --> 00:10:14,790 si en realitat volia tenir algun tipus de comunicació entre els elements 214 00:10:14,790 --> 00:10:17,540 que hi ha al pantalla i el codi que 215 00:10:17,540 --> 00:10:19,810 ens permet controlar aquests elements, a continuació, 216 00:10:19,810 --> 00:10:23,570 que realment es necessita per mirar al propi codi. 217 00:10:23,570 --> 00:10:27,000 >> Així que això és el que s'anomena ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 I per, especialment per els seus primers programes, 219 00:10:30,080 --> 00:10:33,120 això serà una espècie de major part del codi que enter-- 220 00:10:33,120 --> 00:10:35,980 serà en aquest document aquí. 221 00:10:35,980 --> 00:10:38,390 Hi ha un munt de coses això és en aquí fins ara, oi? 222 00:10:38,390 --> 00:10:42,660 Hi ha classe kit d'interfície d'usuari d'importació, anul·len, [? funk ,?] totes aquestes coses diferents. 223 00:10:42,660 --> 00:10:45,820 I no és molt clar el és que tot això significa. 224 00:10:45,820 --> 00:10:48,570 Així que anem a fer un pas enrere de distància d'Xcode per una mica 225 00:10:48,570 --> 00:10:52,420 i mirar el llenguatge mateix, ràpida. 226 00:10:52,420 --> 00:10:56,370 >> Així que amb rapidesa, va ser en disseny i desenvolupament 227 00:10:56,370 --> 00:10:58,645 a Apple per prop de quatre anys al meu enteniment. 228 00:10:58,645 --> 00:11:01,270 I hi ha un parell de característiques en ell que són molt ben cuidat. 229 00:11:01,270 --> 00:11:03,910 En primer lloc, es va compilar idioma, igual que C. 230 00:11:03,910 --> 00:11:06,120 Així que primer cal compilar i executar 231 00:11:06,120 --> 00:11:09,580 abans que vostè realment pot executar el codi que resulta. 232 00:11:09,580 --> 00:11:14,250 Però no és, a diferència de C, un interactiu missatge que en realitat es pot executar 233 00:11:14,250 --> 00:11:16,680 i escriure ordres arbitràries en. 234 00:11:16,680 --> 00:11:20,280 I molt semblant a una consola JavaScript que vostè pot estar familiaritzat amb l'ara, 235 00:11:20,280 --> 00:11:24,506 en realitat avaluarà els comandaments i proporcionar a vostè la sortida. 236 00:11:24,506 --> 00:11:26,380 I fins i tot han pres que al següent nivell 237 00:11:26,380 --> 00:11:29,100 i que han creat alguna cosa anomenats parcs infantils en Xcode 238 00:11:29,100 --> 00:11:31,720 que li permetrà treballar visualment amb codi. 239 00:11:31,720 --> 00:11:34,910 I que en realitat veurem alguns exemples que en tan sols una mica. 240 00:11:34,910 --> 00:11:41,680 Es basa en C. C subjau , Perquè tots els compiladors 241 00:11:41,680 --> 00:11:46,820 crear el codi de C i crear el codi objecte. 242 00:11:46,820 --> 00:11:49,240 Però realment accions relativament poc sintaxi. 243 00:11:49,240 --> 00:11:50,721 Es veurà bastant diferent. 244 00:11:50,721 --> 00:11:51,970 Hi haurà algunes similituds. 245 00:11:51,970 --> 00:11:54,140 Però no seran bastants diferències 246 00:11:54,140 --> 00:11:57,200 en comparació amb, per exemple, JavaScript o PHP. 247 00:11:57,200 --> 00:11:59,070 I anem a assenyalar aquests en un moment. 248 00:11:59,070 --> 00:12:01,420 >> Ara una de les coses més grans Sobre SWIFT això és bo 249 00:12:01,420 --> 00:12:05,650 és que, especialment en comparació a C, que està destinat a ser segur. 250 00:12:05,650 --> 00:12:08,100 Tot en ella té la intenció de ser molt inflexible de tipus en. 251 00:12:08,100 --> 00:12:10,780 De fet, és gairebé molest al principi, quan vostè primer 252 00:12:10,780 --> 00:12:15,610 començar a treballar amb rapidesa, el molt que imposa tipus a tot arreu. 253 00:12:15,610 --> 00:12:17,860 Qualsevol cosa que sigui una cadena ha de seguir sent una cadena. 254 00:12:17,860 --> 00:12:22,100 És molt difícil classificar de convers o coaccionar en alguna altra forma. 255 00:12:22,100 --> 00:12:23,800 >> I de nou, anem a mostrar exemples d'això. 256 00:12:23,800 --> 00:12:26,830 Però en última instància, adonar-se que això està destinat a protegir a vostè, 257 00:12:26,830 --> 00:12:32,010 i per que em refereixo al seu codi, de estavellar d'alguna manera horrible quan 258 00:12:32,010 --> 00:12:34,330 vostè té algun tipus de tipus no coincident. 259 00:12:34,330 --> 00:12:36,040 I una altra vegada, treballar amb ell. 260 00:12:36,040 --> 00:12:40,210 Perquè serà frustrant al principi a mesura que tracten d'esbrinar per què exactament 261 00:12:40,210 --> 00:12:43,070 que està rebent aquest inusual error tractar amb tipus. 262 00:12:43,070 --> 00:12:45,350 Però valdrà la pena al final. 263 00:12:45,350 --> 00:12:47,267 >> No tractar automàtica gestió de memòria, 264 00:12:47,267 --> 00:12:49,100 així que ja no tens haver de lidiar amb coses 265 00:12:49,100 --> 00:12:51,400 com malloc i lliure, i tot d'aquest tipus de coses. 266 00:12:51,400 --> 00:12:53,066 I també està dissenyat per generalitats. 267 00:12:53,066 --> 00:12:58,360 Així, mentre que podem utilitzar una Xcode per crear aplicacions de iOS i aplicacions de Mac, 268 00:12:58,360 --> 00:13:00,380 també podem només l'utilitzen com un llenguatge de script. 269 00:13:00,380 --> 00:13:03,660 I així podem usar sort de lloc de o en lloc PHP 270 00:13:03,660 --> 00:13:07,800 de Python per realment analitzar i processar ràpidament 271 00:13:07,800 --> 00:13:09,800 algunes dades que tenim al nostre ordinador. 272 00:13:09,800 --> 00:13:13,290 >> Compta amb una àmplia varietat de moderns característiques, opcionals, mutabilitat, 273 00:13:13,290 --> 00:13:17,900 genèrics, tancaments, i molt d'això coses que vostè pot o no pot reconèixer. 274 00:13:17,900 --> 00:13:22,810 I és només una espècie d'un desafortunat part del llenguatge que alguns d'aquests 275 00:13:22,810 --> 00:13:26,700 tipus d'elements futuristes i moderns que estan continguts dins dels elements són 276 00:13:26,700 --> 00:13:34,520 tan profundament arrelada que en realitat ho faré que ensenyarà CS50.5 una mica. 277 00:13:34,520 --> 00:13:37,305 >> Hem d'aprendre una mica més sobre algunes de les característiques per tal 278 00:13:37,305 --> 00:13:40,180 per entendre realment el que està passant successivament i així que es pot veure en el codi 279 00:13:40,180 --> 00:13:42,450 i no sentir-se totalment perdut. 280 00:13:42,450 --> 00:13:44,820 I veuràs el que vull dir per que en tan sols un minut. 281 00:13:44,820 --> 00:13:47,830 OK, així let's-- suficient d'això classe de matèria teòrica. 282 00:13:47,830 --> 00:13:52,450 Anem realment ullada a la nostra primer programa ràpid. 283 00:13:52,450 --> 00:13:53,590 És una línia de codi. 284 00:13:53,590 --> 00:13:57,690 La línia 14 aquí, que diu CS50 impressió l n hola. 285 00:13:57,690 --> 00:14:01,160 >> Així que hi ha un parell de coses que és molt diferent en aquesta comparació 286 00:14:01,160 --> 00:14:04,140 a les coses que vostè pot ser utilitzat per de C, per exemple. 287 00:14:04,140 --> 00:14:08,390 Un d'ells és que no hi ha intmain, no hi ha secció inclouen, 288 00:14:08,390 --> 00:14:10,790 no hi ha res d'aquestes coses extra. 289 00:14:10,790 --> 00:14:13,790 El inclouen, com a estàndard I / O, com les biblioteques 290 00:14:13,790 --> 00:14:16,580 que en realitat proporcionar la característiques estàndard de la llengua, 291 00:14:16,580 --> 00:14:19,180 s'inclouen automàticament com part de la biblioteca estàndard de ràpida 292 00:14:19,180 --> 00:14:20,680 i que s'importen automàticament. 293 00:14:20,680 --> 00:14:23,740 Vostè no té a veure que la importació manualment. 294 00:14:23,740 --> 00:14:27,360 >> Intmain no existeix perquè el principal punt d'entrada per al codi 295 00:14:27,360 --> 00:14:29,470 és en realitat al a partir del codi. 296 00:14:29,470 --> 00:14:32,000 Pel que qualsevol codi que vostè té començant des del principi 297 00:14:32,000 --> 00:14:34,940 realment serà executat en l'inici. 298 00:14:34,940 --> 00:14:36,520 Així que això simplifica en gran mesura realment. 299 00:14:36,520 --> 00:14:38,470 Noteu també, que no hi ha punt i coma. 300 00:14:38,470 --> 00:14:41,040 No hi ha punt i coma en aquest idioma. 301 00:14:41,040 --> 00:14:43,261 Poses una declaració en una línia individual 302 00:14:43,261 --> 00:14:45,510 i després la línia següent representa un altre comunicat. 303 00:14:45,510 --> 00:14:47,420 Si vostè vol posar declaracions mulitiple línia, 304 00:14:47,420 --> 00:14:49,086 llavors vostè ha de separar per punt i coma. 305 00:14:49,086 --> 00:14:50,940 Però en la seva major part, de bon estil, estem 306 00:14:50,940 --> 00:14:56,530 mai va a veure un punt i coma per els efectes dels estats de separació 307 00:14:56,530 --> 00:14:58,420 en veloç. 308 00:14:58,420 --> 00:14:59,820 Llavors, com això realment funciona? 309 00:14:59,820 --> 00:15:04,080 Doncs molt semblant a C que en realitat ha de compilar aquest. 310 00:15:04,080 --> 00:15:10,640 I així podem fer que mitjançant l'ús c ràpida i després 1.Swift. 311 00:15:10,640 --> 00:15:13,850 I després després d'un parell minuts Això compilarà 312 00:15:13,850 --> 00:15:16,340 i després puc córrer el punt primer. 313 00:15:16,340 --> 00:15:19,691 I del que s'acaba de dir "Hola CS50." 314 00:15:19,691 --> 00:15:20,690 Impressionant, de manera que anem. 315 00:15:20,690 --> 00:15:22,273 Aquí està el nostre primer programa hola món. 316 00:15:22,273 --> 00:15:24,790 Anem a passar a la número dos. 317 00:15:24,790 --> 00:15:30,450 >> Ara a esto-- això ha canviat poc, perquè mentre que normalment 318 00:15:30,450 --> 00:15:34,720 fer--, de fet, sempre s'ha de compilar una aplicació ràpida abans 319 00:15:34,720 --> 00:15:37,180 realment executi un it-- de les grans característiques 320 00:15:37,180 --> 00:15:40,230 que he al·ludit abans era que ràpida en realitat es pot utilitzar a classe 321 00:15:40,230 --> 00:15:43,390 d'una manera pseudo-interpretatiu, hi ha és, de fet, com un intèrpret. 322 00:15:43,390 --> 00:15:46,690 Però el que això va a fer és no és, de fet, una aplicació ràpida 323 00:15:46,690 --> 00:15:47,520 que es pot executar. 324 00:15:47,520 --> 00:15:51,050 >> Així per exemple, si només ha de teclejar ràpid aquí, el que succeirà 325 00:15:51,050 --> 00:15:52,330 és que vostè obtindrà un missatge. 326 00:15:52,330 --> 00:15:59,040 I vostè pot escriure la seva ràpida codi, imprimir hola, i executar. 327 00:15:59,040 --> 00:16:01,867 I serà en realitat print-- bé, no es va imprimir en aquest cas 328 00:16:01,867 --> 00:16:04,450 perquè imprès a centrada cap a fora, que no és visible aquí. 329 00:16:04,450 --> 00:16:06,660 Però en realitat és capaç de funcionar. 330 00:16:06,660 --> 00:16:09,580 I així, en aquest cas, només sóc utilitzarà això com un guió. 331 00:16:09,580 --> 00:16:11,259 I jo realment puc executar aquest codi allà. 332 00:16:11,259 --> 00:16:13,800 Així que la forma en que realment em trobo serà una mica diferent, 333 00:16:13,800 --> 00:16:15,710 però veuràs que en un moment. 334 00:16:15,710 --> 00:16:18,890 Ara, en aquest cas el que anem de fer és definir primer una variable. 335 00:16:18,890 --> 00:16:22,160 Així que això és com definim una variable en ràpid, 336 00:16:22,160 --> 00:16:25,900 Som nosaltres fem servir la paraula clau let, seguim pel nom de la variable, 337 00:16:25,900 --> 00:16:29,280 i després proporcionem alguns la inicialització de les dades opcionalment. 338 00:16:29,280 --> 00:16:34,660 Així que aquest cas estem definint una constant anomenada nom, 339 00:16:34,660 --> 00:16:37,775 i farem servir això en la sortida de la nostra línia d'impressió 340 00:16:37,775 --> 00:16:39,590 al, hola nom molt inferior. 341 00:16:39,590 --> 00:16:43,260 >> Ara adonar que en lloc d'utilitzar% s, podem encapsular el nom d'aquest 342 00:16:43,260 --> 00:16:49,960 variable en / () i ser capaç de concatenar en els continguts d'aquesta 343 00:16:49,960 --> 00:16:51,790 cadena en aquesta cadena. 344 00:16:51,790 --> 00:16:56,510 Ara a diferència de C, cadena és un tipus real actual en ràpida. 345 00:16:56,510 --> 00:16:59,240 I pel que es troba al costat de ints i juntament 346 00:16:59,240 --> 00:17:02,220 doblega molt fàcilment i, naturalment, en comparació 347 00:17:02,220 --> 00:17:05,450 a alguns dels altres llengües que hem vist. 348 00:17:05,450 --> 00:17:07,980 Així que això realment funciona de la mateixa manera que es pot esperar. 349 00:17:07,980 --> 00:17:10,540 >> Puc córrer 2.swift. 350 00:17:10,540 --> 00:17:14,390 I veiem que el meu nom és en realitat empalmat a "Hola Dan." 351 00:17:14,390 --> 00:17:16,050 Acceptar, impressionant. 352 00:17:16,050 --> 00:17:17,485 Passant el número tres. 353 00:17:17,485 --> 00:17:19,359 Ara era una mica d'una mentida piadosa que jo 354 00:17:19,359 --> 00:17:23,369 va dir que la forma en què declarem les variables va ser utilitzar la paraula clau let. 355 00:17:23,369 --> 00:17:27,640 Com tantes vegades com li sigui possible de fer vulgui utilitzar deixar, perquè el que fa 356 00:17:27,640 --> 00:17:29,280 és que defineix una constant. 357 00:17:29,280 --> 00:17:33,010 I això diu ràpid que puguis optimitzar la velocitat de la seva aplicació 358 00:17:33,010 --> 00:17:36,230 perquè sap que aquest variable no canviarà. 359 00:17:36,230 --> 00:17:38,760 >> Així que avaluar acuradament quan vostè va a utilitzar 360 00:17:38,760 --> 00:17:41,382 una variable per al efectes de canviar-lo. 361 00:17:41,382 --> 00:17:43,340 I quan vas a crear una variable simplement 362 00:17:43,340 --> 00:17:47,010 per mantenir algunes dades i que és en realitat no canviarà. 363 00:17:47,010 --> 00:17:50,150 Així que aquest concepte d'immutabilitat, que no és en realitat canviarà, 364 00:17:50,150 --> 00:17:53,740 és important fins i tot quan baix com la definició de les variables. 365 00:17:53,740 --> 00:17:56,870 Així que aquí hem definit un nom, deixar nom, i en aquest cas 366 00:17:56,870 --> 00:18:02,120 És una constant, que és de tipus cadena, i és igual a Dan. 367 00:18:02,120 --> 00:18:05,580 >> Així que mentre que en l'anterior versió, infers-- i per "això" 368 00:18:05,580 --> 00:18:08,220 Em refereixo a ràpid swift-- s'infereix el tipus de dades 369 00:18:08,220 --> 00:18:10,850 que hem entrat en la variable. 370 00:18:10,850 --> 00:18:12,930 En aquest cas, podem estar explícit. 371 00:18:12,930 --> 00:18:17,590 Així que llavors el nom d'aquest variable és el nom, després dos punts. 372 00:18:17,590 --> 00:18:21,350 I després dels dos punts que fer especificar el tipus de dades. 373 00:18:21,350 --> 00:18:24,694 Així que ja no és int nom o nom de la cadena o alguna cosa per l'estil. 374 00:18:24,694 --> 00:18:26,860 Però en comptes de deixar etiqueta, estem definir si o no 375 00:18:26,860 --> 00:18:29,090 que és constant o variable, seguit pel nom, 376 00:18:29,090 --> 00:18:31,870 seguit pel tipus opcionalment. 377 00:18:31,870 --> 00:18:34,730 >> Així que en aquest cas estem definint aquest nom és una cadena. 378 00:18:34,730 --> 00:18:35,790 Estem dient és Dan. 379 00:18:35,790 --> 00:18:39,270 I ara tinc una altra variable, en aquest cas es diu etiqueta. 380 00:18:39,270 --> 00:18:42,090 Però noti que és prefix amb la paraula clau var. 381 00:18:42,090 --> 00:18:44,430 Els mitjans de la paraula clau var que aquesta variable pot 382 00:18:44,430 --> 00:18:48,720 canviar en un moment posterior a temps, en algun lloc en el codi 383 00:18:48,720 --> 00:18:52,480 podem realment canviar i no ens donarà cap error particular. 384 00:18:52,480 --> 00:18:56,760 >> Podem fer concatenació estàndard operador aquí amb el símbol més 385 00:18:56,760 --> 00:19:00,130 per afegir realment la nostra nom en aquesta cadena. 386 00:19:00,130 --> 00:19:02,921 I després podem imprimir com vam veure fa un moment. 387 00:19:02,921 --> 00:19:04,920 Ara diguem que vostè voler crear una variable 388 00:19:04,920 --> 00:19:06,586 però vostè no desitja inicialitzar encara. 389 00:19:06,586 --> 00:19:08,590 Vostè encara no vol posar totes les dades en el seu interior. 390 00:19:08,590 --> 00:19:11,760 Bé, vostè ha de dir-li ràpida el que el tipus de dades 391 00:19:11,760 --> 00:19:16,430 serà abans que puguis en realitat definir correctament. 392 00:19:16,430 --> 00:19:20,360 >> Així que en aquest cas, quan hem definit un grau variable anomenada hem de ser 393 00:19:20,360 --> 00:19:24,450 explícita sobre el seu tipus, perquè no es pot deduir simplement buscant 394 00:19:24,450 --> 00:19:27,300 en les dades inicialitzat que proporcioni a la mateixa. 395 00:19:27,300 --> 00:19:30,050 Ens donarà un error si es només grau var tipus, per exemple, 396 00:19:30,050 --> 00:19:31,830 perquè no té cap tipus, per tant. 397 00:19:31,830 --> 00:19:33,353 Així grau = 100. 398 00:19:33,353 --> 00:19:35,790 Així que 100 és un nombre sencer, es encaixa molt bé en això. 399 00:19:35,790 --> 00:19:36,998 Es seguirà funcionant. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Podem veure com llavors poden concatenar en aquest. 402 00:19:43,022 --> 00:19:44,730 Ara vostè pot ser temptat, si realment 403 00:19:44,730 --> 00:19:48,610 volgut per concatenar el grau en una altra cadena de text, 404 00:19:48,610 --> 00:19:52,560 en una altra cadena, que ho faria només utilitzar aquest mateix operador concatenació. 405 00:19:52,560 --> 00:19:54,630 I això seria normalment ser veritat. 406 00:19:54,630 --> 00:20:00,540 Però ràpid no li permetrà canviar implícita del tipus de dades. 407 00:20:00,540 --> 00:20:03,440 Així que en aquest cas, aquesta línia 25, es produirà un error 408 00:20:03,440 --> 00:20:06,650 perquè grau és una nombre sencer i no una cadena. 409 00:20:06,650 --> 00:20:08,760 I el que hi ha un desajust conjunt de tipus. 410 00:20:08,760 --> 00:20:11,780 Així que cal ser explícit quan voleu canviar aquestes dades, 411 00:20:11,780 --> 00:20:14,080 quan es vol forçar aquesta dades en un tipus diferent 412 00:20:14,080 --> 00:20:17,250 i dic bé, vull prendre aquest grau, que és un nombre enter, 413 00:20:17,250 --> 00:20:19,050 i convertir-lo en una cadena. 414 00:20:19,050 --> 00:20:23,970 >> Així que em prenc Cadena majúscula s tota la tipus, et donaràs compte, es capitalitzen, 415 00:20:23,970 --> 00:20:26,280 Int, Doble, String, així successivament i així successivament. 416 00:20:26,280 --> 00:20:28,930 Tots ells són capitalitzats només per fer les coses més fàcils. 417 00:20:28,930 --> 00:20:32,240 I direm capitalitzar Cadena passar-hi grau. 418 00:20:32,240 --> 00:20:35,020 I es crearà una cadena d'aquest sencer. 419 00:20:35,020 --> 00:20:37,970 I després podem concatenar els dos molt bé. 420 00:20:37,970 --> 00:20:40,500 Teniu preguntes sobre aquest assumpte fins al moment? 421 00:20:40,500 --> 00:20:43,770 Molt bé, anem a llaurar fins al número quatre. 422 00:20:43,770 --> 00:20:47,870 >> Ara anem a parlar sobre alguns més avançat estructures, com les matrius i bucles. 423 00:20:47,870 --> 00:20:54,920 I a diferència de C, les matrius en ràpida no estan representats per punters. 424 00:20:54,920 --> 00:20:58,730 Punters en ràpid, tot i que existeixen, anomenat 425 00:20:58,730 --> 00:21:02,840 com punters insegurs o algun tipus similar com això, 426 00:21:02,840 --> 00:21:04,950 que no estan exposats a que normalment. 427 00:21:04,950 --> 00:21:07,300 Així es fa molt difícil per manipular 428 00:21:07,300 --> 00:21:10,020 la memòria directament del seu ordinador. 429 00:21:10,020 --> 00:21:11,670 >> Així que les matrius són només un tipus de dades. 430 00:21:11,670 --> 00:21:16,830 I estan referenciats utilitzant aquest tipus notació d'ara estàndard claudàtor 431 00:21:16,830 --> 00:21:18,280 que has vist abans. 432 00:21:18,280 --> 00:21:21,130 Però quan vostè realment vol definir un tipus d'una variable 433 00:21:21,130 --> 00:21:24,330 com una matriu d'alguns tipus particular, llavors vostè 434 00:21:24,330 --> 00:21:27,150 posar aquest tipus entre claudàtors. 435 00:21:27,150 --> 00:21:30,260 Així que el que estic dient aquí és que Estic creant una variable anomenada 436 00:21:30,260 --> 00:21:33,930 graus de tipus int matriu. 437 00:21:33,930 --> 00:21:37,380 I estic establint que igual a algun dades inicialitzats, que en aquest cas 438 00:21:37,380 --> 00:21:42,960 és 100, 0, 90, 85, que es troba a col·lecció de graus arbitràries aquí. 439 00:21:42,960 --> 00:21:46,480 Ara bé, en aquest cas vaig poder, recordi, treure el tipus, 440 00:21:46,480 --> 00:21:49,580 i seria capaç d'inferir que basat en les dades inicialitzats. 441 00:21:49,580 --> 00:21:51,990 Però si em treu això i Que necessitava per posar-ho més tard, 442 00:21:51,990 --> 00:21:56,840 llavors jo hauria d'assegurar que tinc el tipus allà. 443 00:21:56,840 --> 00:21:58,750 Molt bé, anem a passar al llarg. 444 00:21:58,750 --> 00:22:03,010 Així que can-- arrays ens proporcioni una varietat 445 00:22:03,010 --> 00:22:07,130 de mètodes a través que la notació de punt en què són probablement ara familiaritzats. 446 00:22:07,130 --> 00:22:10,360 Així grades.count, per exemple, ens diu amb precisió el nombre 447 00:22:10,360 --> 00:22:13,680 d'elements que són continguda dins d'aquesta matriu. 448 00:22:13,680 --> 00:22:17,260 >> Si vull afegir additional-- ara adonar que aquesta és una var 449 00:22:17,260 --> 00:22:20,140 i no-- aquesta és una variable i no una constant, que 450 00:22:20,140 --> 00:22:24,410 vol dir que puc canviar el contingut d'aquesta matriu, puc afegir objectes a la mateixa. 451 00:22:24,410 --> 00:22:28,870 Però no puc dir simplement graus i després entre claudàtors 452 00:22:28,870 --> 00:22:33,280 4, perquè això serà un fora dels límits d'error en aquest cas. 453 00:22:33,280 --> 00:22:36,190 Si vull en realitat el canvi La mida d'aquest array, 454 00:22:36,190 --> 00:22:41,140 He de fer servir el mètode append punt per afegir alguna cosa en el final de la mateixa. 455 00:22:41,140 --> 00:22:46,900 Puc, però, el canvi índexs individuals. 456 00:22:46,900 --> 00:22:48,920 >> Així que podria utilitzar graus i els suports llavors quadrats 457 00:22:48,920 --> 00:22:52,480 zero a manipular aquesta primera índex i etc., igual que s'esperaria normalment. 458 00:22:52,480 --> 00:22:56,530 I puc fer el mateix per realment rebre les dades dels quals també. 459 00:22:56,530 --> 00:23:00,420 Ara també hi ha una mena de mètode de fantasia d'aquesta manera, els graus més iguals 460 00:23:00,420 --> 00:23:02,525 i després un altre índex, que append-- 461 00:23:02,525 --> 00:23:04,400 o no una altra index-- però una altra llista que 462 00:23:04,400 --> 00:23:07,340 s'adjuntarà aquesta llista a la part posterior dels graus. 463 00:23:07,340 --> 00:23:09,780 I els graus serà contindrà llavors tot això. 464 00:23:09,780 --> 00:23:13,850 Però això és una mena de cosa extra que jo només t'estic mostrant per diversió. 465 00:23:13,850 --> 00:23:14,910 >> Ara hi ha un bucle for. 466 00:23:14,910 --> 00:23:18,970 I aquest és el començament d'on les coses comencen a canviar una mica. 467 00:23:18,970 --> 00:23:22,920 Observeu com aquest cicle for és diferent dels bucles en C. 468 00:23:22,920 --> 00:23:26,470 Ara vaig a assenyalar que per bucles en Swift pot 469 00:23:26,470 --> 00:23:30,650 ser fet per semblar per bucles en C, però hi ha una gran quantitat de construccions més útils 470 00:23:30,650 --> 00:23:37,840 que essencialment eliminen la necessitat a tenir per var i és igual a 0 i punt i coma 471 00:23:37,840 --> 00:23:40,340 és menys de certa extensió, etc., etc., no? 472 00:23:40,340 --> 00:23:42,940 I aquesta construcció és només un d'ells. 473 00:23:42,940 --> 00:23:49,030 >> Pel índex, l'índex és nou variables, en aquest cas, en el rang. 474 00:23:49,030 --> 00:23:52,730 I el que estic dient és que hi ha un rang de 0 tot el camí fins 475 00:23:52,730 --> 00:23:55,870 però sense incloure grades.count. 476 00:23:55,870 --> 00:23:58,470 Així que aquest punt punt menys de signe representa 477 00:23:58,470 --> 00:24:05,040 un rang de valors a partir de zero tot el camí fins a grades.count almenys 1. 478 00:24:05,040 --> 00:24:07,070 Hi ha una separada operador que existeix, 479 00:24:07,070 --> 00:24:13,320 que és dot dot dot, que faria vull dir que vull que el rang de zero 480 00:24:13,320 --> 00:24:16,310 a comptar graus inclòs. 481 00:24:16,310 --> 00:24:19,130 >> Però en aquest cas, pel fet que aquests matrius són índex de zero, és clar 482 00:24:19,130 --> 00:24:23,290 no volen anar a la màxim nombre de graus. 483 00:24:23,290 --> 00:24:26,390 Puc resumir els graus, com pot ser que esperar, i la sortida de totes aquestes coses. 484 00:24:26,390 --> 00:24:29,620 Bé, de seguir endavant. 485 00:24:29,620 --> 00:24:32,270 Ara anem a parlar sobre les funcions. 486 00:24:32,270 --> 00:24:35,465 Per tal de definir una funció utilitza la paraula clau funk. 487 00:24:35,465 --> 00:24:38,090 I de nou, en Swift ha de tenir molta cura amb els tipus. 488 00:24:38,090 --> 00:24:41,530 Vostè proporcioni a que els paràmetres mitjançant la definició de, per exemple, 489 00:24:41,530 --> 00:24:45,440 el nom del paràmetre i Després, en confrontants, el tipus de dades 490 00:24:45,440 --> 00:24:47,690 que s'espera que paràmetre per acceptar. 491 00:24:47,690 --> 00:24:50,700 >> Així que en aquest cas tenim una funció anomenada recompte grau d'impressió. 492 00:24:50,700 --> 00:24:54,630 Accepta una variable anomenada llibre de qualificacions, o més aviat un paràmetre anomenat llibre de qualificacions. 493 00:24:54,630 --> 00:24:59,267 I estem esperant que del llibre de qualificacions ser una matriu d'enters. 494 00:24:59,267 --> 00:25:01,350 Si aquest llibre de qualificacions és buida, anem a imprimir una cosa. 495 00:25:01,350 --> 00:25:06,090 En cas contrari, anem a imprimir el nombre dels graus que això té en realitat. 496 00:25:06,090 --> 00:25:09,470 >> Ara bé, si volem tornar algun valor, llavors la manera 497 00:25:09,470 --> 00:25:14,595 que modifiquem aquesta definició és utilitzar realment aquesta paraula clau fletxa, 498 00:25:14,595 --> 00:25:16,870 o per utilitzar aquesta fletxa significant. 499 00:25:16,870 --> 00:25:19,440 Així que aquí definirem una funció anomenada mitjana. 500 00:25:19,440 --> 00:25:21,940 Anem a acceptar una llista de nombres. 501 00:25:21,940 --> 00:25:25,430 I tornarem a doble, que s'espera que 502 00:25:25,430 --> 00:25:31,270 la mitjana d'aquesta matriu. 503 00:25:31,270 --> 00:25:34,570 I per fer això, per tal per al càlcul d'aquesta mitjana en realitat, 504 00:25:34,570 --> 00:25:38,651 anem a fer una suma i li doni Per descomptat resumir tots els objectes 505 00:25:38,651 --> 00:25:39,400 dins d'aquesta matriu. 506 00:25:39,400 --> 00:25:41,480 >> Observeu que hi ha una nova estil de bucle for aquí. 507 00:25:41,480 --> 00:25:45,450 No hem de ser explícit sobre iterar sobre cada element, 508 00:25:45,450 --> 00:25:48,280 però en comptes d'això podem dir amb grau i del llibre de qualificacions, significat 509 00:25:48,280 --> 00:25:50,930 que per a cada element que tenim en aquest, 510 00:25:50,930 --> 00:25:53,482 disposar que en aquest tema anomenat de grau variable. 511 00:25:53,482 --> 00:25:54,940 I vull fer alguna cosa amb ell. 512 00:25:54,940 --> 00:26:00,350 Així que vaig a resumir totes aquestes dades i en realitat tornar el doble divisió. 513 00:26:00,350 --> 00:26:04,436 >> Ara noti de nou aquí hi ha el concepte de divisió d'enters a Swift. 514 00:26:04,436 --> 00:26:06,810 Si voleu duplicar divisió perquè vols decimals, 515 00:26:06,810 --> 00:26:09,460 llavors vostè ha de ser explícit, no només d'una banda, 516 00:26:09,460 --> 00:26:14,030 perquè no permetrà que vostè per obligar a les dades a banda i banda d'aquest, 517 00:26:14,030 --> 00:26:17,030 vostè ha de realment curs ambdues parts en dobles 518 00:26:17,030 --> 00:26:19,440 pel que vostè és molt explícita sobre d'assegurar 519 00:26:19,440 --> 00:26:23,370 que estàs fent doble divisió. 520 00:26:23,370 --> 00:26:26,150 >> Anem a passar. 521 00:26:26,150 --> 00:26:31,150 Així que si jo realment vull accept-- pel que en aquest exemple particular, 522 00:26:31,150 --> 00:26:34,260 això és encara una ordre aplicació basada en línia. 523 00:26:34,260 --> 00:26:37,920 I estem començant a veure alguns les limitacions de la llengua jove 524 00:26:37,920 --> 00:26:41,850 en que tot i el que puguem accedir als arguments mitjançant l'ús de 525 00:26:41,850 --> 00:26:44,940 aquesta process.arguments, és Encara no necessàriament el més net 526 00:26:44,940 --> 00:26:46,200 El que hem vist mai. 527 00:26:46,200 --> 00:26:49,142 Però, bàsicament, us animo mirar espècie d'aquest codi 528 00:26:49,142 --> 00:26:51,100 i tractar d'esbrinar què és exactament el que està passant. 529 00:26:51,100 --> 00:26:55,030 >> En essència el que està succeint és que estem tenint una llista d'arguments 530 00:26:55,030 --> 00:26:57,610 i van ser coaccionant a sencers, i llavors estem 531 00:26:57,610 --> 00:27:03,620 va a utilitzar això com una manera d'imprimir la mitjana de tots els graus. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Canviant de tema. 534 00:27:07,350 --> 00:27:11,190 Ara hi ha un altre tipus de data-- un altre tipus de dades en lloc d'arrays 535 00:27:11,190 --> 00:27:14,940 anomenats diccionaris, que són molt a hashish, taules o mapes de hash 536 00:27:14,940 --> 00:27:18,560 i són similars també Matrius associatives de PHP. 537 00:27:18,560 --> 00:27:20,770 Així que tenen la noció de claus i valors. 538 00:27:20,770 --> 00:27:23,780 >> I estan definits també amb aquesta notació de claudàtors, 539 00:27:23,780 --> 00:27:26,750 però la diferència és que els diccionaris tenen 540 00:27:26,750 --> 00:27:29,370 dins els claudàtors, dos punts. 541 00:27:29,370 --> 00:27:33,850 I el còlon separa les dades escrigui aquesta és la clau i el valor. 542 00:27:33,850 --> 00:27:38,540 Així que en aquest cas, jo vaig a crear un diccionari per acceptar alguns graus. 543 00:27:38,540 --> 00:27:44,200 I serà del tipus de cadena: int, 544 00:27:44,200 --> 00:27:46,940 el que significa que la totalitat de la claus seran cadenes, 545 00:27:46,940 --> 00:27:53,080 i tots els valors d'aquells claus seran sencers. 546 00:27:53,080 --> 00:27:55,780 >> El que això significa és que puc després fer referència a les dades específiques 547 00:27:55,780 --> 00:28:00,490 que vull usar aquestes tecles en lloc que l'ús d'índexs numèrics com jo 548 00:28:00,490 --> 00:28:04,350 tindria per una matriu estàndard. 549 00:28:04,350 --> 00:28:06,470 Ara anem a veure, hi ha una cosa important 550 00:28:06,470 --> 00:28:10,790 que també vull esmentar sobre aquesta seqüència particular de codi. 551 00:28:10,790 --> 00:28:12,910 I és que hi ha un altre tipus de dades, 552 00:28:12,910 --> 00:28:15,580 o més aviat hi ha aquesta idea de dades que és 553 00:28:15,580 --> 00:28:18,340 continguda dins de Swift diu opcionals. 554 00:28:18,340 --> 00:28:21,270 >> I el que significa és opcionals que reconeix el fet 555 00:28:21,270 --> 00:28:27,500 que de vegades un no va a obtenir les dades que realment esperes. 556 00:28:27,500 --> 00:28:31,400 I així el que vull dir amb això és-- anem fer una ullada a aquesta seqüència de codi 557 00:28:31,400 --> 00:28:38,910 que itera sobre tota la arguments que s'han passat a aquest codi 558 00:28:38,910 --> 00:28:43,460 i tracta de convertir-los, tries a dividir-se en una varietat de cadenes, 559 00:28:43,460 --> 00:28:47,310 perquè accepta una molt en particular el tipus d'argument. 560 00:28:47,310 --> 00:28:51,530 I després es va a tractar de coaccionar les cadenes que representen nombres 561 00:28:51,530 --> 00:28:55,460 en sencers que són graus, que llavors puc calcular. 562 00:28:55,460 --> 00:28:58,230 >> Així que, bàsicament vaig a utilitzar aquesta funció de divisió que 563 00:28:58,230 --> 00:29:00,080 existeix dins del Biblioteca estàndard Swift. 564 00:29:00,080 --> 00:29:03,720 Vaig a passar-hi la cadena que vull dividir. 565 00:29:03,720 --> 00:29:06,980 I després, en l'ús d'aquest espècie de sintaxi covard, que 566 00:29:06,980 --> 00:29:09,670 No sé si anem a aconseguim, però potser, ens 567 00:29:09,670 --> 00:29:14,320 en realitat especificar la precisió personatge que volem dividir. 568 00:29:14,320 --> 00:29:16,030 Què això realment sembla? 569 00:29:16,030 --> 00:29:18,740 Fem una ullada a realment executar aquest codi. 570 00:29:18,740 --> 00:29:22,000 >> Així, per exemple, direm que tinc un concurs i em van donar 50 en això. 571 00:29:22,000 --> 00:29:23,960 I tinc un conjunts de processadors i Tinc un centenar en això. 572 00:29:23,960 --> 00:29:29,180 I jo got-- hi ha una altra concurs i em van donar un 40 sobre això. 573 00:29:29,180 --> 00:29:33,520 Vaig colpejar Enter, i, finalment, el que passarà és que el que està fent 574 00:29:33,520 --> 00:29:37,730 s'està duent a aquests paràmetres, la divisió les cordes en aquests dos punts, 575 00:29:37,730 --> 00:29:41,390 reconeixent que hi ha dos elements en cada un, 576 00:29:41,390 --> 00:29:43,700 i és essencialment fer el seguiment de cada un. 577 00:29:43,700 --> 00:29:49,226 >> Així que tinc en el meu diccionari un concurs, el valor es representa pel nombre 50, 578 00:29:49,226 --> 00:29:54,290 Tinc un PSET que té un valor de 100, i una prova que té un valor de 40. 579 00:29:54,290 --> 00:29:57,400 Després, més tard en el codi I en realitat la mitjana tots aquests valors 580 00:29:57,400 --> 00:30:01,160 i una llista de totes les tecles de que diccionari particular. 581 00:30:01,160 --> 00:30:03,217 Però això és important de manera que vostè pot notar 582 00:30:03,217 --> 00:30:06,050 el que està succeint, és que el que voler fer és prendre aquesta cadena 583 00:30:06,050 --> 00:30:11,450 i dividir-lo en aquest caràcter, que podem fer de nou amb aquesta divisió 584 00:30:11,450 --> 00:30:15,690 funció utilitzant aquest tipus de interessant sintaxi que existeix aquí. 585 00:30:15,690 --> 00:30:17,880 >> Només per ara assumeixen que això està bé. 586 00:30:17,880 --> 00:30:19,980 Veurem més en aquest en tan sols una mica de temps. 587 00:30:19,980 --> 00:30:23,230 Però ara hi ha una interessant aspecte que en realitat 588 00:30:23,230 --> 00:30:27,250 intentar convertir aquest cadena en un enter. 589 00:30:27,250 --> 00:30:29,720 Però en altres idiomes el que podria succeir és 590 00:30:29,720 --> 00:30:33,440 que probablement provaria fer-ho i, o bé tornar 591 00:30:33,440 --> 00:30:36,185 una mena de sentinella valor com un negatiu 592 00:30:36,185 --> 00:30:39,420 o potser un nul o alguna cosa per l'estil. 593 00:30:39,420 --> 00:30:41,070 O potser seria just provocat un error. 594 00:30:41,070 --> 00:30:42,820 I hauríem de després agafar aquest error 595 00:30:42,820 --> 00:30:44,820 i després tractar de fer alguna cosa basat en el fet 596 00:30:44,820 --> 00:30:48,280 que aquesta conversió a un enter fallat. 597 00:30:48,280 --> 00:30:50,460 Aquí és on aquesta idea d'opcionals ve en. 598 00:30:50,460 --> 00:30:56,120 En realitat es pot crear un tipus de dades és un signe d'interrogació int, per exemple. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Això significa que aquest sencer és, de fet, opcional. 601 00:31:01,910 --> 00:31:05,980 ¿I què passarà és que es pot contenir un nombre enter, o potser no. 602 00:31:05,980 --> 00:31:10,650 Es pot, de fet, ser aquest altre idea, totalment diu nul·la. 603 00:31:10,650 --> 00:31:14,900 Pel que això vol dir que hi ha cap valor en aquest. 604 00:31:14,900 --> 00:31:16,810 Ni tan sols és zero, simplement no hi ha valor. 605 00:31:16,810 --> 00:31:18,790 No hi ha absolutament cap valor representat. 606 00:31:18,790 --> 00:31:21,650 >> I això és el que aquesta línia 71 està fent. 607 00:31:21,650 --> 00:31:25,990 És que s'està dient que jo desitgi per intentar establir un valor, 608 00:31:25,990 --> 00:31:31,790 una variable anomenada grau, igual a la conversió d'aquesta cadena en un enter. 609 00:31:31,790 --> 00:31:34,010 Així que m'he pres aquesta cadena, aquesta primera components, 610 00:31:34,010 --> 00:31:37,680 o més bé la segona components, perquè aquest 611 00:31:37,680 --> 00:31:40,770 s'indexa zero, d'aquesta cadena que he dividit. 612 00:31:40,770 --> 00:31:42,930 I vull convertir que a un sencer. 613 00:31:42,930 --> 00:31:46,730 Però no sempre pot procedir normalment, perquè imaginar 614 00:31:46,730 --> 00:31:50,710 ¿Què passaria si, en lloc d'escriure un nombre, que el tipus de curs com asdf. 615 00:31:50,710 --> 00:31:51,534 >> Es va a fallar. 616 00:31:51,534 --> 00:31:54,200 No és en realitat serà capaç de convertir un enter que 617 00:31:54,200 --> 00:31:55,510 com m'esperava. 618 00:31:55,510 --> 00:31:58,660 Així que en lloc de expulsar fora algun tipus d'error, 619 00:31:58,660 --> 00:32:01,210 tenim aquesta idea d'una opcional. 620 00:32:01,210 --> 00:32:04,240 I això vol dir que l'ús de aquest signe d'interrogació el que puc dir, 621 00:32:04,240 --> 00:32:09,100 Bé, és possible que jo pugui prendre això, es converteix en un int, 622 00:32:09,100 --> 00:32:12,630 i el va posar en una variable, que també serà un int. 623 00:32:12,630 --> 00:32:15,420 Si és així, que els mitjans que aquest va ser un èxit 624 00:32:15,420 --> 00:32:18,720 i aquesta primera part de el bloc pot continuar. 625 00:32:18,720 --> 00:32:21,040 >> En cas contrari, no. 626 00:32:21,040 --> 00:32:25,840 No hi ha valor en grade-- o més aviat no hi ha cap valor en existent, 627 00:32:25,840 --> 00:32:30,220 i jo en realitat he de tractar de gestionar aquesta condició d'error. 628 00:32:30,220 --> 00:32:33,340 Vostè va a veure això signe d'interrogació tot el temps 629 00:32:33,340 --> 00:32:35,990 en Swift i en l'exemple de codi per Swift. 630 00:32:35,990 --> 00:32:40,980 I de fet, l'operador nill, aquest tipus de signe d'interrogació, la part opcionals, 631 00:32:40,980 --> 00:32:45,057 serà probablement un de les coses més difícils 632 00:32:45,057 --> 00:32:47,640 per embolicar espècie del seu cap al voltant com en realitat es treballa amb ell. 633 00:32:47,640 --> 00:32:48,490 >> Podria tenir sentit ara. 634 00:32:48,490 --> 00:32:50,760 I de fet, quan jo era escriure codi d'exemple per això, 635 00:32:50,760 --> 00:32:52,780 certament vaig entendre el que estava passant, 636 00:32:52,780 --> 00:32:55,570 però tot i així em va agafar per sorpresa de tant en tant 637 00:32:55,570 --> 00:32:58,370 quan m'anava a trobar que algunes dades eren en realitat 638 00:32:58,370 --> 00:33:04,024 una versió zero, una versió opcional de les dades que jo esperava. 639 00:33:04,024 --> 00:33:06,190 Així que adonar-se que si tenir una versió opcional 640 00:33:06,190 --> 00:33:09,360 has de desempaquetar que les dades d'aquest quadre. 641 00:33:09,360 --> 00:33:15,870 >> Així que és una cosa així com jo-- imaginen si tenir una caixa i conté alguna cosa. 642 00:33:15,870 --> 00:33:18,490 I el que cal fer és fer la pregunta, 643 00:33:18,490 --> 00:33:22,800 és possible que aquest quadre de realitat conté les dades que estic buscant? 644 00:33:22,800 --> 00:33:28,180 Si és així, a continuació, tiri cap a fora que les dades i posar-ho en aquesta variable existent. 645 00:33:28,180 --> 00:33:32,080 Si no, llavors només he de no tenir en compte el contingut d'aquesta caixa de 646 00:33:32,080 --> 00:33:34,310 complet, ja que literalment no conté res. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Per a qualsevol dubte sobre això? 649 00:33:40,400 --> 00:33:44,430 OK, anem a passar lluny d'aquesta tipus de coses basat en la línia d'ordres 650 00:33:44,430 --> 00:33:47,610 i començar a buscar a part de la tecnologia 651 00:33:47,610 --> 00:33:53,060 que Xcode ofereix a nosaltres en forma de parcs infantils. 652 00:33:53,060 --> 00:33:56,669 Així que hi ha una gran quantitat de capacitat d'aquí amb Swift. 653 00:33:56,669 --> 00:33:59,210 I si vostè obre Xcode i li pregunta el que vols fer, 654 00:33:59,210 --> 00:34:01,340 vostè pot obrir el pati d'esbarjo i simplement jugar 655 00:34:01,340 --> 00:34:06,200 amb un munt de diferents estructures i aspectes de la llengua 656 00:34:06,200 --> 00:34:11,800 fins i tot abans de començar tocant el SDK de iOS o Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Així que aquest cas, diguem que em tener-- Tinc un exemple relativament artificial 658 00:34:15,670 --> 00:34:18,460 aquí, però tinguin paciència amb mi mentre espècie de treballar a través d'aquest exemple. 659 00:34:18,460 --> 00:34:22,639 Diguem que hem de fer molt d'exponents amb un valor fix, 660 00:34:22,639 --> 00:34:26,397 com sabem que haurem de fer un munt de poders quadrats, per exemple. 661 00:34:26,397 --> 00:34:28,980 Així que anem a portar el seu valor x, anem a la plaça que, 662 00:34:28,980 --> 00:34:30,540 anem a portar el seu valor i, i anem a quadrar ella. 663 00:34:30,540 --> 00:34:31,780 Així successivament i així successivament. 664 00:34:31,780 --> 00:34:35,549 >> Ara podríem en realitat només crear un potència de 2 funció d'això, oi? 665 00:34:35,549 --> 00:34:37,090 Així que crearíem una potència de 2 funció. 666 00:34:37,090 --> 00:34:38,600 Acceptarem un doble. 667 00:34:38,600 --> 00:34:41,489 Anem a output-- o anem a retornar un tipus doble. 668 00:34:41,489 --> 00:34:46,159 Prendrem aquest resultat i després per dues vegades 669 00:34:46,159 --> 00:34:52,040 el que en realitat prenem els resultats, que va ser la inicialitzat amb el valor d'un, 670 00:34:52,040 --> 00:34:53,090 i es multiplica per x. 671 00:34:53,090 --> 00:34:56,540 Així que, en essència, tenim x vegades x aquí. 672 00:34:56,540 --> 00:35:01,860 >> I així llavors pot llavors, com podríem esperar, pren això, poder executar de 2, 673 00:35:01,860 --> 00:35:03,680 proporcionar a ella algunes dades, m'agrada 2.0. 674 00:35:03,680 --> 00:35:05,756 I anem a veure els resultats aquí 4.0. 675 00:35:05,756 --> 00:35:09,200 Executeu potència de 2 a 3.2 i arribar a veure el nostre resultat, 10,24. 676 00:35:09,200 --> 00:35:10,840 Fins aquí tot bé, no? 677 00:35:10,840 --> 00:35:12,070 Ara estem pensant, bé, OK. 678 00:35:12,070 --> 00:35:15,530 Ara jo realment necessito fer un munt de poders de 3. 679 00:35:15,530 --> 00:35:19,180 Així que vaig a copiar enganxar tot aquest codi, canviar el nom de la funció de 680 00:35:19,180 --> 00:35:24,440 potència de 2 a potència de 3, i tot serà el mateix a excepció d'aquest valor 681 00:35:24,440 --> 00:35:26,740 aquí, d'aquest rang, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Així que en comptes de repetir aquest bucle dues vegades, 683 00:35:29,590 --> 00:35:31,880 Vull repetir aquest cicle tres vegades. 684 00:35:31,880 --> 00:35:36,330 Així que acabo de canviar aquest valor de 1 a 3-- o més aviat 2-3. 685 00:35:36,330 --> 00:35:39,230 Així que de nou, el mateix codi, aquest és l'únic canvi. 686 00:35:39,230 --> 00:35:40,080 Ara bé, això també funciona. 687 00:35:40,080 --> 00:35:43,860 Poder de 3 proveït d'algun valor de 2. 688 00:35:43,860 --> 00:35:44,420 Tenim 8. 689 00:35:44,420 --> 00:35:45,370 Així 2 cubs. 690 00:35:45,370 --> 00:35:48,060 I 3,2 cubs és 32.768. 691 00:35:48,060 --> 00:35:50,597 I fins ara tan bo, oi? 692 00:35:50,597 --> 00:35:52,930 Però esperem que això és una mica mica d'una bandera vermella per a vostè 693 00:35:52,930 --> 00:35:55,530 que ara tenim certa duplicació de codi 694 00:35:55,530 --> 00:35:58,800 a excepció d'alguns molt menor canviar d'una a la següent. 695 00:35:58,800 --> 00:36:02,170 Llavors, hi ha alguna manera que podríem ser capaços de simplificar 696 00:36:02,170 --> 00:36:06,080 aquest problema, en el que puguem en realitat, en temps d'execució, esbrinar alguns, 697 00:36:06,080 --> 00:36:11,320 ens proporcioni alguna funció que té precisament el poder de la qual volem. 698 00:36:11,320 --> 00:36:13,960 >> I hi ha aquesta idea de tancaments, que és molt, molt 699 00:36:13,960 --> 00:36:18,180 important en el context de Swift, i en molts altres idiomes. 700 00:36:18,180 --> 00:36:21,580 Però probablement veurà s'utilitza més en Swift 701 00:36:21,580 --> 00:36:23,650 perquè està incrustat dins de la llengua 702 00:36:23,650 --> 00:36:28,280 del que serà en una altra també les llengües modernes. 703 00:36:28,280 --> 00:36:31,140 Així que la idea d'un tancament és això, és que tenim 704 00:36:31,140 --> 00:36:35,430 pot tenir una funció que es pretén ser una funció genèrica, un poder genèric 705 00:36:35,430 --> 00:36:36,860 de la funció. 706 00:36:36,860 --> 00:36:41,010 >> I aquesta funció va a acceptar aquest exponent que en realitat 707 00:36:41,010 --> 00:36:42,990 que vulgueu crear. 708 00:36:42,990 --> 00:36:46,550 Així, per exemple, la primera instància, volíem una potència de 2. 709 00:36:46,550 --> 00:36:50,050 Així que ens proporcionarà el poder de i després en parèntesi 2. 710 00:36:50,050 --> 00:36:52,490 I ara el que compta això en realitat retorna. 711 00:36:52,490 --> 00:36:57,680 Aquest pren una entrada d'un encebador trucada i que és un nombre enter, 712 00:36:57,680 --> 00:37:03,090 i retorna aquesta boig buscant El parèntesi parentheses-- 713 00:37:03,090 --> 00:37:06,230 doble i després fletxa doble. 714 00:37:06,230 --> 00:37:10,270 >> El que això significa és que sóc va a tornar una funció. 715 00:37:10,270 --> 00:37:13,510 No vaig a tornar un altre tipus de dades, estic 716 00:37:13,510 --> 00:37:16,350 De fet torna una funció que té aquest paràmetre, que 717 00:37:16,350 --> 00:37:22,680 accepta un doble com a entrada i emet una doble com a valor de retorn. 718 00:37:22,680 --> 00:37:29,750 I com a resultat, perquè ara he anomenat poder de, passant en algun valor per i, 719 00:37:29,750 --> 00:37:32,280 i estic creant aquest altre avís function-- que hi ha 720 00:37:32,280 --> 00:37:35,980 Una altra funció que s'està creant dins això- el que estic fent 721 00:37:35,980 --> 00:37:37,830 és que em llavors puc canviar aquest valor, que un 722 00:37:37,830 --> 00:37:41,010 valor que jo havia canviat 2-3, ara em faig i. 723 00:37:41,010 --> 00:37:42,500 >> I això persisteix. 724 00:37:42,500 --> 00:37:48,530 Així que cada vegada que jo anomeno el poder de, essencialment el que passa 725 00:37:48,530 --> 00:37:51,030 és que puc tornar una funció. 726 00:37:51,030 --> 00:37:54,310 Noteu que aquí he definit una nova variable anomenada plaça. 727 00:37:54,310 --> 00:37:59,340 Ho he instal·lat igual a la força de, sempre que aquesta 2 al poder de. 728 00:37:59,340 --> 00:38:02,030 I el que això retorna és la funció. 729 00:38:02,030 --> 00:38:05,970 Així quadrat, la variable quadrat, que és ara de funció de tipus 730 00:38:05,970 --> 00:38:11,390 que té esto-- Ui, desplaceu-vos fins a un poc bit-- que té aquesta firma, 731 00:38:11,390 --> 00:38:15,560 acceptar una doble i una doble sortida. 732 00:38:15,560 --> 00:38:17,330 >> Així que ara el que he fet és que he essencialment 733 00:38:17,330 --> 00:38:22,890 creat una plaça funció trucada que accepta qualsevol valor i s'enfrontaran ella. 734 00:38:22,890 --> 00:38:24,960 Podem veure el que passa aquí. 735 00:38:24,960 --> 00:38:29,960 Plaza 3, per exemple, vol dir que vaig prendre el valor 3 i quadrat ella. 736 00:38:29,960 --> 00:38:32,010 Llavors, com ho fa exactament aquesta feina? 737 00:38:32,010 --> 00:38:37,800 Quan pas el poder de 2-- quan passar 2 en aquest poder de la funció, 738 00:38:37,800 --> 00:38:44,430 aquesta variable i és poblada amb aquest valor 2. 739 00:38:44,430 --> 00:38:46,340 I això és una espècie de lloc en la memòria. 740 00:38:46,340 --> 00:38:49,430 Això és una cosa així com lloc a estat en algun lloc en l'equip, 741 00:38:49,430 --> 00:38:51,980 realment no importa com o on en aquest punt. 742 00:38:51,980 --> 00:38:54,692 >> Però torno a aquesta funció anomenat exponenciar. 743 00:38:54,692 --> 00:38:57,400 I de nou, no importa realment el que aquesta funció es diu, 744 00:38:57,400 --> 00:39:01,730 realment podem anomenar alguna cosa, que accepta un doble i retorna un doble, 745 00:39:01,730 --> 00:39:05,640 però utilitza aquest valor i dins d'ella. 746 00:39:05,640 --> 00:39:09,290 Així que tot i ser aquesta funció, aquesta funció exponentiater que és 747 00:39:09,290 --> 00:39:13,600 ha tornat de nou a la meva variable que vaig trucar a la plaça, 748 00:39:13,600 --> 00:39:17,980 ha contingut dins d'ella aquesta noció del que era i. 749 00:39:17,980 --> 00:39:19,070 I recorda que. 750 00:39:19,070 --> 00:39:24,810 >> Així que cada vegada que cridar a aquesta funció que ara es diu quadrat, utilitza això. 751 00:39:24,810 --> 00:39:27,990 Però això també significa que puc crear una altra variable utilitzant 752 00:39:27,990 --> 00:39:29,120 un poder diferent de. 753 00:39:29,120 --> 00:39:33,240 Així que puc crear una variable de cub, per exemple, proporcionar a la mateixa potència de 3. 754 00:39:33,240 --> 00:39:37,230 Ara cub realment portar el seu valor i el cub que i el torna. 755 00:39:37,230 --> 00:39:39,570 Així podem veure que obtinc un valor de 8 d'això. 756 00:39:39,570 --> 00:39:42,720 >> Però aquest valor i no té canviat perquè són 757 00:39:42,720 --> 00:39:44,980 celebrada en espècie de les variables independents. 758 00:39:44,980 --> 00:39:47,480 Són una espècie de lloc en espais independents a la memòria. 759 00:39:47,480 --> 00:39:51,290 Així cub tindrà sempre xa la potència de 3. 760 00:39:51,290 --> 00:39:55,380 I la plaça tindrà sempre x a la potència de 2, que 761 00:39:55,380 --> 00:39:58,470 significa que la plaça serà sempre nombres quadrats, com espero. 762 00:39:58,470 --> 00:40:01,794 I cub sempre en cubs nombres, ja que esperen. 763 00:40:01,794 --> 00:40:04,960 Això vol dir també que de vegades es pot obtenir algun tipus de sintaxi funky cerca 764 00:40:04,960 --> 00:40:09,030 on vostè té el poder de manera part inferior de la pantalla d'aquí, el poder de 5. 765 00:40:09,030 --> 00:40:11,410 I es passa en el resultat. 766 00:40:11,410 --> 00:40:14,670 Vostè crida a aquesta funció que és estat retornat amb el número 4. 767 00:40:14,670 --> 00:40:17,440 I així, el que en essència aquesta és 4 a la cinquena potència, 768 00:40:17,440 --> 00:40:20,830 podem veure els resultats allà. 769 00:40:20,830 --> 00:40:23,690 Amb mi fins ara? 770 00:40:23,690 --> 00:40:26,620 >> Així que aquesta idea es diu un tancament, perquè el que estem fent bàsicament 771 00:40:26,620 --> 00:40:30,610 és que estem encapsulant algunes dades into-- espècie 772 00:40:30,610 --> 00:40:33,050 de tancar aquestes dades en una funció i estem 773 00:40:33,050 --> 00:40:36,240 ser capaç de tornar a utilitzar aquesta funció. 774 00:40:36,240 --> 00:40:41,480 Ara aquesta sintaxi encara que en realitat pot simplificar una gran quantitat. 775 00:40:41,480 --> 00:40:45,005 I hi ha un munt de possibilitats en Swift per aquesta simplificació. 776 00:40:45,005 --> 00:40:47,780 I això és quina classe de la les subsegüents realment miren. 777 00:40:47,780 --> 00:40:51,400 Així que en 7b per exemple, ens prendre aquest mateix codi. 778 00:40:51,400 --> 00:40:54,360 >> Però ara en lloc de en realitat definir una funció 779 00:40:54,360 --> 00:40:57,910 dins d'aquest poder de funcionar i donar-li un nom, 780 00:40:57,910 --> 00:41:00,150 i després tornar el nom d'aquesta funció, la qual 781 00:41:00,150 --> 00:41:02,357 a continuació, s'utilitza com a part de aquest tancament, en lloc estem 782 00:41:02,357 --> 00:41:03,440 només va a simplificar. 783 00:41:03,440 --> 00:41:06,580 No necessitem aquesta funció per ser nomenat. 784 00:41:06,580 --> 00:41:09,760 Així que aquest és el concepte d'un funció anònima on podem després 785 00:41:09,760 --> 00:41:15,180 acceptar com a entrada, entre parèntesis aquí, la variable x que és de tipus doble. 786 00:41:15,180 --> 00:41:17,250 >> Anem a tornar el doble tipus. 787 00:41:17,250 --> 00:41:19,830 I després la paraula clau, n, és el començament d'aquesta funció. 788 00:41:19,830 --> 00:41:22,180 Així que adonar-se que tot això és entre claus 789 00:41:22,180 --> 00:41:25,310 i estem definint un anònim funciona aquí. 790 00:41:25,310 --> 00:41:29,910 Tot just una manera simple de definir exactament el mateix. 791 00:41:29,910 --> 00:41:30,810 D'acord? 792 00:41:30,810 --> 00:41:36,740 Però espera, Swift en realitat ens permet anar més enllà i simplificar encara més, 793 00:41:36,740 --> 00:41:40,180 perquè realment no ho fem importa que aquest paràmetre és 794 00:41:40,180 --> 00:41:41,700 anomenat qualsevol cosa en particular. 795 00:41:41,700 --> 00:41:48,090 Realment es pot trucar qualsevol cosa i encara podem usar aquest primer paràmetre. 796 00:41:48,090 --> 00:41:53,800 >> Així que en realitat no és aquest especial tipus de dades en funcions anònimes, 797 00:41:53,800 --> 00:41:57,710 hi ha aquest nom especial de variables en funcions anònimes 798 00:41:57,710 --> 00:42:00,280 que inicio amb la signe de dòlar i representen 799 00:42:00,280 --> 00:42:03,785 els números de paràmetres, zero indexat, per aquesta funció. 800 00:42:03,785 --> 00:42:05,410 Així que hi ha un parell de coses que succeeixen. 801 00:42:05,410 --> 00:42:08,550 Aquí em vaig a tornar, i després un claudàtor representa una funció, 802 00:42:08,550 --> 00:42:09,050 Oi? 803 00:42:09,050 --> 00:42:13,920 >> Tingueu en compte que jo no he definit el tipus de paràmetres o el tipus de retorn. 804 00:42:13,920 --> 00:42:16,460 En realitat, pot inferir perquè de la signatura 805 00:42:16,460 --> 00:42:18,360 d'aquesta funció original. 806 00:42:18,360 --> 00:42:20,500 Així podem eliminar que com una possibilitat. 807 00:42:20,500 --> 00:42:25,120 Però també puc utilitzar el signe de dòlar a zero representar aquesta primera paràmetre que és 808 00:42:25,120 --> 00:42:28,200 passat a aquesta funció anònima. 809 00:42:28,200 --> 00:42:31,630 Així que simplificar encara més. 810 00:42:31,630 --> 00:42:32,750 D'acord? 811 00:42:32,750 --> 00:42:33,820 Fins ara, tot bé? 812 00:42:33,820 --> 00:42:36,980 >> Ara és aquest type-- fer recordar aquest signe de dòlar zero 813 00:42:36,980 --> 00:42:40,130 que vam veure en aquesta clau de que vam veure una estoneta 814 00:42:40,130 --> 00:42:43,870 Fa en aquest Swift 06:00 exemple? 815 00:42:43,870 --> 00:42:46,560 Va ser just aquí. 816 00:42:46,560 --> 00:42:48,430 Noti que és exactament el que estem veient, 817 00:42:48,430 --> 00:42:51,580 és que hem passat en aquesta funció de divisió 818 00:42:51,580 --> 00:42:55,140 una funció anònima que comprova el primer paràmetre 819 00:42:55,140 --> 00:42:57,830 per veure si és igual a el símbol de còlon. 820 00:42:57,830 --> 00:42:59,830 I això és exactament el que és passant, és que tots 821 00:42:59,830 --> 00:43:02,320 estem doing-- el retorn paraula clau està implícita 822 00:43:02,320 --> 00:43:05,800 en aquest cas-- que estem tornant aquest valor en el qual estem comparant 823 00:43:05,800 --> 00:43:10,020 el primer paràmetre contra aquest caràcter de còlon. 824 00:43:10,020 --> 00:43:11,730 I així, aquest tipus de desmitifica això. 825 00:43:11,730 --> 00:43:17,210 I vas a veure aquesta construcció molt en la sintaxi Swift, també ho fan mantenir aquesta 826 00:43:17,210 --> 00:43:19,400 en ment quan estàs fer una ullada a això. 827 00:43:19,400 --> 00:43:21,970 Ara podem baixar els carrils una mica 828 00:43:21,970 --> 00:43:25,460 i anar realment de luxe que mostra fins i tot una mica més de poder de Swift. 829 00:43:25,460 --> 00:43:27,950 Vostè podria fins i tot veure alguns d'aquests en els codis de mostra. 830 00:43:27,950 --> 00:43:29,790 Així que per això em vaig per mostrar això. 831 00:43:29,790 --> 00:43:37,260 >> Bàsicament el que podem fer és que, en primer lloc de tot, que era una espècie de sobres per a mi 832 00:43:37,260 --> 00:43:41,710 per posar en pràctica tot aquest poder de codi perquè si importa Darwin 833 00:43:41,710 --> 00:43:46,490 biblioteca, que en realitat inclou una funció de anomenat pow que ho fa per vostè. 834 00:43:46,490 --> 00:43:50,570 Així que podem simplificar encara més i tenim la nostra funció de potència fins ara només 835 00:43:50,570 --> 00:43:54,890 ser un meravellós un traçador de línies en què només tornar aquesta funció anònima que 836 00:43:54,890 --> 00:44:00,780 accepta el signe de dòlar 0 com la seva i com a base i el seu exponent. 837 00:44:00,780 --> 00:44:02,582 >> Però podem aconseguir realment, molt elegant quan 838 00:44:02,582 --> 00:44:04,790 adonar-se que Swift té un molta potència sota el capó. 839 00:44:04,790 --> 00:44:07,010 Molts dels operadors que hem estat tractant, 840 00:44:07,010 --> 00:44:11,270 a més dels signes i símbols de divisió i totes aquestes coses que normalment 841 00:44:11,270 --> 00:44:15,620 operar amb tipus de dades en un llenguatge de programació, 842 00:44:15,620 --> 00:44:17,600 en realitat són extensibles a Swift. 843 00:44:17,600 --> 00:44:21,460 Així que el que significa en la qual pot definir els nostres propis operadors. 844 00:44:21,460 --> 00:44:26,020 >> Així que ara estic cansat d'escriure en tot això pow i després un parèntesi i després 845 00:44:26,020 --> 00:44:26,520 la base. 846 00:44:26,520 --> 00:44:27,520 Jo no vull fer això. 847 00:44:27,520 --> 00:44:30,190 Realment vull tenir una operador que em permet fer això. 848 00:44:30,190 --> 00:44:34,510 Així que puc dir Swift que vull per crear un operador, estel 849 00:44:34,510 --> 00:44:39,472 star-- per cert que no puc fer servir el quirat perquè el quirat és un operador que 850 00:44:39,472 --> 00:44:40,680 fa cosa completament diferent. 851 00:44:40,680 --> 00:44:42,720 Així que no vull per ordenar de topar amb això. 852 00:44:42,720 --> 00:44:45,750 I així, el que es veu en una varietat d'idiomes, incloent Python, 853 00:44:45,750 --> 00:44:48,810 és com a operador estrella estrella per representar els exponents. 854 00:44:48,810 --> 00:44:50,730 >> Així que aquesta és l'única raó ¿Per què ho he fet. 855 00:44:50,730 --> 00:44:53,067 I serà un operador infix tipus. 856 00:44:53,067 --> 00:44:54,900 I he de facilitar a ell alguna informació 857 00:44:54,900 --> 00:44:58,386 sobre la prioritat d'aquesta operador pel que és associativa esquerra. 858 00:44:58,386 --> 00:45:00,260 És com relativament alta prioritat en comparació 859 00:45:00,260 --> 00:45:02,432 a sumatòria o multiplicació. 860 00:45:02,432 --> 00:45:04,140 És major precedència que tot això. 861 00:45:04,140 --> 00:45:04,931 Així successivament i així successivament. 862 00:45:04,931 --> 00:45:07,410 I llavors jo defineixo la funció que en realitat 863 00:45:07,410 --> 00:45:10,070 dicta el que aquest operador. 864 00:45:10,070 --> 00:45:14,150 Així que suposant que tinc una esquerra costat i costat dret, 865 00:45:14,150 --> 00:45:17,330 que seria potser una nom millor variable per això. 866 00:45:17,330 --> 00:45:20,690 Costat esquerre i costat dret. 867 00:45:20,690 --> 00:45:26,740 Llavors puc tenir aquest poder del esquerra a la dreta 868 00:45:26,740 --> 00:45:28,980 i tornar aquest valor. 869 00:45:28,980 --> 00:45:30,370 Així que ara és super dolça. 870 00:45:30,370 --> 00:45:33,790 Tot el que hem de fer és estrella 2 estrelles 3 i que és 2 a la tercera potència, 871 00:45:33,790 --> 00:45:35,290 i obtenim un valor de 8. 872 00:45:35,290 --> 00:45:40,280 Estrella 2 estrelles 10 és 2 a la 10a potència, obtenim 1024. 873 00:45:40,280 --> 00:45:43,630 >> Així que ara el nostre poder de la funció, que de nou és diferent, 874 00:45:43,630 --> 00:45:47,030 perquè la idea darrere d'això és que tenim una funció que 875 00:45:47,030 --> 00:45:50,700 sempre té algun valor i multiplica it-- o més aviat 876 00:45:50,700 --> 00:45:53,240 pren l'exponent de la mateixa potència. 877 00:45:53,240 --> 00:45:54,300 Així que ara és encara més simple. 878 00:45:54,300 --> 00:45:57,070 Així que ara és només dòlar mostra de l'estrella 0 estrelles i. 879 00:45:57,070 --> 00:46:01,190 Ni tan sols hem de fer servir presoner de guerra més. 880 00:46:01,190 --> 00:46:03,020 >> Acceptar, que ha perdut? 881 00:46:03,020 --> 00:46:03,700 Ho estem fent bé? 882 00:46:03,700 --> 00:46:05,090 Qualsevol pregunta sobre aquesta matèria? 883 00:46:05,090 --> 00:46:05,815 Sí? 884 00:46:05,815 --> 00:46:09,500 >> AUDIÈNCIA: Quan usted-- [inaudible] el poder de funk de doble i. 885 00:46:09,500 --> 00:46:11,441 Així que quan vostè està tornant una funció. 886 00:46:11,441 --> 00:46:13,190 DANIEL ARMENDARIZ: Poder Funk de doble i. 887 00:46:13,190 --> 00:46:14,270 Oh sí, jo no sé el que els números I són. 888 00:46:14,270 --> 00:46:15,708 Ho sento. 889 00:46:15,708 --> 00:46:19,420 >> AUDIÈNCIA: Per què estàs tornant una funció recinte [inaudible]. 890 00:46:19,420 --> 00:46:24,214 No és de zero dòlars estrella estrelles i [inaudible] 891 00:46:24,214 --> 00:46:29,710 trobar que l'operador amb aquest tornar doble [inaudible] duplicar? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL ARMENDARIZ: Així que anem a em va contestar la seva pregunta 893 00:46:32,742 --> 00:46:35,950 com jo ho entenc i em puc dir si jo no entenc la seva pregunta. 894 00:46:35,950 --> 00:46:42,850 Així que aquesta construcció, la clau de signe de dòlar zero estrella estrella i, 895 00:46:42,850 --> 00:46:44,280 és una funció. 896 00:46:44,280 --> 00:46:50,080 I accepta un paràmetre que és representat per aquest signe de zero dòlars. 897 00:46:50,080 --> 00:46:55,830 La paraula clau return està implícit en aquest molt curt, sintaxi de la funció anònima. 898 00:46:55,830 --> 00:46:57,870 >> El que significa que essencialment el que això està dient 899 00:46:57,870 --> 00:47:01,270 és que estic definint un function-- i després vaig a 900 00:47:01,270 --> 00:47:05,320 simplement dir-alguna cosa-- on tinc algun valor i. 901 00:47:05,320 --> 00:47:08,300 Tinc i, que és doble. 902 00:47:08,300 --> 00:47:10,750 I m'estic tornant un doble. 903 00:47:10,750 --> 00:47:19,010 I tinc dins d'aquest retorn I- ho sento, No hauria d'haver cridat a aquest I- x. 904 00:47:19,010 --> 00:47:20,240 Oh estimada, oh estimada, oh estimada. 905 00:47:20,240 --> 00:47:27,440 I estrella estrella X-- nope--. 906 00:47:27,440 --> 00:47:29,720 >> Així que això és només una versió simplificada d'aquesta. 907 00:47:29,720 --> 00:47:33,990 I així, la raó per la qual tinc dòlar signe zero és que l'ús d'aquest recinte 908 00:47:33,990 --> 00:47:41,050 vol dir que ja no tinc per escriure presoner de guerra, o ja no fer 909 00:47:41,050 --> 00:47:45,570 He de fer alguna cosa com un 3 estrelles 2 estrelles. 910 00:47:45,570 --> 00:47:48,530 Jo només puc tenir un sol funció anomenada plaça 911 00:47:48,530 --> 00:47:50,820 que sempre tindrà algun valor com a entrada 912 00:47:50,820 --> 00:47:52,980 i de fet tornar a la plaça d'això. 913 00:47:52,980 --> 00:47:56,460 >> Així tot el propòsit del tancament és per encapsular només una espècie de fet 914 00:47:56,460 --> 00:47:59,920 que jo sempre vull usar i sempre Jo dic a això la funció com el poder 915 00:47:59,920 --> 00:48:01,710 a prendre aquest exponent. 916 00:48:01,710 --> 00:48:04,650 Així tornant llavors, un funció que accepta 917 00:48:04,650 --> 00:48:08,460 un doble, que és la base, i retornant el resultat que l'exponent 918 00:48:08,460 --> 00:48:10,740 és la clau aquí. 919 00:48:10,740 --> 00:48:12,790 I aquesta és la principal diferència. 920 00:48:12,790 --> 00:48:14,430 Només hi havia una mica d'un fermall d'or. 921 00:48:14,430 --> 00:48:17,970 >> Això no és diferent en comparació amb els exemples anteriors, 922 00:48:17,970 --> 00:48:20,530 però va ser només una mica de colofó ​​podem realitat 923 00:48:20,530 --> 00:48:24,500 crear un operador a Swift i, de fet fer coses amb ell, 924 00:48:24,500 --> 00:48:26,396 que és una espècie d'una cosa genial. 925 00:48:26,396 --> 00:48:27,520 Jo responc a la seva pregunta? 926 00:48:27,520 --> 00:48:28,390 Sweet. 927 00:48:28,390 --> 00:48:31,350 Qualsevol altra cosa abans de seguir endavant? 928 00:48:31,350 --> 00:48:33,570 D'acord. 929 00:48:33,570 --> 00:48:36,430 >> Ara bé, aquest tipus de planteja la pregunta és que-- bé bé, 930 00:48:36,430 --> 00:48:40,870 ara tenim la capacitat per funcions per a ser retornats. 931 00:48:40,870 --> 00:48:48,950 Podem passar també funciona com a dades o com a paràmetres a altres funcions? 932 00:48:48,950 --> 00:48:50,710 I de fet el que puguem. 933 00:48:50,710 --> 00:48:53,480 Així que anem a dir que tenim totes del mateix codi. 934 00:48:53,480 --> 00:48:56,120 Tenim la variable quadrada que s'enfrontaran aquest codi. 935 00:48:56,120 --> 00:48:59,320 I tenim la variable del cub que es cubicar algunes dades. 936 00:48:59,320 --> 00:49:02,440 I nosaltres realment volem aplicar a una àmplia gamma de nombres. 937 00:49:02,440 --> 00:49:06,870 >> Així que el que podríem estar temptats a fer, per descomptat, que és certament vàlid, 938 00:49:06,870 --> 00:49:15,430 és per repetir aquesta llista de nombres i aplicar les meves funcions quadrat i el cub 939 00:49:15,430 --> 00:49:22,270 i obtenir dues noves llistes com a resultats que són aquesta llista original quadrat 940 00:49:22,270 --> 00:49:24,970 i en cubs, respectivament. 941 00:49:24,970 --> 00:49:26,880 Perfectament acceptable. 942 00:49:26,880 --> 00:49:29,130 Però, què és el que que veiem aquí és que tenim, 943 00:49:29,130 --> 00:49:31,310 de nou, la duplicació del nostre codi. 944 00:49:31,310 --> 00:49:34,310 I no hi ha tal vegada una oportunitat per a nosaltres per simplificar això una mica. 945 00:49:34,310 --> 00:49:41,260 I si hi hagués una manera per a nosaltres en realitat sempre iterar sobre alguna llista 946 00:49:41,260 --> 00:49:45,450 i només ha de passar a aquest màgic funcionar una variable que 947 00:49:45,450 --> 00:49:47,350 representa una funció que volem aplicar 948 00:49:47,350 --> 00:49:50,336 a cada article en aquesta llista. 949 00:49:50,336 --> 00:49:53,210 Això porta a col·lació el concepte del que s'anomenen funcions d'ordre superior. 950 00:49:53,210 --> 00:49:57,150 I això és en essència el que això És a dir, és que podem crear una funció. 951 00:49:57,150 --> 00:50:00,210 >> I en aquest cas es diu un assignador, només per donar-li un nom, només 952 00:50:00,210 --> 00:50:02,510 mapatge sobre cada cada element en una llista. 953 00:50:02,510 --> 00:50:06,191 Quan prenc una llista i em prenc una funció. 954 00:50:06,191 --> 00:50:08,440 I aquesta funció, és clar, té una certa signatura. 955 00:50:08,440 --> 00:50:11,980 S'accepta com un doble paràmetre i és la sortida és un doble. 956 00:50:11,980 --> 00:50:14,310 I tot el resultat de aquesta funció es va 957 00:50:14,310 --> 00:50:18,921 a ser una nova llista que és de tipus double. 958 00:50:18,921 --> 00:50:19,420 D'acord? 959 00:50:19,420 --> 00:50:22,650 >> I el que jo faré és aplicar aquesta funció f 960 00:50:22,650 --> 00:50:24,960 a tots els elements de la llista. 961 00:50:24,960 --> 00:50:30,280 I reply-- i prefereix tornar aquest nou llista com un resultat, que és realment genial. 962 00:50:30,280 --> 00:50:31,820 Ara puc passar funcions voltant. 963 00:50:31,820 --> 00:50:35,290 I aquesta idea d'ordre superior funcions és realment important. 964 00:50:35,290 --> 00:50:39,260 I això és realment només assignador aplicació dels pobres 965 00:50:39,260 --> 00:50:43,130 d'una funció que es construeix en Swift anomenat mapa. 966 00:50:43,130 --> 00:50:45,690 I ho fa precisament això, potser fins i tot una mica millor. 967 00:50:45,690 --> 00:50:48,260 >> Aquesta és només una espècie d'un genèric, versió simplificada que 968 00:50:48,260 --> 00:50:51,270 ens permet veure el concepte que s'aplica aquí. 969 00:50:51,270 --> 00:50:54,630 Ara mira la manera com jo en realitat pot aplicar meva plaça 970 00:50:54,630 --> 00:50:57,850 i les meves funcions de cub a aquesta llista de nombres. 971 00:50:57,850 --> 00:50:58,780 Corro el meu assignador. 972 00:50:58,780 --> 00:51:00,280 Proporciono a ella la meva llista de nombres. 973 00:51:00,280 --> 00:51:02,155 Proporciono a ella la del funció que va 974 00:51:02,155 --> 00:51:04,170 a aplicar a cada un d'aquests índexs. 975 00:51:04,170 --> 00:51:07,120 I serà de sortida com a resultat. 976 00:51:07,120 --> 00:51:11,810 I vaig a arribar a veure que he quadrat i en cubs meus números com a resultat. 977 00:51:11,810 --> 00:51:14,660 >> I per descomptat el assignador tindrà qualsevol tipus de funció anònima. 978 00:51:14,660 --> 00:51:17,640 Fins i tot podem veure que he creat una nova funció anònima que 979 00:51:17,640 --> 00:51:20,220 només pren algun paràmetre i el divideix per 2. 980 00:51:20,220 --> 00:51:24,340 I podem veure que tinc, de fet, dividit la cistella per 2 en comptes. 981 00:51:24,340 --> 00:51:25,250 Refredar? 982 00:51:25,250 --> 00:51:27,340 Fins ara, tot bé? 983 00:51:27,340 --> 00:51:29,650 Molt bé, ara anem a tornar a aquesta idea. 984 00:51:29,650 --> 00:51:36,160 Anem a posar en pràctica aquesta de tornada a el context d'un llibre de qualificacions. 985 00:51:36,160 --> 00:51:41,860 >> I si faig això, podem veure que puc aplicar una àmplia varietat d'aquests options-- 986 00:51:41,860 --> 00:51:44,330 o una àmplia varietat d'aquests funcions d'ordre superior 987 00:51:44,330 --> 00:51:51,450 per simplificar realment la meva capacitat per fer un varietat de coses en les llistes de nombres. 988 00:51:51,450 --> 00:51:53,660 Així, per exemple, si tenir una llista de nombres, 989 00:51:53,660 --> 00:51:57,060 una de les funcions d'ordre superior el que existeix es diu reduir. 990 00:51:57,060 --> 00:52:00,080 El que fa més bé reduir de mapa, es redueix la voluntat 991 00:52:00,080 --> 00:52:03,710 prendre dos elements a la llista, haurà alguna funció que 992 00:52:03,710 --> 00:52:07,420 compara els dos elements de la llista, i ho farà a continuació, 993 00:52:07,420 --> 00:52:09,610 espècie de output-- la de sortida d'aquesta funció 994 00:52:09,610 --> 00:52:13,790 serà un altre element que que després comparar als altres. 995 00:52:13,790 --> 00:52:18,190 >> Així que vostè pot utilitzar això per realment suma dels nombres de la llista. 996 00:52:18,190 --> 00:52:20,640 Per exemple, si tinguessis una llista d'1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 a donar els primers elements, 1 i 2. 998 00:52:22,940 --> 00:52:27,270 Es pot aplicar a ella una addició funció que pren aquests dos elements 999 00:52:27,270 --> 00:52:30,980 i escup un d'aquests elements, el que seria el valor 3. 1000 00:52:30,980 --> 00:52:35,684 Després prenem el valor 3 amb el següent element de la llista, sumar aquests dos, 1001 00:52:35,684 --> 00:52:37,100 i després seguir per la llista. 1002 00:52:37,100 --> 00:52:40,410 >> Estem reduint el llistar a un sol valor. 1003 00:52:40,410 --> 00:52:42,700 I dóna la casualitat que el signe més 1004 00:52:42,700 --> 00:52:44,670 és un operador, com acabem de veure. 1005 00:52:44,670 --> 00:52:47,500 Aquest operador és en realitat una funció que 1006 00:52:47,500 --> 00:52:53,100 té precisament aquesta llista que voldria, en comptes aquestes propietats 1007 00:52:53,100 --> 00:52:54,770 que ens agradaria. 1008 00:52:54,770 --> 00:52:56,760 Així que us animo a fer una ullada a això. 1009 00:52:56,760 --> 00:52:59,290 Vull a una espècie de moviment des d'alguns d'aquest codi 1010 00:52:59,290 --> 00:53:05,330 pel que en realitat podem veure algunes real veritable veritable Swift, a Xcode, 1011 00:53:05,330 --> 00:53:06,880 en el desenvolupament de iOS. 1012 00:53:06,880 --> 00:53:08,630 Però fer una ullada a això i veure si pots 1013 00:53:08,630 --> 00:53:11,171 analitzar a través del que està passant amb alguns d'aquests d'ordre superior 1014 00:53:11,171 --> 00:53:13,790 funcions incloent filtre, reduir, i vostè fins i tot 1015 00:53:13,790 --> 00:53:17,060 veure en algun lloc d'aquí el mapa també. 1016 00:53:17,060 --> 00:53:17,910 Està aquí mateix. 1017 00:53:17,910 --> 00:53:20,410 On tindrà una seqüència de les qualificacions i el farà realitat 1018 00:53:20,410 --> 00:53:24,230 assignar des de la construcció switch, que és possible reconèixer de C, 1019 00:53:24,230 --> 00:53:27,640 però en realitat és molt més poderosa que la construcció switch 1020 00:53:27,640 --> 00:53:29,810 que tenim en C. 1021 00:53:29,810 --> 00:53:31,930 >> I anem a aplicar això a cada element de la llista 1022 00:53:31,930 --> 00:53:34,540 i en realitat proporcionar el grau de la lletra de cada 1023 00:53:34,540 --> 00:53:40,780 d'aquests graus que utilitzen tots aquests conceptes que només hem parlat abans. 1024 00:53:40,780 --> 00:53:44,760 Ara anem a eludeixen per només una minut i parlar d'estructures. 1025 00:53:44,760 --> 00:53:49,680 I així les estructures són una espera a C que van ser capaços de definir un nou tipus de dades. 1026 00:53:49,680 --> 00:53:53,590 Hi estructures dins de Swift. 1027 00:53:53,590 --> 00:53:58,980 I també ho fan moltes altres construccions denominats enumeracions i classes, que en realitat 1028 00:53:58,980 --> 00:54:01,175 portar aquesta idea a un nivell completament diferent. 1029 00:54:01,175 --> 00:54:05,300 >> I, bàsicament, és només una manera de definir un nou tipus de dades. 1030 00:54:05,300 --> 00:54:11,010 Així que si vostè get-- si véns a través de classes o estructures o enumeracions, 1031 00:54:11,010 --> 00:54:13,290 no es confongui per ella. 1032 00:54:13,290 --> 00:54:16,280 És només la forma de definir algun nou tipus particular de dades. 1033 00:54:16,280 --> 00:54:20,230 I això és molt important a l'hora estem parlant de desenvolupament d'aplicacions iOS 1034 00:54:20,230 --> 00:54:24,630 perquè tot el que Hi dins de l'aplicació per iOS 1035 00:54:24,630 --> 00:54:27,460 és essencialment un objecte d'algun tipus. 1036 00:54:27,460 --> 00:54:31,980 I un objecte és bàsicament una classe o una enumeració o una estructura. 1037 00:54:31,980 --> 00:54:34,760 >> Així que en aquest cas jo sóc la definició d'un nou tipus de dades 1038 00:54:34,760 --> 00:54:37,740 que estic trucant avaluació això és algunes propietats, incloent 1039 00:54:37,740 --> 00:54:41,040 un nom i una seqüència de notes. 1040 00:54:41,040 --> 00:54:43,470 Així que un tipus d'avaluació que jo podria tenir en compte 1041 00:54:43,470 --> 00:54:44,760 seria concursos, per exemple. 1042 00:54:44,760 --> 00:54:48,180 M'agradaria tenir un avaluació que era un concurs 1043 00:54:48,180 --> 00:54:51,460 i que tenia una varietat de graus associat amb això, per a prova un, 1044 00:54:51,460 --> 00:54:52,840 concurs de dos, així successivament i així successivament. 1045 00:54:52,840 --> 00:54:55,720 >> O podria tenir un tipus diferent d'avaluació per als butlletins de problemes. 1046 00:54:55,720 --> 00:54:56,650 I jo puc fer les coses. 1047 00:54:56,650 --> 00:54:59,860 De fet, puc tenir funcions dins d'aquest tipus de 1048 00:54:59,860 --> 00:55:02,645 de les dades, que ara són anomenats mètodes. 1049 00:55:02,645 --> 00:55:04,520 Així que si mai veure la mètode de paraules, el que realment 1050 00:55:04,520 --> 00:55:08,190 és només una funció que s'aplica a una classe molt específica, 1051 00:55:08,190 --> 00:55:10,100 o a un tipus molt específic de dades. 1052 00:55:10,100 --> 00:55:12,350 Ens permet modificar les dades dins. 1053 00:55:12,350 --> 00:55:15,510 >> En altres paraules, si vull afegir una nota a la meva avaluació, 1054 00:55:15,510 --> 00:55:18,630 llavors tot el que necessito fer és afegir la puntuació que es va introduir 1055 00:55:18,630 --> 00:55:22,660 a aquesta funció per la meva propietat interna. 1056 00:55:22,660 --> 00:55:25,880 Hi ha un altre constructe endreçat aquí en Swift, que és aquest punt punt punt 1057 00:55:25,880 --> 00:55:31,780 operador, el que significa que les puntuacions pot ara acceptar qualsevol nombre d'enters. 1058 00:55:31,780 --> 00:55:33,940 I puntuacions seran un matriu d'enters que 1059 00:55:33,940 --> 00:55:39,030 s'han passat a la meva funció, que vol dir que jo puc fer coses com aquesta. 1060 00:55:39,030 --> 00:55:42,360 >> Jo puc fer afegir notes i simplement proporcionar nombres arbitraris de nombres enters en ell 1061 00:55:42,360 --> 00:55:47,420 i en realitat ser proporcionat una matriu d'aquests valors en la meva funció 1062 00:55:47,420 --> 00:55:50,270 o en el meu mètode, com és el cas. 1063 00:55:50,270 --> 00:55:54,040 Ara bé, això és important perquè tot en Xcode, tot en iOS, 1064 00:55:54,040 --> 00:55:56,250 és de fet un objecte. 1065 00:55:56,250 --> 00:55:59,630 Així que tingues-ho en compte quan ens rebentem Xcode obert 1066 00:55:59,630 --> 00:56:04,890 i passi per davant més enllà de iOS versions de dos i tres 1067 00:56:04,890 --> 00:56:08,820 i de fet passar a la versió de quatre. 1068 00:56:08,820 --> 00:56:11,940 >> I de nou, tot això ho farà es publicaran a la pàgina seminari. 1069 00:56:11,940 --> 00:56:16,980 iOS 4 és una espècie de tota regla implementació d'una aplicació molt bàsica. 1070 00:56:16,980 --> 00:56:23,920 I el que aquesta aplicació fa és que carrega una interfície d'usuari, que s'assembla a això. 1071 00:56:23,920 --> 00:56:28,680 Un cop més, si fem clic sobre guió gràfic podem veure que això és el que sembla. 1072 00:56:28,680 --> 00:56:31,320 Aquesta és la interfície d'usuari. 1073 00:56:31,320 --> 00:56:33,676 Té un títol a la part superior. 1074 00:56:33,676 --> 00:56:34,800 Jo he trucat galeria web. 1075 00:56:34,800 --> 00:56:38,400 >> Al mig hi ha un element anomenada la vista de la imatge d'IU. 1076 00:56:38,400 --> 00:56:41,340 I a la part inferior hi ha una barra d'eines amb un sol botó que 1077 00:56:41,340 --> 00:56:46,850 té espais elàstiques que permeten centre en el mitjà d'aquesta barra d'eines. 1078 00:56:46,850 --> 00:56:51,780 I el que passa és que quan aquest càrregues es descarrega un arxiu JSON que és 1079 00:56:51,780 --> 00:56:55,540 continguda en un servidor en un altre lloc, analitza aquest arxiu JSON, 1080 00:56:55,540 --> 00:56:58,130 i l'arxiu JSON sembla una mica a això. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 L'arxiu JSON són aquestes. 1083 00:57:06,230 --> 00:57:08,650 Aquí està. 1084 00:57:08,650 --> 00:57:11,730 >> Té un nom d'àlbum i que té una sèrie de fotos. 1085 00:57:11,730 --> 00:57:13,490 Cadascuna d'aquestes fotos tenir un nom i també 1086 00:57:13,490 --> 00:57:19,460 una URL mateixos que representen el versió jpeg d'aquesta foto individual. 1087 00:57:19,460 --> 00:57:24,780 Així que el que passa és que quan aquest programa càrregues, es descarrega l'arxiu JSON, 1088 00:57:24,780 --> 00:57:30,590 ho analitza, ho posa tot això en l'equivalent d'una matriu en iOS 1089 00:57:30,590 --> 00:57:33,020 desenvolupament d'aplicacions, que és un NSArray. 1090 00:57:33,020 --> 00:57:37,520 I llavors puc després carregar aquestes dades en una aplicació 1091 00:57:37,520 --> 00:57:41,100 i carregar a la meva pantalla. 1092 00:57:41,100 --> 00:57:44,760 >> Hi ha una imatge que es va carregar amb el botó a la part inferior. 1093 00:57:44,760 --> 00:57:49,190 Si faig clic a Obtenir imatge següent, llavors tira que la imatge de la Internet 1094 00:57:49,190 --> 00:57:53,370 i substitueix aquesta imatge a la vista de la imatge d'IU. 1095 00:57:53,370 --> 00:57:57,820 Així que vostè pot descarregar això i en realitat veure en el seu ordinador. 1096 00:57:57,820 --> 00:58:00,940 I construir i realitat compilar al dispositiu. 1097 00:58:00,940 --> 00:58:04,710 Però en essència el procés va ser això, a crear la storyboard-- 1098 00:58:04,710 --> 00:58:08,080 o més aviat no create-- però seleccioneu el guió gràfic. 1099 00:58:08,080 --> 00:58:15,030 I en realitat we'll-- si no mente-- anem a prendre només un parell de segons 1100 00:58:15,030 --> 00:58:18,390 que en realitat li mostrarà com es va fer això. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Només perquè la manera com podem realment aconseguir això es fa una mica més 1103 00:58:27,820 --> 00:58:28,360 aparent. 1104 00:58:28,360 --> 00:58:30,651 Sol·licitud única vista, estic va a trucar a aquest seminari 1105 00:58:30,651 --> 00:58:35,330 quatre que representa aquest nombre particular. 1106 00:58:35,330 --> 00:58:36,335 Guardeu-lo a l'escriptori. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 Bé, farem clic en el guió gràfic. 1109 00:58:42,110 --> 00:58:47,030 I el que jo faré és trobar la meva vista de la imatge, 1110 00:58:47,030 --> 00:58:50,940 arrossegueu-lo fins el meu usuari interfície i el centre de la mateixa. 1111 00:58:50,940 --> 00:58:54,850 Ara només centrant desgràcia no farà molt, 1112 00:58:54,850 --> 00:58:58,680 a excepció d'una pantalla és a dir aquesta mida exacte. 1113 00:58:58,680 --> 00:59:03,950 >> Així que podem convèncer-nos que per en fer clic en aquesta cosa doble cercle, 1114 00:59:03,950 --> 00:59:08,290 enderrocar aquest emergent menú aquí i canviant fins 1115 00:59:08,290 --> 00:59:11,110 per obtenir una vista prèvia, on anem a realitat tenir l'oportunitat d'obtenir una vista prèvia 1116 00:59:11,110 --> 00:59:13,530 Això farà realitat buscar en altres dispositius. 1117 00:59:13,530 --> 00:59:16,500 Com podem veure, ni tan sols veure que en aquest cas particular. 1118 00:59:16,500 --> 00:59:18,500 Així que vaig a tancar això per ara. 1119 00:59:18,500 --> 00:59:22,100 >> I jo vaig a seleccionar aquesta icona a baix en el mateix 1120 00:59:22,100 --> 00:59:23,910 part inferior de la pantalla. 1121 00:59:23,910 --> 00:59:26,584 Diu solució automàtica problemes de disseny. 1122 00:59:26,584 --> 00:59:28,000 Ho sentim, es va tallar a la part inferior. 1123 00:59:28,000 --> 00:59:36,360 Però si faig clic en això, el que GET és aquest pop up-- desaparegui. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 El que jo entenc és que aquest avís em permet afegir restriccions que falten. 1126 00:59:51,220 --> 00:59:53,780 I en fer que llavors espècie de bloquejar 1127 00:59:53,780 --> 00:59:56,640 a la part central de la pantalla com jo podria esperar. 1128 00:59:56,640 --> 01:00:00,520 >> Ara bé, per aconseguir aquest botó a sobre d'ell, he d'anar a l'Editor. 1129 01:00:00,520 --> 01:00:05,010 Anar a: Inserir i feu clic Navigation Controller. 1130 01:00:05,010 --> 01:00:08,900 El que farà és que afegirà tot aquest altre component a la mateixa, 1131 01:00:08,900 --> 01:00:11,310 però en realitat vincular de nou al meu interfície d'usuari inicial. 1132 01:00:11,310 --> 01:00:14,450 I els detalls, un cop més, que no ho fan realment necessita preocupar-se per ara. 1133 01:00:14,450 --> 01:00:16,710 Però jo vull tenir un barra d'eines a la part inferior. 1134 01:00:16,710 --> 01:00:18,530 Així que vaig a comprovar Toolbar Shows. 1135 01:00:18,530 --> 01:00:21,870 >> I això proporciona dins del meu punt de vista, que ara està en un altre lloc, 1136 01:00:21,870 --> 01:00:23,900 podem veure que està vinculat per aquí. 1137 01:00:23,900 --> 01:00:28,710 Ara ofereix una barra d'eines a la part inferior de la meva interfície d'usuari. 1138 01:00:28,710 --> 01:00:34,770 Així que ara, en lloc de seleccionar un vista de la imatge, no puc trobar una etiqueta, 1139 01:00:34,770 --> 01:00:41,140 o més aviat una toolbar-- anem a veure, on és això? 1140 01:00:41,140 --> 01:00:41,890 Com es diu? 1141 01:00:41,890 --> 01:00:49,760 Un element button-- bar-- item-- sorry-- element botó de la barra. 1142 01:00:49,760 --> 01:00:54,590 Plop que hi ha i aplicar un parell espais de flexibles a cada costat 1143 01:00:54,590 --> 01:00:57,429 per centrar en realitat això. 1144 01:00:57,429 --> 01:00:58,970 Així que ara que he creat el meu interfície d'usuari, bàsicament. 1145 01:00:58,970 --> 01:01:01,428 I puc donar-li un nom per doble clic a la part superior 1146 01:01:01,428 --> 01:01:04,880 aquí i dient galeria web i així successivament. 1147 01:01:04,880 --> 01:01:08,100 Ara, de nou, es tracta d'elements d'existir per si mateixos. 1148 01:01:08,100 --> 01:01:10,400 I he de connectar al meu codi que 1149 01:01:10,400 --> 01:01:14,297 Que puc fer a portar de nou fins aquesta icona doble cercle, 1150 01:01:14,297 --> 01:01:15,380 es canvia de la vista prèvia. 1151 01:01:15,380 --> 01:01:18,950 La qual cosa, per cert, ara podem veure és ben centrat i quedarà bé 1152 01:01:18,950 --> 01:01:23,720 en una varietat de dispositius. 1153 01:01:23,720 --> 01:01:27,280 >> Canvieu a automàtic, que serà que aparegui el codi ViewController. 1154 01:01:27,280 --> 01:01:29,030 I ara aquesta part és important. 1155 01:01:29,030 --> 01:01:34,590 Per connectar aquests dos elements, el codi per a la interfície d'usuari, 1156 01:01:34,590 --> 01:01:36,680 selecciona l'element que que voleu connectar. 1157 01:01:36,680 --> 01:01:39,570 Així que en aquest cas, realment vol codificar 1158 01:01:39,570 --> 01:01:43,520 canviar la imatge que es contenia dins d'aquesta vista de la imatge d'IU. 1159 01:01:43,520 --> 01:01:47,070 Així que si vostè controla clic des la vista de la imatge i arrossegament, 1160 01:01:47,070 --> 01:01:51,960 t'adonaràs que vostè aconsegueix un petit bar, quan deixes anar tot això del pop 1161 01:01:51,960 --> 01:01:53,550 fins passarà. 1162 01:01:53,550 --> 01:01:56,470 >> I diu que ho farem crear una connexió. 1163 01:01:56,470 --> 01:01:59,300 I des d'aquí vull donar-li un nom, una mena de galeria. 1164 01:01:59,300 --> 01:02:00,240 Premeu Enter. 1165 01:02:00,240 --> 01:02:03,040 I això proporciona en realitat una galeria variable anomenada 1166 01:02:03,040 --> 01:02:08,600 que llavors puc fer referència al meu codi per canviar la imatge, per exemple. 1167 01:02:08,600 --> 01:02:10,430 Llavors, com aquest codi realment es veuen? 1168 01:02:10,430 --> 01:02:13,030 Doncs de nou, jo no vull passar molt temps en ella. 1169 01:02:13,030 --> 01:02:15,430 I us animo a descarregar-lo i fer una ullada. 1170 01:02:15,430 --> 01:02:18,330 Però un dels més aspecte important és el codi de 1171 01:02:18,330 --> 01:02:20,980 que en realitat obté una imatge. 1172 01:02:20,980 --> 01:02:26,470 >> Així que en aquest cas vull per aconseguir dins de les meves fotos 1173 01:02:26,470 --> 01:02:28,520 array, que està continguda dins de la meva classe. 1174 01:02:28,520 --> 01:02:33,390 Vull definir el nom i la URL que ha estat analitza fora d'aquest JSON. 1175 01:02:33,390 --> 01:02:39,810 En realitat demanar el dispositiu per obtenir la URL, per anar a buscar l'adreça URL d'aquesta, 1176 01:02:39,810 --> 01:02:44,060 i després recuperar les dades de el contingut d'aquest URL. 1177 01:02:44,060 --> 01:02:49,430 A continuació, convertir aquestes dades en una imatge fent-la passar a la imatge d'interfície d'usuari. 1178 01:02:49,430 --> 01:02:52,880 Així que de nou, aquests són tots els diferents tipus d'objectes, de diferents tipus de classes. 1179 01:02:52,880 --> 01:02:58,410 >> I llavors puc llavors posaré la meva gallery.image igual a la de dades. 1180 01:02:58,410 --> 01:03:00,750 I això és una espècie de la carn de la mateixa que en realitat és llavors 1181 01:03:00,750 --> 01:03:08,250 capaç de canviar el canvi de les dades de-- la imatge d'una a la següent. 1182 01:03:08,250 --> 01:03:10,660 Així que de nou, espero que ara moltes de les construccions 1183 01:03:10,660 --> 01:03:12,240 farà una mica més de sentit. 1184 01:03:12,240 --> 01:03:15,260 Observeu que hi ha una mica de signes d'exclamació aquí. 1185 01:03:15,260 --> 01:03:19,810 Els signes d'exclamació són essencialment relacionada amb els opcionals. 1186 01:03:19,810 --> 01:03:22,657 >> El que estic dient bàsicament és que sense revisar 1187 01:03:22,657 --> 01:03:24,490 per veure si hi ha dades dins d'aquest opcional, 1188 01:03:24,490 --> 01:03:27,140 Vaig a seguir endavant i assumir que existeix i desenvolupi ell. 1189 01:03:27,140 --> 01:03:31,340 Recordeu que nosaltres utilitzem l'analogia de una mena de paquet per als opcionals 1190 01:03:31,340 --> 01:03:34,700 i hem de desenvolupar el paquet i tiri de les dades fora. 1191 01:03:34,700 --> 01:03:37,570 El signe d'exclamació forces que realment succeeixen. 1192 01:03:37,570 --> 01:03:39,590 >> Però jo sé que això és segur perquè he comprovat 1193 01:03:39,590 --> 01:03:42,070 per veure si les dades d'imatge és igual a zero, de fet he verifique 1194 01:03:42,070 --> 01:03:45,420 per veure si això opcional era, de fet, fallat. 1195 01:03:45,420 --> 01:03:47,110 Si que tenia, de fet, ja ha fallat. 1196 01:03:47,110 --> 01:03:52,450 I així que estic segur que una vegada que arribi a aquest punt puc desenvolupar de forma segura les dades. 1197 01:03:52,450 --> 01:03:55,710 També pot veure-ho en la forma d'un signe d'interrogació. 1198 01:03:55,710 --> 01:03:59,100 Així que si ens desplacem fins a on jo necessitarà analitzar realment les dades. 1199 01:03:59,100 --> 01:04:01,850 >> Així que no es deixi intimidar per aquest tipus de noms llargs. 1200 01:04:01,850 --> 01:04:06,580 Vostè pot trobar en la Poma lloc de desenvolupadors de molt 1201 01:04:06,580 --> 01:04:09,620 de referències a totes les objectes i tots els processos 1202 01:04:09,620 --> 01:04:11,170 que en realitat fer això possible. 1203 01:04:11,170 --> 01:04:15,990 Però cal notar que això és essencialment una funció que el pas algunes dades. 1204 01:04:15,990 --> 01:04:18,410 I jo torni algun tipus de dades. 1205 01:04:18,410 --> 01:04:24,190 I he de fer servir això com a paraula clau per convertir-lo en aquest NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Què és més un NSDictionary opcional. 1207 01:04:26,490 --> 01:04:31,070 Que després necessito comprovar per veure si existeix. 1208 01:04:31,070 --> 01:04:37,130 >> Així que puc utilitzar que si es deixa iguals reeixides analitzades, 1209 01:04:37,130 --> 01:04:40,620 llavors sé que això opcional en realitat conté algunes dades. 1210 01:04:40,620 --> 01:04:43,840 O el que vaig fer aquí va ser a simplement assumir que si hi ha 1211 01:04:43,840 --> 01:04:49,067 hi va haver errors que de fet és segur. 1212 01:04:49,067 --> 01:04:51,400 Molt bé, vull donar les gràcies tot gràcies per haver vingut. 1213 01:04:51,400 --> 01:04:53,540 Sé que això era molt, però no va ser fins a una hora 1214 01:04:53,540 --> 01:04:55,920 parlar d'algunes coses bastant avançada. 1215 01:04:55,920 --> 01:04:59,640 I així que espero que obtindrà un possibilitat de descarregar tot el codi 1216 01:04:59,640 --> 01:05:01,657 i donar un millor, més profund cop d'ull a ell. 1217 01:05:01,657 --> 01:05:04,240 Una mena de convèncer-se a si mateix de tots de les coses que està passant. 1218 01:05:04,240 --> 01:05:06,800 I vull donar-li les gràcies tot, de nou, per venir. 1219 01:05:06,800 --> 01:05:08,760 I bona sort amb els seus projectes finals. 1220 01:05:08,760 --> 01:05:10,600 Que tinguis un gran dia. 1221 01:05:10,600 --> 01:05:11,467