Daniel ARMENDARIZ: Kamusta, lahat, maligayang pagdating sa pagbuo iOS app may mabilis. Ako Dan Armendariz. Ako precepter ng computer agham dito sa Paaralan of Engineering at Applied Agham. At mabilis ay talagang uri ng isang talagang nasa ayos wika. At Mayroon akong ilang mga plano para sa araw na ito. Kaya sa susunod na oras o kaya kami ay pagpunta upang tumingin sa pag-unlad iOS app mismo gamit ang Xcode at aktwal na paglikha ng ilang mga napaka basic, napaka-simpleng application. At pagtingin sa mga paraan na talagang tumagal ng mga application na iyon, at bumuo ng mga ito, at talagang ilagay ang mga ito sa isang aparatong iOS. Ang ilan sa mga bagay na Hindi namin pagpunta sa tumingin sa Magsasama mga bagay tulad ng talagang pagkuha ng application at paglalagay ito sa store app. Marami ng mga tutorial online na ay makakatulong sa iyo sa na aspeto ng ito. Ngunit dahil rin bilang bahagi ng CS50, makakakuha ka ng upang sumali sa pag-unlad ng Apple koponan, koponan sa pagbuo ng app CS50 iyon. Kung hindi mo pa tapos na at ikaw ay kaanib sa CS50, Ako pinapayo na inyong gawin iyon dahil iyon ay kung paano ka makakalikha ng mga ang ilang mga programa sa Xcode, bumuo ng mga ito, at talagang ilagay ang mga ito sa ilan sa iyong iOS device kung aktwal mong magkaroon ng isang pisikal na iOS device. Kung wala kang isang pisikal na iOS aparato na higit sa multa. Maaari mong aktwal na bumuo ng para sa iOS. At Xcode ay may simulator na nagbibigay-daan sa iyo upang makita ang iyong application sa pagkilos sa iyong computer. Ngunit ito uri ng ay isang malinis at maayos na bagay upang aktwal na-play at nakikipag-ugnayan kasama ng iyong application sa isang aktwal na device. Kaya mayroong ilang mga kinakailangan upang talagang gawin ang lahat ng ito unlad. Ang isa sa mga ito ay ang kailangan mong magkaroon ng isang Mac. Ito ay upang patakbuhin ang 10.9.4 o mas bago upang gawin unlad sa mabilis. Maaari mong gamitin ang isang mas maagang bersyon upang bumuo ng may Hangarin C para sa iOS at Mac. Ngunit inirerekumenda ko, at maraming mga mga halimbawa na aming makita ngayon, gamitin 10.10 Yosemite. Kaya kung hindi mo pa na-upgrade na, ito ay isang magandang dahilan para gawin ito. Ngayon Xcode 6.1 ay ang pinakabagong bersyon ng ang integrated kapaligiran ng pagbuo ng na Apple ay nagbibigay ng libre na Maaari mong i-download off sa store app. At inirerekomenda ko na sa iyo tumakbo din sa pinakabagong bersyon. Kung mangyari sa iyo upang patakbuhin ang isang mas maagang bersyon, Xcode 5 at sa ibaba lamang lamang ay hindi sumusuporta sa matulin kung ano pa man. At ang mga bersyon na beta ng anim na ay inilabas sa ibabaw ng tag-araw, gawin sinusuportahan ng matulin, ngunit mayroong naging isang malaking bilang ng mga pagbabago sa wika, sapat na kaya na ang code na ikaw ay pagpunta sa tumingin sa at na maaaring mahanap sa internet hindi talaga mag-compile ng maayos sa mga naunang mga bersyon ng Xcode. Kaya muli, kung wala ka pa May isang developer account, Inirerekumenda ko mong pumunta sa developer.apple.com. Mag-sign up, lumikha ng isang developer account, at sumali sa koponan sa pagbuo ng CS50 app. Na magbibigay sa iyo ng pagkakataon upang ipunin ang iyong mga application at ilagay ang mga ito sa iyong device. OK, kaya sabihin makapagsimula. Ang napaka-unang bagay na kami ay pagpunta sa gawin ay upang aktwal na lumikha ng isang napaka simpleng proyekto sa Xcode na magpapahintulot sa iyo upang gumawa ng isang application. Kaya kung hindi ka pang Xcode bukas, sige at buksan ito at lumikha ng isang bagong proyekto. Ang isang espesyal na splash screen ay magbubukas at magbibigay sa iyo ilang mga pagpipilian tungkol sa kung ano ito ay na gusto mong gawin. Sabihin lang na gusto mong likhain isang bagong proyekto, isang bagong application. Window na ito magpa-pop up, sa pag-aakala na ginagamit mo Xcode 6.1. Sa ngayon, at para sa mga tagal ng seminar, kami ay pagpunta sa gumagamit -iisang view ng mga application, tulad uri ng isang pangunahing application upang makuha ang iyong mga paa basa. At maaari mong magpalago ng negosiyo sa iyong sariling mula doon. I-click ang Susunod sa puntong ito. Ngayon dito mayroong dalawang bagay na maaaring gusto mong ipasok. Ang pangalan ng produkto ay ang pangalanan ng iyong proyekto. Sa kasong ito, lamang ako pagpunta sa tumawag ito Seminar1 dahil ito ay ang aming unang halimbawa. Pangalan ng samahan, sa kasong ito ay ang aking pangalan lamang. Maaari mong siyempre baguhin ito sa iyong sariling pangalan, o sa CS50. Tagatukoy ng organisasyon, kung mangyari na magkaroon ng isang website tumagal lamang ang pangalan ng domain sa baligtarin, com.yourname. at pagkatapos ay ang pangalan ng produkto ay dapat na awtomatikong lumitaw pagkatapos na bilang bundle identifier. Malinaw na ang wika na hindi namin pagpunta sa gumagamit para sa araw ay matulin. Maaari mong, siyempre, gamitin Layunin C para iyon, ngunit ngayon ay magiging mabilis. At kami sa ngayon sabihin unibersal na aparato, kaya na ito ay gumagana sa parehong iPad at iPhone. At aming iwan core walang check upang mapanatili ang data ang proyektong medyo simpleng para sa ngayon. Kaya sabihin sige at i-click ang Susunod. At ito ay pagpunta sa hilingin sa akin kung saan gusto kong i-save ito. Makikita lamang i-save ko ito sa aking desktop para sa ngayon. Ang lahat ng mga karapatan, kaya ngayon ito ang habilin mangyari kapag aktwal mong bukas Xcode. At mapansin na ang napaka unang bagay na nakikita mo ay ang exclamation point na sabi walang natagpuang pag-sign pagkakakilanlan. Sinasadya kong ginawa ito sa aking computer at ako ay umaasa na pupuntahan ko magagawang upang aktwal na ayusin ito, dahil gusto ko sa iyo upang makita kung paano ito ang talagang gumagana sa iyong sariling machine. Sige at i-click ang isyu remedyo. Ito ay hihilingin sa iyo kung mayroon kang isang umiiral na mansanas developer account. Ito ay kung saan pagsali sa CS50 koponan sa pagbuo ng app Mahalaga upang hindi ka magkaroon ng isang app account lamang, ngunit magkakaroon ka rin ng kakayahan upang mag-sign ng mga apps at ilagay ang mga ito sa iyong iOS device. Ito ay not-- pag-click isyung pag-aayos ay hindi na kinakailangan kung saan ka ng pagpunta sa bumuo at bumuo ng mga lokal, ganap sa loob ng iOS simulator. Ngunit sa ngayon ako pupunta upang bumuo at ilagay ang mga ito sa aking iPad, na magiging magagawang mag-broadcast pati na rin. Kaya nais kong aktwal na magdagdag na ito. At ito ay pagpunta sa magtanong sa akin para sa aking mansanas ID. Kaya ito ay magiging ito. At Kailangan ko bang makuha ang aking password, na sa paglipas dito. Kaya ninyo ako lamang isang segundo upang mahanap iyon, at kopyahin iyon, at ilagay ito sa paglipas dito. I-click ang Idagdag. Ito ay pagpunta sa hilingin sa akin na koponan gusto kong sumali. Pupunta ako sa gawin sa paaralan ng engineering. I-click ang Sumali. Oops, iyon ang isa mali. Gawin natin ang isang Hayaan. Sana isa na gagana. Isa na pa rin ay hindi gumagana. Kami ay nauubusan ng mahusay na mga bago dito. OK, dapat na gumana ang isang ito. Ngayon isara iyon. Ngayon ay gagawin sa paaralan ng ipaalam engineering, i-click pumili. At ngayon sana ay pagkatapos ng ilang segundo can-- mo OK, Kukunin ko bawiin at kahilingan. Oh tao, ito ay magiging hindi gumagana. OK, kukunin ko na subukan ang ibang isa. Gawin natin ang isa dito Hayaan. Live na demo ay hindi pagtupad sa akin. Maaari naming mayroon upang bumalik sa makatarungan pagbuo ng ganap na lokal, ngunit nais na maging OK sa kasong ito. Kaya dito, habang ito ay talagang pagtatrabaho, kung ano kami ay pagpunta sa gawin ay lamang lumikha ng isang napakasimpleng Hello World application. Kaya ito ay Xcode. At kung hindi ka pa nakikita ito, ito ay maaaring maging isang maliit na intimidating sa unang. Marami ng mga pane, may maraming doodads sa iba't ibang lugar. Ngunit Napagtanto lamang na mayroong talagang ilang mga pangunahing bahagi sa kapaligiran ng pagbuo. Sa dulong kaliwa ay ang lahat ng mga file na naaangkop sa iyong programa o sa iyong partikular na proyekto. Mag-i-click kami sa paligid ng sa ilan sa mga ito at kami ay ituro ang pinaka mahalaga sa buhay sa paglipas ng panahon. Sa dulong kanan, namin may isang hanay ng mga katangian. At lahat ng mga katangian, mayroong iba't-ibang mga pane para sa mga katangian. Ang mga pane ay magbabago depende sa konteksto ng pangunahing nilalaman, na ang mangyayari sa maging sa gitna. Ngayon gitna maaari talagang ipakita sa iyo ng iba't-ibang mga bagay, halimbawa iyong sarili code. O maaari mong aktwal na have-- kapag -click ka sa storyboard na ay, sa pamamagitan ng ang paraan, ang isang graphical na lang representasyon ng iyong user interface para sa iyong application-- pagkatapos ay ang mga katangian Pane sa pinakadulo dulong kanan ang talagang baguhin. Ngayon ay mayroong isang pares ng mga iba pang mga bagay na gusto kong ituro. Maaari mong uri ng galugarin sa paligid sa kapaligiran sa inyong sarili. Ngunit ang isa sa mga bagay na lubos na kapaki-pakinabang ay ang pindutang ito dito, ang kanang tuktok ng window. Mayroong ang pindutang ito na mukhang sa malayong Umalis ito ay may talata sinundan ng dalawang mga lupon at pag-uuri ng dalawang arrow na nakaturo layo mula sa isa't isa. Kung lumipat ka sa pagitan ng karaniwang editor, na ay ang malayo pakaliwa isa, ang isa na napili sa pamamagitan ng default, at ang dalawang mga lupon nagpapang-abot bawat isa, kung ano ang iyong aktwal na makakuha ng ay isang double view ng pane. At ito ay ang tunay pagpunta sa maging kapaki-pakinabang para sa amin kapag kailangan naming i-link ang mga item sa UI sa code. At kami makipag-usap higit pa tungkol sa na sa ilang saglit lamang. Ngunit mapagtanto na kung ikaw ay makakuha higit pang mga pane tulad nito, maaari mong pasimplehin ang iyong pagtingin lamang Medyo pamamagitan ng pag-click muli sa iyong solong editor. Sa ngayon kaya magandang. Kaya isa lamang mayroon kaming ang code sa sa kaliwa, mga katangian sa kanan, at kahit anong ito ay nagsusumikap kami sa dito sa sentro napaka. Kaya dito na-click ko sa pangunahing storyboard. At ang storyboard, muli, ay isang paraan sa Xcode na maaari mong aktwal na lumikha ng iyong user interface gamit ang i-drag at i-drop lamang diskarte. At kaya para sa aming napaka unang application na ito ay tiyak kung ano ang pagpunta naming gawin. Kami ay pagpunta sa pumunta pababa sa napakalayo kanang bahagi ng screen, na naglalaman ng ng iba't-ibang mga elemento ng user na maaari mong pagkatapos ay i-click at i-drag upang likhain ang iyong user interface. Ngayon ang lahat ng mga mga elemento ay tinatawag na tanawin dahil matustusan ang mga ito ng ilang uri ng view. Mayroong isang view ng imahe, para sa Halimbawa, upang aktwal na ipakita isang imahe sa user interface. Mayroong isang talahanayan tanawin talaga magpakita ng table. Kaya sa at iba pa. Mayroong iba't-ibang uri ng mga view na maaari mong piliin dito. Kaya lang sa ngayon kami ay pagpunta upang maghanap para sa isang label. Maaari mo lamang mag-scroll sa lahat ng mga listahan na doon. Ngunit mayroong mga paghahanap humadlang sa ilalim napaka na ginagawang mas madali upang makilala tiyak na tanawin na iyong aktwal na nais na i-drag sa iyong user interface. Natagpuan ang aking mga label. Pupunta ako sa i-drag ito dito, direkta sa aking mga sample na application. I-right doon sa mukhang maganda ang gitna. At ako pupunta i-type ang "Hello World!" Pindutin ang Enter. Ngayon Mayroon akong isang label. Hindi ito hitsura ito nakasentro medyo maayos. Kaya ang maaari kong subukan upang muling center nito. Sa kabutihang palad nag-aalok ito ng mga Mga Gabay upang gawing mas madali ang mga bagay. Pupunta ako sa subukan upang ipunin ito. Sana ito ay aktwal na nagtatrabaho dito. At kung hindi, sa ilang sandali lamang ito ay sa katunayan lumitaw sa aking iPad. Ito ay dito mismo. May ito ay. OK, kaya na ito. Tapos na kami. Na nilikha namin ang aming napaka unang application. Ngayon malinaw naman ito ay hindi gumawa ng kahit ano. Ito ay isang label lamang. Walang koneksyon sa pagitan ng ang user interface at ang code. Kaya kung talagang nais namin upang magawa ang koneksyon, kung gusto talaga naming magkaroon ng isang uri ng komunikasyon sa pagitan ng mga elemento na umiiral sa screen at ang code na Binibigyang-daan sa amin upang makontrol mga elementong iyon, pagkatapos ay talagang kailangan namin upang tingnan ang code mismo. Kaya ito ay kung ano ang tawag dito ViewController.swift. At para sa, lalo na para sa ang iyong unang ilang mga programa, ito ay magiging uri ng mga bulk ng code na enter-- mo ay magiging sa dokumentong ito dito. Marami ng mga bagay-bagay na nasa dito sa ngayon, tama? May pag-import UI kit klase, i-override, [? maging sobrang lungkot,?] ang lahat ng mga iba't-ibang bagay. At ito ay hindi masyadong malinaw kung ano ito ay ang lahat ng ito ay nangangahulugang. Kaya ipaalam sa tumagal ng isang hakbang pabalik layo mula sa Xcode para sa ilang sandali at tumingin sa mismong wika, mabilis. Kaya sa mabilis, ito ay nasa disenyo at pag-unlad sa Apple para sa mga apat na taon sa aking pang-unawa. At mayroong isang pares ng mga tampok tungkol dito na talagang nasa ayos. Una sa lahat, ito ay pinagsama-sama wika, nais lamang C. Kaya unang mayroon kang upang mag-compile ito at pagkatapos ay patakbuhin ito bago maaari mong aktwal na isakatuparan ang code na nagreresulta. Ngunit mayroong, hindi tulad ng C, isang interactive -prompt na maaari mong aktwal na tumakbo at i-type arbitrary command sa. At napaka tulad ng isang JavaScript console, kung saan maaari kang maging pamilyar sa ngayon, ito talagang susuriin ng mga command at magbigay sa iyo ang output. At kahit na kanilang kinuha na sa susunod na antas at nakalikha sila ng isang bagay tinatawag na palaruan sa Xcode na nagbibigay-daan sa iyo upang biswal na gumagana sa mga code. At kami talaga makita ang ilang mga halimbawa ng na sa loob lamang ng ilang sandali. Ito ay batay sa C. C underlies ito, dahil ang lahat ng mga compiler lumikha code sumali sa C at lumikha ng object code mula dito. Ngunit ito ay talagang pagbabahagi medyo maliit na syntax. Magmumukha itong medyo naiiba. Makikita may mga ilang pagkakatulad. Ngunit may ay magiging medyo ilang pagkakaiba kumpara sa, sabihin nating, JavaScript o PHP. At kami ay tumuturo sa mga out sa ilang sandali lamang. Ngayon isa sa pinakamalaking bagay tungkol sa mabilis na maganda ay na, lalo na kung ihahambing sa C, ito ay sinadya upang maging ligtas. Lahat ng nasa loob nito ay sinadya upang ay napaka-Matindi ang nai-type sa. Sa katunayan ito ay halos nakakainis sa una, kapag mo munang simulan ang paggawa sa mabilis, lamang kung paano magkano ito nagpapatupad ng mga uri sa lahat ng dako. Anumang bagay na ang isang string May manatiling isang string. Ito ay mahirap upang pagbukud-bukurin sa pag-convert ito o pilitin ito sa ilang iba pang mga form. At muli, ipapakita namin ang mga halimbawa ng mga ito. Ngunit sa huli mapagtanto na ito ay sinadya upang maprotektahan ka, at sa pamamagitan mo bang sabihin ko ang iyong code, mula sa ang pag-crash sa ilang mga kakila-kilabot na paraan kapag mayroon kang ilang mga uri ng magkatugma ang uri. At muli, gumagana sa mga ito. Dahil ito ay nakakabigo sa unang habang sinusubukan mong malaman kung bakit eksaktong nakukuha mo ang hindi pangkaraniwang error pakikitungo sa mga uri. Ngunit ito ay magiging katumbas ng halaga sa dulo. Ito ay haharapin ang mga awtomatikong pamamahala ng memorya, kaya hindi na gawin mo kailangang harapin ang mga bagay tulad ng malloc at libreng at ang lahat ng ng mga uri ng mga bagay. At ito ay dinisenyo din para sa generalities. Kaya habang maaari naming gamitin ang isang Xcode sa lumikha ng iOS apps at mga application sa Mac, Maaari rin naming gamitin ang lang ito bilang isang wika scripting. At upang maaari naming gamitin ito uri-uriin ng sa halip ng PHP o sa halip ng Python na talaga mabilis parse at proseso ang ilang mga data na mayroon kami sa aming mga computer. Ito ay may iba't-ibang uri ng modernong mga tampok, optionals, mutability, generics, pagsasara, at ng maraming ito mga bagay na maaari o hindi maaaring makilala. At ito ay lamang uri ng isang kapus-kapalaran bahagi ng wika na ang ilan sa mga uri ng futuristic, moderno elemento na ay nilalaman sa loob ng mga elemento ay kaya malalim na nakatanim na aktwal na ako'y kailangang turuan CS50.5 ka nang kaunti. Mayroon kaming upang matuto nang higit pa nang kaunti tungkol sa ilan sa mga tampok sa pagkakasunud-sunod sa tunay na maunawaan kung ano ang nangyayari sa at sa gayon ay maaari kang tumingin sa code at hindi huwag mag-talagang nawala. At makikita mo kung ano ang ibig kong sabihin sa pamamagitan ng na ang isang minuto lamang. OK, kaya let's-- ng sapat na ito uri ng mga maximum na mga bagay-bagay. Ang aktwal na tumingin sa Pahintulutan ang aming pinakaunang programa matulin. Ito ay isang linya ng code. Line 14 dito mismo, ito sabi-print l n kumusta CS50. Kaya mayroong ilang mga bagay na ibang-iba ang tungkol kumpara ito sa mga bagay na maaari kang maging ginagamit upang mula sa C, halimbawa. Ang isa sa mga ito ay na walang intmain, hindi na seksyon kabilang ang, may wala sa mga ito ng dagdag na mga bagay-bagay. Ang isama, tulad ng karaniwang I / O, tulad ng aklatan na aktwal na magbigay ng karaniwang tampok ng wika, Awtomatikong kasama bilang bahagi ng standard library mabilis na at na awtomatikong na-import. Hindi mo na kailangang gawin manu-manong na-import. Intmain ay hindi umiiral dahil pangunahing entry point para sa code ay nasa aktwal simula ng code. Kaya ang anumang code na mayroon ka na nagsisimula mula sa simula ang talagang ipatupad sa simula. Kaya ito ay talagang lubhang pinapasimple. Pansinin din na walang tuldok-kuwit. Walang mga semicolon sa wikang ito. Ikaw ang maglalagay ng isang pahayag sa isang indibidwal na linya at pagkatapos ay sa susunod na linya Kinakatawan ang iba pang mga pahayag. Kung nais mong ilagay mulitiple pahayag online, pagkatapos ay mayroon kang ihiwalay ito sa pamamagitan ng semicolon. Ngunit para sa pinaka-bahagi, para sa magandang estilo, hindi namin Hindi kailanman pagpunta upang makita ang semicolon para sa ang layunin ng paghihiwalay ng mga pahayag sa mabilis. Kaya kung paano gumagana ang aktwal na gumagana? Well napaka tulad ng C namin talaga mag-compile ito. At upang maaari naming gawin iyon sa pamamagitan ng paggamit matulin c at pagkatapos ay 1.swift. At pagkatapos ay pagkatapos ng ilang minuto ito ay sumulat ng libro at pagkatapos ay maari ba akong magpatakbo item isa. At kaysa ito ay lamang sabihin ang "Kumusta CS50." Kahanga-hanga, kaya pumunta kami. Mayroon aming unang programa kumusta mundo. Ay lumipat sa numero ng dalawang Hayaan. Ngayon sa this-- ito ay nagbago bahagyang, dahil habang ang normal mong do-- sa katunayan palagi ang mayroon ka upang ipunin ang isang mabilis na application bago mo talaga tumakbo it-- isa ng mahusay na mga tampok na alluded kong bago noon ay na matulin ay maaaring aktwal na gagamitin sa pag-uuri ng isang palsipikado-interpretive mode, may ay sa katunayan tulad ng isang interpreter. Ngunit kung ano ito ay gawin ay may ay, sa katunayan, isang mabilis na application na maaari mong patakbuhin. Kaya halimbawa kung nagta-type ka lamang matulin dito, kung ano ang mangyayari ay na makakakuha ka ng prompt. At maaari mong i-type ang iyong matulin code, i-print kumusta, at patakbuhin ito. At ito ay tunay na print-- mahusay, hindi ito i-print sa kasong ito dahil naka-print na ito sa gitna out, na kung saan ay hindi makikita dito. Ngunit ito ay talagang magagawang upang gumana. At kaya sa kasong ito, lamang ako pagpunta sa gamitin ito bilang isang script. At maaari kong aktwal na patakbuhin ang code na ito doon. Kaya ang paraan na ako talaga tumakbo ito ay bahagyang naiiba, ngunit makikita mo na sa isang sandali lamang. Ngayon, sa kasong ito kung ano ang namin ang pagpunta gawin ay unang tukuyin ang isang variable. Kaya ito ay kung paano namin tukuyin ang isang variable sa mabilis, ay namin ang let keyword, sinundan sa pamamagitan ng ang pangalan ng variable, at pagkatapos naming magbigay ng ilang Sinisimulan opsyonal na data. Kaya kasong ito kami ay pagtukoy sa isang pare-pareho na tinatawag na pangalan, at kami ay pagpunta sa gamitin iyon sa ang output ng aming mga linya sa pag-print sa pinakailalim, kumusta pangalan. Mapansin Ngayong halip na paggamit ng% s, maaari naming encapsulate ang pangalan ng ito variable sa / () at magagawang pagdugtungin sa mga nilalaman ng string sa ang string na ito. Ngayon hindi tulad ng C, string ay isang aktwal na real-type matulin. At kaya nakaupo sa tabi ints at katabi Doubles napaka-madali at natural kumpara sa ilan sa mga iba pang wika na nasaksihan namin. Kaya ito gagawin talaga gumana gaya ng iyong inaasahan. Maaari ba akong magpatakbo 2.swift. At nakita namin na ang pangalan ko ay talaga Spliced ​​in, "Hello Dan." OK,-hanga. Paglilipat sa sa numero ng tatlong. Ngayon ito ay isang kaunti ng isang maliit na kasinungalingan na ako Sinabi na ang paraan na aming ipinahahayag variable ay upang gamitin ang let keyword. Tulad ng maraming beses bilang posibleng ka maaari mong gawin nais na gumamit ipaalam, dahil kung ano na ang ginagawa ito ay tumutukoy sa isang pare-pareho. At ang sinasabi sa mabilis na kaya nito -optimize ang bilis ng iyong application dahil alam nito na iyon variable ay hindi pagpunta upang baguhin. Kaya suriin nang maingat kapag tapos ka pagpunta upang gamitin ang isang variable para sa mga layunin ng pagbabago nito. At kapag tapos ka ng pagpunta sa lumikha ng isang variable lang upang i-hold ang ilang mga data at na hindi talagang pagpunta upang baguhin. Kaya ito konsepto ng kawalan ng pagbabago, ito ay hindi talagang pagpunta sa baguhin, ay isang mahalagang isa kahit na bilang malayo down na bilang pagtukoy sa mga variable. Kaya dito natukoy na namin ang isang pangalan, hayaan pangalan, at sa kasong ito ito ay isang pare-pareho, na may uring string, at ito ay katumbas ng Dan. Kaya samantalang sa naunang bersyon, infers-- ito at sa pamamagitan ng "ito" Ibig kong sabihin swift-- mabilis infers ang uri ng data na iyong inilagay namin sa variable. Sa kasong ito, maaari naming maging tahasan. Kaya ipaalam pagkatapos ay ang pangalan ng ito variable ay ang pangalan, pagkatapos ng tutuldok. At pagkatapos ng tutuldok ang ginagawa namin tukuyin ang uri ng data. Kaya hindi na ito int pangalan o string pangalan o isang bagay tulad na. Ngunit sa halip ipaalam sa label, kami ay pagtukoy kung o hindi ito ay pare-pareho o variable, sinusundan ng pangalan, na sinusundan ng uri ng opsyonal na. Kaya sa kasong ito kami ay pagtukoy sa ang pangalang ito ay isang string. Kami ay sinasabi ay Dan. At ngayon Mayroon akong isa pang variable, sa kasong ito ang tawag dito label. Ngunit mapansin na ito ay may prefix na ang var keyword. Ang var keyword paraan na ito variable na maaari baguhin sa ibang punto sa ng panahon, sa isang lugar down sa code maaari naming talagang baguhin ito at ito Hindi ibigay sa amin ang anumang partikular na error. Maaari naming gawin karaniwang concatenating operator dito gamit ang simbolong plus upang aktwal na magdagdag aming pangalanan sa ang string na ito. At pagkatapos ay maaari naming i-print bilang nakita natin sandali lamang ang nakalipas. Ngayon sabihin nating sa iyo nais upang lumikha ng isang variable ngunit hindi mo nais na i-initialize ito pa. Wala ka pang nais na ilagay ang anumang data sa loob nito. Well mayroon ka upang sabihin sa matulin kung ano ang uri ng data ay magiging bago maaari kang talaga ito matukoy nang maayos. Kaya sa kasong ito, kapag namin ang tinukoy variable na tinatawag na grado ng mayroon kaming upang maging tahasang tungkol sa uri nito, dahil hindi ito maaaring magpahiwatig lamang ng pagtingin sa nasimulan data na nagbibigay sa iyo dito. Ito ay magbibigay sa amin ng isang error kung uri var grado lamang, halimbawa, dahil mayroon samakatuwid, walang mga uri nito. Kaya grado = 100. Kaya na 100 ay isang integer, ito Tama ang sukat sa lalong mabuti sa na. Ito ay patuloy na aandar. Maaari naming makita kung paano namin pagkatapos Maaari pagdugtungin ito sa. Ngayon maaari kang maging tinukso, kung talagang Nais upang pagdugtungin ang grado sa isa pang string ng teksto, sa isa pang string, na gagawin mo lang gamitin ang parehong concatenating operator. At iyon ay normal na maging totoo. Ngunit matulin ay hindi daan sa iyo upang nang kataon lamang baguhin ang uri ng data. Kaya sa kasong ito, ito line, 25, ay mabibigo dahil ang grado ay isang integer at hindi isang string. At kaya mayroong isang Maling pagtutugma ng set ng mga uri. Kaya ikaw ay may upang maging tahasan kapag gusto mong baguhin ang data na ito, kapag gusto mong puwersahin na ito data sa isang iba't ibang mga uri ng at sabihin, OK, gusto kong gumawa ito ang grado, na kung saan ay isang integer, at i-convert ito sa isang string. Kaya kumuha ako String ng kapital s lahat ng uri, mapapansin mo, hindi capitalized, Int, Double, String, kaya sa at iba pa. Ang lahat ng mga ito ay capitalized upang gawing mas madali lang bagay. At kami sabihin sulatin sa malaking titik String pumasa sa ito ng grado. At ito ay lumikha ng isang string mula sa na integer. At pagkatapos ay maaari naming pagdugtungin ang dalawang napaka mabuti. Ang anumang mga katanungan sa mga bagay-bagay na ito sa ngayon? Ang lahat ng mga karapatan, ng araro ipaalam hanggang sa apat na numero. Ngayon ipaalam makipag-usap tungkol sa ilang mga mas advanced na mga istraktura, tulad ng array at mga loop. At hindi tulad ng C, array sa matulin Hindi kinakatawan ng mga payo. Mga Pointer sa mabilis, kahit na umiiral ang mga ito, na tinatawag na tulad ng hindi ligtas na mga payo o ang ilang mga katulad na uri tulad nito, hindi nila mailantad sa iyo nang normal. Kaya ito ay magiging napakahirap para sa iyo upang manipulahin sa memory direkta sa iyong computer. Kaya array ay lamang ng isang uri ng data. At sila ay na-reference ang paggamit ng ganitong uri ng karaniwang ngayon square bracket pagtatanda na iyong nakita bago. Ngunit kapag ikaw ay talagang nais na tukuyin ang isang uri ng variable na bilang isang array ng ilang partikular na uri, pagkatapos ay sa iyo ilagay na uri sa mga square bracket. Kaya kung ano ang ako sinasabi dito ay Lumilikha ako ng isang variable na tinatawag na mga marka ng uri int array. At ako pagtatakda na katumbas ng ilang initialize data, na sa kasong ito 100, 0, 90, 85, na kung saan ay isa lamang koleksyon ng mga arbitrary na grado dito. Ngayon sa kaso ng dati ko, tandaan, alisin ang uri, at ito ay magagawang magpakilala ito batay sa mga nasimulan ng data. Ngunit kung inalis ko ito at Kailangan ko upang i-set ito sa ibang pagkakataon, pagkatapos Gusto ko mayroon upang matiyak na mayroon akong uri doon. Ang lahat ng mga karapatan, na patuloy sa paglakad ipaalam. Kaya can-- namin array magbigay sa amin ng iba't-ibang mga paraan sa pamamagitan ng pagtatanda na tuldok sa iyo ay marahil na ngayon pamilyar sa iyo. Kaya grades.count, halimbawa, Sinasabi sa amin ng tiyak na mga numero ng mga elemento na nasa loob ito ng array. Kung gusto kong magdagdag additional-- mapansin ngayon na ito ay isang var at not-- ito ay isang variable at hindi isang pare-pareho, na ay nangangahulugan na maaari kong baguhin ang mga nilalaman ng array, maaari ba akong magdagdag ng mga bagay na ito. Ngunit hindi ko lang masabi grado at pagkatapos ay sa square bracket apat na, dahil iyon ay magiging isang sa labas ng hangganan ng error sa kasong ito. Kung gusto ko upang aktwal na pagbabago ang laki ng array, Kailangan ko bang gamitin ang paraan na tuldok na Magkabit sa magdagdag ng isang bagay sa sa pinakadulo ng ito. Maaari ba akong, gayunpaman, pagbabago indibidwal na mga indeks. Kaya maaari ko bang gamitin ang mga grado at pagkatapos ay square bracket zero na manipulahin ang unang index at iba pa, tulad ng nais na karaniwan mong asahan. At ang maaari kong gawin ang parehong upang aktwal na tumanggap pati na rin ang data mula sa na. Ngayon ay mayroong ding isang uri ng isang magarbong paraan ng paggawa nito, ang mga marka plus equals at pagkatapos ay isa pang index, na kung saan ay append-- o hindi sa isa pa index-- ngunit isa pang listahan na ay ikabit ang listahan na sa likod ng mga grado. At ang mga marka ng habilin pagkatapos ay maglalaman ng lahat ng iyon. Ngunit iyon lamang ang uri ng dagdag na bagay na lang ako sa pagpapakita sa iyo para masaya. Ngayon ay mayroong isang para sa loop. At ito ay ang simula ng kung saan mga bagay simulan upang baguhin nang kaunti. Pansinin kung paano ito para sa loop ay naiiba mula sa mga loop sa C. Ngayon ako tandaan na para sa mga loop sa Swift maaari isasagawa sa hitsura para sa mga loop sa C, ngunit maraming ng higit pang mga kapaki-pakinabang na constructs na lubos na alisin ang pangangailangan na magkaroon ng para sa var i katumbas ng 0 semicolon i Mas mababa kaysa sa ilang haba, kaya sa at iba pa, tama? At ito ay bumuo lamang ng isa sa kanila. Para sa index, index ay bagong variable, sa kasong ito, sa range. At kung ano ako sinasabi ay mayroong isang hanay mula sa 0 lahat ng mga paraan ng hanggang sa ngunit hindi kabilang ang grades.count. Kaya ito na tuldok tuldok na mas mababa kaysa sa pag-sign kumakatawan isang hanay ng mga halaga na nagsisimula mula sa zero ang lahat ng mga paraan ng hanggang sa grades.count minus 1. May nakahiwalay na operator na umiiral, na tuldok tuldok tuldok, na gagawin ibig sabihin na gusto ko ang hanay ng mga zero sa grado ang bilang ng inclusive. Ngunit sa kasong ito, dahil ang mga array ay zero index, kami ng kurso ayaw mong pumunta sa maximum na bilang ng mga grado. Maaari ko bang sabihin sa ilang mga grado, bilang maaari kang aasahan, at ang output ng lahat ng mga bagay-bagay na ito. OK, paglipat sa. Ngayon makipag-usap tungkol sa mga pag-andar ipaalam. Upang tukuyin ang isang function mong gamitin ang maging sobrang lungkot keyword. At muli, sa Swift kailangan mong maging maingat sa mga uri. Magbigay mo dito mga parameter sa pamamagitan ng pagtukoy, halimbawa, ang pangalan ng parameter at pagkatapos ay sa Colin, ang uri ng data na inaasahan mong na parameter upang tanggapin. Kaya sa kasong ito kami ay may isang function na tinatawag na bilang ng grado sa pag-print. Ito ay tumatanggap ng isang variable na tinatawag na gradebook, o sa halip ng isang parameter na tinatawag na gradebook. At kami ay umaasa na gradebook sa isang array ng mga integer. Kung na gradebook ay walang laman, kami ay mag-print ng isang bagay. Kung hindi man ay i-print na namin ang numero ng mga marka na ito ay talagang. Ngayon kung gusto naming bumalik ang ilang mga halaga, pagkatapos ay ang paraan na namin baguhin ang kahulugan na ito ay upang aktwal na gamitin ang arrow keyword, o gamitin ang mga arrow signifier. Kaya dito kami ay pagpunta upang tukuyin ang isang function na tinatawag na average. Kami ay pagpunta sa tanggapin ang isang listahan ng mga numero. At kami ay pagpunta upang magbalik ng double, na sana ang average ng array. At upang gawin iyon, upang upang aktwal na kalkulahin ang average na, magsasagawa kami ng isang pinagsama-samang at aming ng Siyempre lagumin lahat ng mga bagay sa loob ng array. Pansinin na may bagong estilo ng para sa loop dito. Wala kaming upang maging tahasan tungkol sa iterating sa paglipas ng bawat solong elemento, ngunit maaari naming sabihin sa halip para sa grade at gradebook, kahulugan na para sa bawat solong item na mayroon kami sa ito, magbigay na item sa ito variable na tinatawag na grado. At gusto kong gawin ang isang bagay na may ito. Kaya ako ng pagpunta sa sabihin sa ilang ang lahat ng data na ito at talagang ibalik ang double division. Ngayon mapansin muli dito doon ay ang konsepto ng integer division sa Swift. Kung gusto mong i-double dibisyon dahil gusto mo decimal, pagkatapos ay mayroon kang upang maging tahasan, Hindi halos isang gilid, dahil hindi ito pagpunta sa-daan sa iyo upang pilitin ang data sa magkabilang panig ng ito, mayroon kang upang aktwal na kurso magkabilang panig sa doubles gayon ay handa mo napaka tahasang tungkol sa pagtiyak na na gumagawa ka ng double division. Ay ilipat sa Hayaan. Kaya kung talagang gusto kong accept-- kaya sa ganitong partikular na halimbawa, ito ay pa rin ng isang command linya batay application. At kami ay nagsisimula upang makita ang ilan sa ang mga limitasyon ng mga batang wika sa kahit na kaya namin -access ang mga argumento sa pamamagitan ng paggamit ito process.arguments, ito ay hindi kinakailangan pa rin ang cleanest bagay na kailanman namin na nakita. Ngunit isa lamang Hinihikayat ko sa iyo sa uri ng tumingin sa ang code na ito at subukan upang malaman kung kung ano ang eksaktong ay nangyayari. Mahalaga kung ano ang nangyayari ay na kami ay kumukuha ng isang listahan ng mga argument at ang coercing ang mga ito sa integer, at pagkatapos ay hindi namin pagpunta sa gamitin na bilang isang paraan upang mag-print ang average ng lahat ng aming mga grado. Paglilipat sa. Ngayon ay mayroong isa pang uri ng data-- -type ng isa pang data sa halip na array na tinatawag na mga diksyunaryo, na kung saan ay napaka katulad ng hash table o hash mapa at katulad din sa Nag-uugnay array PHP ni. Kaya mayroon silang pagkaunawa ng mga pindutan at halaga. At sila ay nilinaw din sa sa square na ito bracket pagtatanda, ngunit ang pagkakaiba ay na mga diksyunaryo mayroon sa loob ng plaza bracket, ng tutuldok. At ang tutuldok naghihiwalay ang data -type na ay ang susi at ang halaga. Kaya sa kasong ito, pupuntahan ko upang lumikha ng isang diksyunaryo upang tanggapin ang ilang mga grado. At ito ay magiging ng uri ng string: int, na nangangahulugan na ang lahat ng key ay magiging mga string, at ang lahat ng mga halaga ng mga key ay magiging integer. Ano ang ibig sabihin nito ay na maaari kong pagkatapos ay sumangguni sa mga tiyak na data na gusto ko gamit ang mga key sa halip kaysa sa paggamit ng mga indeks ng numeric na gusto ko ay magkakaroon ng para sa isang karaniwang array. Ngayon tingnan natin, may isang mahalagang bagay na gusto ko rin banggitin ang tungkol sa sa partikular na pagkakasunud-sunod ng code. At iyon ay mayroong pang uri ng data, o sa halip mayroong ito ideya ng data na nasa loob Swift tinatawag optionals. At kung ano optionals nangangahulugan ay na Kinikilala nito ang katunayan na minsan ay hindi ka pagpunta sa makuha ang data na iyong aktwal na inaasahan. At kaya kung ano ang aking ibig sabihin sa pamamagitan ng na is-- sabihin tingnan ang pagkakasunod-sunod ng code na iterates sa lahat ng argumento na ang pumasa sa ang code na ito at sinusubukang i-convert ang mga ito, pagsubok sa hinati sa iba't ibang mga string, dahil tinanggap ito ng isang napaka partikular na uri ng argumento. At pagkatapos ito ay pagpunta sa subukan upang pilitin ang mga string na kumakatawan sa mga numero sa integer na grado, na ang maaari kong pagkatapos ay i-compute. Kaya talaga pupuntahan ko gamitin ang split function na Umiiral na sa loob ng Swift standard library. Pupunta ako upang pumasa sa mga ito string na gusto kong hatiin. At pagkatapos ay sa paggamit na ito uri ng funky syntax, na Hindi ko alam kung kami ay kumuha sa, ngunit marahil, namin ang talagang tukuyin ang tumpak karakter na gusto naming hatiin sa. Kaya ano ang nilalaman ng aktwal na hitsura? Tingnan natin ang isang pagtingin sa aktwal na tumatakbo ang code na ito. Kaya halimbawa, sabihin nating mayroon akong isang pagsusulit at Nakatanggap ako ng 50 sa iyon. At mayroon akong PSETs at Mayroon akong isang daang sa iyon. At got-- ko mayroong isa pang pagsusulit at Nakatanggap ako ng 40 sa iyon. Hit ko Ipasok, at sa huli kung ano ang mangyayari ay na kung ano ang ginagawa nito Nagtatagal mga parameter na ito, ang paghahati ng ang string sa mga tutuldok, pagkilala na mayroong ang dalawang mga elemento sa bawat isa, at ito ay mahalagang pagsubaybay sa bawat isa. Kaya kong ilagay sa aking diksyunaryo isang maikling pagsusulit, na ang halaga ay kinakatawan sa pamamagitan ng bilang 50, Mayroon akong PSET na may halaga ng 100, at isa pagsusulit na may isang halaga na 40. Pagkatapos ay sa ibang pagkakataon sa code ko talaga-a-average ng lahat ng mga halaga at ilista ang lahat ng mga key ng sa partikular na diksiyunaryo. Ngunit ito ay mahalaga sa gayon ay maaari mong mapansin kung ano ang nangyayari, ay ang kung ano ang namin gusto lang gawin ay gumawa ng ang string na ito at hatiin ito sa ito ng character, kung saan maaari naming gawin muli gamit ang split pagpapaandar gamit ang ganitong uri ng kagiliw-giliw na syntax na umiiral dito. Para lamang sa ngayon ay ipinapalagay na iyon ang OK. Titingnan namin ang nalalaman sa ito sa loob lamang ng ilang sandali. Ngunit ngayon ay may mga kawili-wiling aspeto na namin talaga gusto mong subukang i-convert ito string sa isang integer. Ngunit sa ibang mga wika kung ano ang maaaring mangyari ay na nais namin marahil subukan upang gawin ito at alinman sa makabalik isang uri ng tanod halaga tulad ng mga negatibong isa o marahil isang null o isang bagay tulad na. O siguro ay ito sanhi ng error lang. At gusto naming pagkatapos ay mahuli ang error na at pagkatapos ay subukang gawin isang bagay na batay sa katotohanan na-convert na ito sa isang integer nabigo. Doon ideya na ito ng optionals ay sa. Maaari mong aktwal na lumikha ng isang uri ng data na ay isang int tandang pananong, halimbawa. Nangangahulugan iyon na ito integer ay, sa katunayan, opsyonal. At kung ano ang mangyayari ay na maaari itong naglalaman ng isang integer, o maaaring hindi. Maaari itong, sa katunayan, maging ito ng iba pang mga ideya, ganap na tinatawag na nill. Sa aling mga na nangangahulugan na mayroong walang halaga kahit ano pa man sa ito. Hindi ito kahit na sa zero, mayroong lamang walang halaga. Mayroon talagang walang halaga kinakatawan. At iyon ay kung ano ang line 71 ay ginagawa. Ay na ito ay nagsasabi na ako gusto mong subukang magtakda ng isang halaga, isang variable na tinatawag na grado, katumbas ng conversion ng ang string na ito sa isang int. Kaya kinuha ko ang string, sa unang bahagi, o sa halip ang pangalawang mga bahagi, dahil ito ay zero-index, ng ito string na na-hatiin ko. At gusto kong i-convert na sa isang integer. Ngunit ito ay maaaring hindi palaging magpatuloy normal, dahil isipin ano ang mangyayari kung, sa halip na uri isang numero, nagta-type ako ng kurso tulad ng asdf. Ito ay pagpunta sa mabibigo. Ito ay hindi tunay na magiging makakapag-convert na sa isang integer bilang Gusto ko inaasahan. Kaya sa halip na mag-alis isang uri ng error ito, mayroon kaming ito ideya ng isang opsyonal na. At na nangangahulugan na ang paggamit ng ito tandang pananong ang maaari kong sabihin, OK, ay posible na maaari kong kumuha ito,-convert ito sa isang int, at ilalagay ito sa isang variable, na magiging din sa isang int. Kung gayon, pagkatapos na paraan na ito ay matagumpay at sa unang bahagi ng ang bloke maaaring magpatuloy. Kung hindi man, nabigo ito. Walang halaga sa grade-- o sa halip walang halaga sa umiiral, at talagang ako ay may upang subukang pangasiwaan ang kondisyon ng error. Ikaw ay pagpunta upang makita ang tandang pananong sa lahat ng oras sa Swift at sa halimbawa code para sa Swift. At sa katunayan ang nill operator, ang ganitong uri ng tandang pananong, mga bahagi optionals, ay magiging marahil isa ng mas mahirap na mga bagay sa uri ng wrap ang inyong ulo sa paligid bilang iyong aktwal na gumagana sa mga ito. Maaaring magkaroon ng kahulugan ngayon. At sa katunayan, kapag ako ay Sumusulat sample code para sa, tiyak ko naunawaan kung ano ang nangyayari sa, ngunit nahuli pa rin sa akin sa pamamagitan ng sorpresa ang bawat kaya madalas kapag Gusto ko makita na ilang data ay talagang isang kawalan bersyon, isang opsyonal na bersyon ng data na ako ay umaasa. Kaya Napagtanto lamang na kung iyong may isang opsyonal na bersyon kailangan mong ma-unpack na data mula sa kahon na ito. Kaya uri ng tulad I-- isipin kung magkaroon ng isang kahon at naglalaman ito ng isang bagay. At kung ano ang kailangan mong gawin ay upang tanungin ang tanong, ay posible na ang kahon na ito talaga naglalaman ng data na Naghahanap ako? Kung gayon, pagkatapos ay hilahin na ang data at ilagay ito sa ang variable na umiiral. Kung hindi, pagkatapos ay mayroon lamang ako sa balewalain ang mga nilalaman ng kahon na ito nang sama-sama dahil ito Literal na naglalaman ng wala. Ang anumang mga katanungan tungkol dito? OK, na ilipat ang layo mula sa ipaalam uri ng batay sa linya ng command bagay at simulan ang pagtingin sa ang ilan sa mga teknolohiya na nagbibigay ng Xcode sa amin sa anyo ng palaruan. Kaya maraming ng kakayahan dito sa Swift. At kung buksan mo ang Xcode at ito itatanong sa iyo kung ano ang nais mong gawin, maaari mong buksan ang playground at i-play lamang sa paligid na may maraming mga iba't ibang mga istraktura at mga aspeto ng wika bago mo pa simulan ang pagpindot ang iOS SDK o Mac SDK. Kaya kasong ito, sabihin nating have-- ko Mayroon akong medyo contrived halimbawa dito, ngunit makisama sa akin bilang namin pag-uuri ng magtrabaho sa pamamagitan ng halimbawa na ito. Sabihin natin na dapat nating gawin ng maraming ng exponents sa isang nakapirming halaga, tulad ng alam namin na kami ay pagpunta sa kailangan upang gawin ng maraming mga parisukat na kapangyarihan, halimbawa. Kaya kami ay pagpunta sa tumagal ng ilang halaga x, kami ay pagpunta sa parisukat ito, kami ay pagpunta sa tumagal ng ilang halaga y at kami ay pagpunta sa parisukat ito. Kaya sa at iba pa. Ngayon kami ay maaaring aktwal na lamang lumikha ng isang kapangyarihan ng 2-andar para sa mga ito, i-right? Kaya gusto naming lumikha ng isang kapangyarihan ng 2 function. Susubukan naming tanggapin ang isang double. Padadalhan ka namin output-- o kami ay bumalik double uri. Isasaalang-alang namin ang resultang ito at pagkatapos ay para sa dalawang beses kung ano talaga namin ang mga resulta, na ay ang nasimulan na halaga ng isa, at multiply ito sa pamamagitan ng x. Kaya sa kakanyahan mayroon kaming x beses x dito. At kaya pagkatapos pagkatapos ay maaari ko, bilang maaari naming asahan, tumagal ito, patakbuhin ang kapangyarihan ng 2, magbigay dito ng ilang data, gusto ko 2.0. At makuha namin upang makita ang mga resulta dito 4.0. Patakbuhin ang kapangyarihan ng 2 sa 3.2 at kami makakuha upang makita ang aming resulta, 10.24. Sa ngayon kaya magandang, tama? Ngayon kami ay nag-iisip, mahusay, OK. Ngayon talagang kailangan kong gawin ng maraming mga kapangyarihan ng 3. Kaya kukunin ko na kopyahin i-paste ang lahat ng ang code na ito, baguhin ang pangalan ng pag-andar mula sa kapangyarihan ng 2 sa kapangyarihan ng 3, at lahat ng bagay magiging pareho maliban para sa halagang ito dito, hanay na ito, 1 ... 2. Kaya sa halip na paulit-ulit na ito loop dalawang beses, Gusto kong ulitin ito loop tatlong beses. Kaya binago ko lang na halaga mula sa 1 sa 3-- o sa halip 2-3. Kaya muli, ang parehong code, iyon ang tanging pagbabago. Ngayon ay gagana rin ito. Kapangyarihan ng 3 na ibinigay sa ilang mga halaga ng 2. Makakakuha tayo ng 8. Kaya 2 nakakubo. At 3.2 nakakubo ay 32.768. At sa ngayon kaya magandang, tama? Ngunit sana ay ito ay isang maliit na bit ng isang red-flag para sa iyo sa na mayroon kami ngayon ang ilang mga pag-duplicate ng code maliban para sa ilang mga napaka-menor de edad baguhin mula sa isa hanggang sa susunod. Kaya ay may ilang mga paraan na maaari naming magagawang gawing simple ang problemang ito, kung saan kami maaaring aktwal na, sa pagtakbo ng oras, malaman kung ilan, magbigay sa amin ng ilang mga pag-andar na may tumpak ang lakas ng gusto namin. At may ito ideya ng pagsasara, na kung saan ay talagang, talagang mahalaga sa konteksto ng Swift, at sa marami pang ibang mga wika. Ngunit marahil ay makikita mo ito ginamit nang higit pa kaya sa Swift dahil ito ay naka-embed sa loob ng wika kaysa sa iba pang ring modernong wika. Kaya ang ideya ng isang pagsasara ay ito, ay namin ay maaaring magkaroon ng isang function na ay sinadya upang maging isang generic na function, isang generic na kapangyarihan ng function. At ang function na ito ay pagpunta sa tanggapin ito exponent na kami talaga nais upang lumikha ng. Kaya halimbawa, ang pinakaunang Halimbawa, gusto namin ng kapangyarihan ng 2. Kaya gusto naming bigyan ng lakas ng at pagkatapos ay sa panaklong 2. At mapansin na ngayon kung ano ang ito talaga ay nagbabalik. Ito ay magtatagal ng isang input ng isang panimulang aklat sa pagbasa tinatawag na y iyon ay isang integer, at ito ay nagbalik ito mabaliw hinahanap bagay sa parentheses-- panaklong double at pagkatapos ay i-double arrow. Ano ang ibig sabihin nito ay na ako pagpunta upang magbalik ng function. Hindi ako bumabalik pang uri ng data, ako sa katunayan pagbabalik ng isang function na na may parameter na ito, na tumatanggap ng double bilang input at output ng double bilang isang halaga return. At bilang resulta, dahil ngayon, Tumawag ako kapangyarihan ng, pagpasa sa ilang mga halaga para sa y, at Lumilikha ako ng ito sa iba pang mga function-- notice na mayroong isa pang pag-andar na Nililikha sa loob ng this-- kung ano ang ako paggawa ay ang maaari kong pagkatapos ay baguhin na halaga, isa na halaga na aking ay nagbago 2-3, ngayon ginawa ito y. At ito ay nagpatuloy. Kaya sa bawat oras na tawagan ako kapangyarihan ng, mahalagang kung ano ang mangyayari ay na ako nagbalik ng isang function. Pansinin na dito na tinukoy mo ako isang bagong variable na tinatawag na parisukat. Na-set ko ito katumbas ng kapangyarihan ng, ibinigay ang halagang ito ng 2 hanggang kapangyarihan ng. At kung ano ito ay ibinalik na ang pag-andar. Kaya square, ang variable square, ay isa ng uri ng pag-andar na may this-- oops, mag-scroll up ng isang maliit bit-- na may lagda ito, tanggapin ang isang double at output ng isang double. Kaya ngayon kung ano gumawa ako ay na hindi ko talaga nilikha ng isang function na tinatawag na parisukat na tumatanggap ng anumang halaga at parisukat ito. Maaari naming makita kung ano ang mangyayari pababa dito. Square 3 halimbawa, ang ibig sabihin ako pupunta upang gawin ang mga halaga 3 at nakalapat ito. Kaya kung paano eksaktong ito gumagana? Kapag pumasa ako lakas ng 2-- kapag ako ay pumasa sa 2 ito kapangyarihan ng pag-andar, y variable na ito ay populated na may halaga na 2. At iyon ay isang uri ng gaganapin sa memorya. Na uri ng mga gustong gaganapin sa estado sa isang lugar sa computer, hindi namin talagang pakialam kung paano o kung saan sa puntong ito. Ngunit bumalik ako function na ito tinatawag na exponentiate. At muli, hindi ito talagang mahalaga kung ano ang function na ito ay tinatawag na, talaga maaari naming tumawag ito anumang bagay, na tumatanggap ng double at nagbabalik ng double, ngunit ginagamit ang halaga ng y sa loob nito. Kaya kahit na ito ay ang function na ito, ito exponentiater pag-andar na Na-ibinalik pabalik sa aking variable na tinatawag ko parisukat, ito ay nilalaman sa loob nito ito kuru-kuro ng kung ano ang y ay. At tinatandaan ito na. Kaya sa tuwing tawagan ko na function na ay tinatawag na ngayong square, ginagamit nito iyon. Ngunit nangangahulugan din ito na maaari ko lumikha ng isa pang variable na gamit sa ibang kapangyarihan ng. Kaya ang maaari kong lumikha ng isang kubo na variable, para sa Halimbawa, magbigay dito ng kapangyarihan ng 3. Ngayon kubo ay aktwal na tumagal ng ilang halaga at kubo na at ibalik ito. Upang maaari naming makita na nakukuha ko isang halaga 8 out sa na. Ngunit na halaga y ay hindi Binago dahil sila ginanap sa pag-uuri ng mga independiyenteng mga variable. Ang mga ito ay uri ng ginanap sa independiyenteng mga espasyo sa memory. Kaya kubo ay palaging mayroon x sa lakas ng 3. At parisukat ay palaging mayroon x sa lakas ng 2, na ay nangangahulugan na parisukat ay palaging parisukat na mga numero, tulad ng iyong inaasahan ko. At kubo ay palaging nakakubo mga numero, tulad ng iyong inaasahan ko. Ibig sabihin din nito na kung minsan maaari kang makakuha ng ilang mga uri ng funky naghahanap syntax kung saan mayroon kang lakas ng sa pinakadulo ibaba ng screen dito, lakas ng 5. At pumasa ka sa resulta. Tatawagan ka na pagpapaandar na Na-ibinalik na kasama ang numero 4. At kaya kung ano ang tunay na ito 4 sa ikalimang kapangyarihan, maaari naming makita ang mga resulta doon. Sa akin sa ngayon? Kaya sa ideya na ito ay tinatawag na isang pagsasara, dahil kung ano talaga naming ginagawa ay namin encapsulating into---uri-uriin ang ilang data ng nasasakupang ang data na ito sa isang function at nagpapaumanhin kami kawalan ng kakayahang muling gamitin ang function na ito. Ngayon ang syntax na ito bagaman maaari talaga ay pinasimple sa isang mahusay na halaga. At mayroong maraming mga posibilidad sa Swift para sa pagpapagaan. At iyon ang kung anong uri ng talagang tumingin kasunod na mga sa. Kaya sa 7b halimbawa, namin tumagal ito ng eksaktong parehong code. Ngunit ngayon kaysa sa talagang tukuyin ang isang function sa loob ng kapangyarihan ng gumana at bigyan ito ng isang pangalan, at pagkatapos ay bumalik sa pangalan ng na function, kung saan pagkatapos ay ginagamit bilang bahagi ng ito pagsasara, sa halip kami ay lamang ng pagpunta sa gawing simple ito. Hindi namin kailangan ang function na ito na may pangalang. Kaya ito ay ang konsepto ng isang -andar ng hindi nakikilalang kung saan pagkatapos ay maaari naming tanggapin bilang input, sa mga panaklong dito, x mga variable na ng uri ng double. Kami ay pagpunta sa ibalik ang uri ng double. At pagkatapos ay ang keyword, n, ay simula ng pag-andar na ito. Kaya mapapansin na ang lahat ng ito Nasa kulot bracket at kami ay pagtukoy sa isang anonymous na gumana dito. Lamang sa isang mas simpleng paraan ng pagtukoy sa eksaktong parehong bagay. OK? Ngunit hawakan, aktwal na nagbibigay-daan sa Swift sa amin upang pumunta sa karagdagang at padaliin ang kahit na higit pa, dahil talagang hindi namin mahalaga na ang parameter na ito ay pinangalanan anumang partikular na bagay. Talaga ito maaaring tinatawag anumang bagay at Maaari pa rin namin ang na unang parameter. Kaya sa katotohanan mayroong mga espesyal na ito uri ng data sa mga hindi kilalang mga pag-andar, may ito espesyal na pangalan ng mga variable sa mga hindi kilalang function na panimula sa ang dollar sign at kinakatawan ang mga numero parameter, zero -index, para sa function na ito. Kaya mayroong ilang mga bagay na nangyayari. Narito Pupunta ako sa bumalik, at pagkatapos ay isang kulot suhay na kumakatawan sa isang function, tama? Abiso na hindi ko inilarawan ang parameter uri o mga uri ng binalik. Talaga ito maaaring natukoy na dahil sa mga lagda ng orihinal na function. Kaya maaari naming alisin na bilang isang posibilidad. Ngunit din maaari kong gamitin dollar sign zero sa katawanin ang unang parameter na pumasa sa sa mga hindi kilalang function na ito. Kaya Pinasisimple ito kahit na higit pa. OK? Sa ngayon, kaya magandang? Ngayon, ito type-- gagawin mo tandaan ang pag-sign zero dolyar na nakita natin sa kulot suhay na nakita namin lamang ng ilang sandali ang nakalipas sa Swift anim na halimbawa? Ito ay dito mismo. Pansinin iyon mismo kung ano ang namin ang iyong tinitingnan, ay ang lumipas na namin sa hating-andar na ito isang hindi nakikilalang function na Sinusuri ng unang parameter upang makita kung ito ay katumbas ng simbolo ng colon. At iyon mismo kung ano ang nangyayari, ay ang lahat ng kami ay doing-- ang pagbabalik keyword ay ipinahiwatig sa case-- kami ay bumabalik ang halaga na ito kung saan kami ay naghahambing ang unang parameter laban ito ng character colon. At upang ang uri ng demystifies ito. At ka ng pagpunta upang makita na ito na bumuo ng Marami sa Swift syntax, kaya gawin panatilihing na sa isip kapag ikaw ay ng pagtingin sa ito. Ngayon ay maaari naming bumaba ang daang-bakal nang kaunti at pumunta talaga fancy na palabas kahit ilang higit pa sa kapangyarihan ni Swift. Maaaring mo ring makita ang ilang mga ng mga ito sa sample code. Kaya na ang dahilan kung bakit ako pupunta upang ipakita ito sa iyo. Talaga kung ano ang maaari naming gawin ay na, una ng lahat, ito ay uri ng walang kailangan para sa akin upang ipatupad ang lahat ng na lakas ng code dahil kung nag-import ka ng Darwin library, ang aktwal na kinabibilangan ng isang function tinatawag na yukod na ginagawa ito para sa iyo. Upang maaari namin itong gawing simple kahit na higit pa at mayroon na ngayong ang aming mga kapangyarihan up lamang maging isang kahanga-hangang isa Liner kung saan kami lamang bumalik ng hindi kilalang function na ito na Tinatanggap ng dollar sign 0 bilang nito base at y bilang simbolo nito. Ngunit maaari naming makakuha ng talagang, talagang magarbong kapag namin Napag-alaman na Swift ay may maraming kapangyarihan sa ilalim ng hood. Marami sa mga operator na kami ay pagharap sa, plus mga palatandaan at mga simbolo dibisyon at lahat ng mga bagay na sa karaniwan patakbuhin sa may mga uri ng data sa isang programming language, ay talagang extensible sa Swift. Kaya kung ano ang ibig sabihin sa na namin maaring tukuyin ng aming sariling mga operator. Kaya ngayon Ako pagod ng pagta-type sa lahat ng ito yukod at pagkatapos ay isang panaklong at pagkatapos ay ang base. Hindi ko nais upang gawin iyon. Talagang gusto kong magkaroon ng isang operator na nagbibigay-daan sa akin upang gawin iyon. Kaya ang maaari kong sabihin sa Swift na gusto ko upang lumikha ng isang operator, bituin star-- sa paraan kung hindi ko magamit ang karat dahil ang karat ay isang operator na ang ibang bagay lahat. Kaya hindi ko nais upang ayusin ng sumalungat sa iyon. At kaya kung ano ang makikita mo sa iba't-ibang ng wika, kabilang ang Python, ay tulad ng bituin bituin operator upang kumatawan exponents. Kaya iyon ang dahilan lamang kung bakit ginawa ko na iyon. At ito ay magiging isang uri ng itanim operator. At Mayroon akong upang magbigay ng dito ang ilang impormasyon tungkol sa karapatan sa pangunguna ng operator kaya kaliwa nag-uugnay. Ito ay tulad relatibong mataas na mangingibabaw kumpara sa kabuuan o pagpaparami. Ito ay mas mataas na mangingibabaw kaysa sa lahat ng mga iyon. Kaya sa at iba pa. At pagkatapos ay tukuyin ko ang -andar na aktwal na dictates kung ano ang ginagawa ang operator na ito. Kaya kung ipagpalagay na mayroon akong isang kaliwa bahagi at kanang bahagi, na kung saan ay marahil isang mas mahusay na variable na pangalan para sa. Kaliwang bahagi at kanang bahagi. Pagkatapos ay maaari ko ang kapangyarihan ng kaliwang bahagi sa kanang bahagi at ibalik ang halaga. Kaya ngayon ito ay sobrang matamis. Ang lahat ng mayroon kaming gawin ay 2 star star 3 at iyon ang 2 sa ikatlong kapangyarihan, at kumuha kami ng isang halaga ng 8. 2 star star 10 ay 2 sa Ika-10 kapangyarihan, makakakuha tayo ng 1024. Kaya ngayon ang aming kapangyarihan ng pag-andar, na muli ay iba, dahil ang buong ideya sa likod na ito ay mayroon kaming isang function na laging tumatagal ng ilang mga halaga at -multiply it-- o sa halip tumatagal ang exponent sa parehong kapangyarihan. Kaya ngayon na kahit simple. Kaya ngayon ito lang ang dollar -sign 0 star star y. Hindi namin kahit na kailangang gumamit ng yukod na ngayon. OK, kung sino ang mawawala? Sigurado namin ang paggawa OK? Ang anumang mga katanungan sa mga bagay-bagay na ito? Oo? Madla: Kapag you-- [hindi marinig] maging sobrang lungkot ang kapangyarihan ng y double. Kaya kapag bumabalik ka ng isang function. Daniel ARMENDARIZ: Maging sobrang lungkot kapangyarihan ng y double. Oh oo, hindi ko alam kung ano ang y mga numero. Paumanhin tungkol doon. Madla: Bakit mo bumabalik isang function [hindi marinig] enclosure. Ay hindi dolyar zero star star y [hindi marinig] makahanap ng operator na may na bumabalik double [hindi marinig]-double? Daniel ARMENDARIZ: Kaya hayaan sa akin sagutin ang iyong tanong paano Nauunawaan ko ito at maaari mong sabihin sa akin kung hindi ko naintindihan ang iyong tanong. Kaya ito bumuo, ang kulot suhay dollar sign zero star star y, ay isang katangian. At tinanggap ito ng parameter na na kinakatawan ng dollar sign sa zero. Ang pagbabalik keyword ay ipinahiwatig sa napaka-ikling, ang hindi kilalang syntax function. Na nangangahulugan na ang tunay kung ano na ito ay sinasabi ay na ako ng pagtukoy sa isang function-- at pagkatapos ay idedetalye ko tumawag lang ito something-- kung saan mayroon akong ilang mga halaga ng y. Mayroon akong y, na double. At ako pagbabalik ng isang double. At mayroon akong sa loob ng return na y-- ng paumanhin, Hindi dapat tinatawag ko ito y-- x. Oh mahal, oh mahal, oh mahal. X-- nope-- star star y. Kaya ito ay isa lamang pinasimple na bersyon ng ito. At kaya ang dahilan na mayroon akong dolyar -sign zero ay ang paggamit ng enclosure ay nangangahulugan na Wala na akong i-type ang yukod, o hindi na gawin Kailangan ko bang gumawa ng isang bagay tulad ng 3 star star 2. Maaari ko na lang ay isang solong function na tinatawag na parisukat iyon ay laging kumukuha ilang halaga bilang input at talagang bumalik sa plaza ng iyon. Kaya ang buong layunin ng pagsasara ay sa makatarungan uri ng encapsulate ang katotohanan na gusto ko laging gamitin y kailanman Tawagan ko na pag-andar bilang ang lakas kapag pagkuha ito exponent. Kaya bumabalik pagkatapos, isang function na ito ay tumatanggap double, kung saan ay ang base, at bumabalik na ang resulta ng na exponent ay ang susi dito. At iyon ang mga pangunahing pagkakaiba. Nagkaroon lamang ng kaunting isang umunlad. Ito ay hindi sa anumang ibang kumpara sa naunang mga halimbawa, ngunit ito ay lamang ng kaunting isang yumabong namin talaga lumikha ng isang operator sa Swift at talagang gawin mga bagay-bagay dito, na kung saan ay uri ng isang cool na bagay. Nasagot ba ako iyong katanungan? Sweet. Ano pa bago ilipat namin sa? OK. Ngayon ang ganitong uri ng begs ang tanong ay that-- na rin OK, ngayon kami ay ang kakayahan para sa mga function na ibabalik. Puwede ba kaming ring magpasa ng mga pag-andar tulad ng data o bilang ng mga parameter sa iba pang mga pag-andar? At sa katunayan ng aming makakaya. Kaya sabihin nating mayroon kaming lahat ng ang parehong code. Mayroon kaming mga parisukat na variable iyon ay parisukat ang code na ito. At mayroon kaming ang kubo na variable na Cube na mga data. At talagang namin nais na ilapat ang sa isang malawak na hanay ng mga numero. Kaya kung ano ang maaaring matukso naming gawin, siyempre, na tiyak na wasto, ay upang umulit sa ibabaw ang listahang ito ng mga numero at ilapat ang aking mga pag-andar square at kubo at kumuha ng dalawang bagong mga listahan ng mga resulta na ito ang orihinal na listahan nakalapat at nakakubo, ayon sa pagkakabanggit. Ganap na ganap katanggap-tanggap. Ngunit kung ano ang mga bagay na makikita natin dito ay na mayroon kami, muli, pag-duplicate ng aming mga code. At mayroong di kaya ng pagkakataon para sa amin upang gawing simple ito nang kaunti. Paano kung nagkaroon ng isang paraan para sa amin upang talagang laging umulit sa paglipas ng ilang mga listahan at pumasa lamang sa mahiwagang gumana sa isang variable na ay kumakatawan sa isang function na na nais naming mag-apply sa bawat solong item sa listahang ito. Dinadala ito ng hanggang ang konsepto ng kung ano ang ay tinatawag na mas mataas na mga pag-andar order. At iyon ay lubos kung ano na ito ay, ay maaari naming lumikha ng isang function. At sa kasong ito ito ay tinatawag na Mapper, upang bigyan lamang ito ng isang pangalan, tulad lamang pagma-map sa paglipas ng bawat solong item sa isang listahan. Saan kumuha ako ng isang listahan at gagawa ako ng function. At na function, siyempre, May ilang mga lagda. Tinanggap ito bilang isang parameter double at magpo ito output ay isang double. At ang buong resulta ng function na ito ay pagpunta upang maging isang bagong listahan na ng uri ng double. OK? At kung ano ang pupuntahan ko gawin ay upang ilapat ang function na ito f sa bawat elemento sa aking listahan. At reply-- at sa halip ibalik ang bagong listahan bilang isang resulta, na kung saan ay talagang cool. Ngayon ay maaari ba akong magpasa ng mga function sa paligid. At sa ideya na ito ng mas mataas na pagkakasunod-sunod mga function ay talagang mahalaga. At ito Mapper ay talagang lamang pagpapatupad ng mahinang tao ng isang function na ay binuo sa Swift tinatawag na mapa. At ito ang tiyak na ito, marahil kahit kaunti mas mahusay. Ito ay isa lamang uri ng isang generic, pinasimple na bersyon na Binibigyang-daan sa amin upang makita ang konsepto na naaangkop dito. Ngayon tingnan natin ang paraan na ako talaga Maaaring mag-apply ang aking mga parisukat at ang aking mga pag-andar kubo sa listahan ng mga numero. Patakbuhin ko ang aking Mapper. Magbigay kong ito ang aking listahan ng mga numero. Magbigay ako dito ang mga function na ang nangyayari mag-apply sa bawat isa sa mga indeks ng. At ito ay magiging output bilang isang resulta. At ang makukuha ko upang makita na ang nakalapat ko at nakakubo aking mga numero bilang isang resulta. At syempre ang Mapper ay magdadala anumang uri ng pag-andar ng hindi kilalang. Maaari rin naming makita na iyong nilikha ko ng isang bagong pag-andar ng hindi nakikilalang na lamang ay tumatagal ng ilang mga parameter at divides ito sa pamamagitan ng 2. At maaari naming makita na na hindi ko na, sa katunayan, hinati ang aking listahan sa pamamagitan ng 2 sa halip. Cool? Sa ngayon, kaya magandang? Ang lahat ng mga karapatan, ngayon sabihin bumalik sa ideyang ito. Ipatupad natin ang pabalik sa Hayaan konteksto ng isang gradebook. At kung gagawin ko iyon, maaari naming makita na maaari kong maglapat ng iba't ibang uri ng mga options-- o isang malawak na hanay ng mga mas mataas na mga pag-andar ng order upang aktwal na pasimplehin ang aking kakayahan upang gawin ang isang iba't-ibang mga bagay sa listahan ng mga numero. Kaya halimbawa, kung ako kumuha ng isang listahan ng mga numero, isa sa mga mas pag-andar ng order na umiiral ay tinatawag na bawasan. Ano bawasan ang ginagawa sa halip sa mapa, ay nabawasan habilin magsagawa ng dalawang mga elemento sa listahan, ay aabot ng ilang function na Inihahambing ang dalawang mga elemento ng listahan, at pagkatapos nito habilin uri ng output-- ang output ng pag-andar na Magiging isa pang elemento na sa iyo at pagkatapos ay ihambing sa iba. Kaya maaari mong gamitin ito upang aktwal na kabuuan ng mga numero sa iyong listahan. Halimbawa, kung mayroon kang isang listahan ng 1, 2, 3, 4, 5, Dadalhin ka sa unang elemento, 1 at 2. Maaari mong ilapat dito ang isang karagdagan function na tumatagal ng mga dalawang mga elemento at spits out sa isa sa mga elementong iyon, na kung saan ay magiging ang halaga 3. Pagkatapos ay dadalhin namin na halaga 3 sa mga susunod na elemento ng listahan, sabihin sa ilang mga dalawang, at pagkatapos ay panatilihin ang pagpunta pababa sa listahan. Kami ay pagbawas ng ilista sa isang solong halaga. At ito lang kaya ang mangyayari na ang mga simbolong plus ay isang operator, tulad ng nakita natin lamang. Operator na ito talagang isang function na May tiyak na ito listahan na namin gugustuhing, sa halip mga pag-aari na nais naming gusto. Kaya hinihikayat kitang tingnan ito. Gusto kong ayusin ng paglipat sa mula sa ilan sa ang code na ito sa gayon ay maaari talagang namin tingnan ang ilan aktwal, tunay, tunay Swift sa Xcode, sa iOS-unlad. Ngunit tumingin sa ito at tingnan kung maaari mong -parse sa pamamagitan ng kung ano ang nangyayari sa sa ilan sa mga mas mataas na pagkakasunod-sunod mga function kabilang ang filter, bawasan, at ikaw ay kahit na makita ang isang lugar sa mapa ang dito pati na rin. Ito ay dito mismo. Saan ang aabutin ng pagkakasunud-sunod ng mga grado at ito habilin talaga -map ang mga ito gamit ang switch bumuo, kung saan maaari mong makilala mula sa C, pero sa totoo ito ay isang maraming higit pa makapangyarihan kaysa sa switch na bumuo ng mayroon kaming sa C. At ilalapat namin na sa bawat elemento sa listahan at talagang magbigay ang titik grado ng bawat ng mga grado paggamit ng lahat ng mga konsepto na lang na usapan natin ang tungkol sa bago. Ngayon tumabi para lang ipaalam minuto at talk tungkol sa structs. At kaya structs ang paghihintay sa C na namin nagawang tukuyin ang isang bagong uri ng data. Umiiral Structs sa loob Swift. At kaya gawin ng maraming iba pang mga constructs tinatawag na enums at mga klase, na talagang kumuha ng ideyang ito sa isang buong iba't ibang mga antas. At isa lamang ito ay lamang ng isang paraan ng pagtukoy sa isang bagong uri ng data. Kaya kung get-- sa iyo kung dumating ka sa kabuuan ng klase o structs o enums, hindi makakuha ng nalilito sa pamamagitan ng ito. Ito ay sa paraan ng pagtukoy ilang bagong mga partikular na uri ng data. At ito ay talagang mahalaga kapag kami ay pakikipag-usap tungkol sa pag-unlad iOS app dahil ang lahat ng bagay na Umiiral na sa loob ng iOS app ay mahalagang isang bagay ng ilang mga uri. At ang isang bagay ay isa lamang klase o isang enum o isang struct. Kaya sa kasong ito ako ay pagtukoy sa isang bagong uri ng data na ako sa pagtawag pagtatasa na ang ilang mga katangian, kabilang ang isang pangalan at isang pagkakasunod-sunod ng mga grado. Kaya isang uri ng pagtatasa na maaaring mayroon ako sa isip ay magiging mga pagsusulit, halimbawa. Gusto ko nais na magkaroon ng isang pagtatasa na ay isang pagsusulit at nagkaroon ng iba't-ibang mga marka ng na nauugnay sa na, para sa pagsusulit isa, pagsusulit ng dalawang, kaya sa at iba pa. O maaari ba akong magkaroon ng ibang uri ng pagtatasa para sa mga hanay ng problema. At maaari ba akong gumawa ng mga bagay. Maaari ko talagang magkaroon mga pag-andar sa loob ng ganitong uri ng data, na kung saan ay tinatawag na ngayong mga pamamaraan. Kaya kung sakaling makita mo ang pamamaraan ng salita, ito talaga lamang ng isang function na naaangkop sa isang napaka-tukoy na klase, o sa isang napaka-tukoy na uri ng data. Pinapayagan nito sa amin na baguhin ang data sa loob. Kaya sa ibang salita, kapag gusto kong magdagdag ng grado sa aking mga pagtasa, pagkatapos ang lahat ng kailangan kong gawin ay Ikabit ang iskor na pag-input upang ang function na ito upang ang aking panloob na ari-arian. May isa pang kapong baka magtayo dito sa Swift, na ang tuldok tuldok tuldok operator, na nangangahulugan na ang mga puntos sa makakaya ngayon tumatanggap ng anumang bilang ng mga integer. At mga marka ay magiging isang hanay ng mga integer na Na-ipasa sa aking mga pag-andar, na ay nangangahulugan na maaari kong gawin mga bagay-bagay na tulad nito. Maaari ko magdagdag ng mga grado at magbigay lamang arbitrary na numero ng integer sa ito at talagang ipagkakaloob isang array ng mga halagang iyon sa aking mga pag-andar o sa aking mga paraan, tulad ng kaso. Ngayon ito ay mahalaga dahil lahat ng bagay sa Xcode, ang lahat sa iOS, ay sa katunayan isang bagay. Kaya panatilihin na sa isip kapag pumutok namin bukas Xcode at lumaktaw nang higit pa sa iOS mga bersyon ng dalawa at tatlong at talagang pumunta sa sa bersyon apat. At muli, ang lahat ng mga ito habilin -post sa pahina ng seminar. iOS apat ay isang uri ng isang buong tinatangay ng hangin pagpapatupad ng isang napaka-basic na app. At kung ano ang app na ito ang ginagawa ito naglo-load ng UI, na kamukha ito. Muli, kung i-click namin sa storyboard ng aming makakaya makita na ito ay kung ano ang mukhang. Ito ang UI. Ito ay may titulo sa itaas napaka. Tinatawag ko na ito sa web gallery. Sa gitna may isang elemento tinatawag na view ng imahe UI. At sa ibaba mayroong isang toolbar na may isang solong pindutan na May stretchy mga puwang na nagbibigay-daan ito sa center sa gitna ng toolbar. At ano ang mangyayari ay na kapag ito naglo-load nagda-download ito ng JSON file na na nakapaloob sa isang server sa ibang lugar, Pina-parse ng JSON na file, at kamukha ng JSON file ng kaunti tulad nito. Tinitingnan ng JSON file na katulad nito. May ito ay. Ito ay isang pangalan ng album at ito ay isang hanay ng mga larawan. Ang bawat isa sa mga larawan May pangalan at din isang URL ang kanilang mga sarili na kumakatawan sa jpeg bersyon ng mga indibidwal na larawan. Kaya kung ano ang mangyayari ay na kapag ang program na ito naglo-load, nagda-download ito sa JSON na file, Pina-parse nito, naglalagay ang lahat ng ito sa ang katumbas ng isang array sa iOS pagbuo ng app, na kung saan ay isang nsarray. At pagkatapos ay ako Maaaring i-load ang data na ito sa isang application at i-load ito sa aking screen. May isang imahe na ni-load may button sa ibaba napaka. Kung nag-click ako Kumuha Susunod na Imahe, ito pagkatapos pulls na imahe mula sa internet at pumapalit na imahe sa view ng imahe ng UI. Kaya maaari mong i-download ito at talagang tingnan ito sa iyong computer. At magtayo ito at talagang mag-compile ito sa iyong device. Ngunit mahalagang proseso noon ay ito, lumikha ng storyboard-- o sa halip hindi create-- ngunit piliin ang storyboard. At talagang we'll-- kung hindi mo mind-- isasaalang-alang namin lang ng ilang mga segundo upang aktwal na maipakita sa iyo kung paano tapos na ito. Upang masiguro paano namin magagawa talaga makamit ito ay ginawa nang kaunti higit pa maliwanag. Tingnan ang application Single, ako pagpunta sa tumawag ito pantas-aral apat na kumakatawan ito partikular na numero. I-save ito sa desktop. OK, pagpunta sa mag-click sa storyboard. At kung ano ang pupuntahan ko gawin ay upang mahanap ang aking mga view ng imahe, i-drag ito papunta sa aking gumagamit interface at sentro ito. Ngayon lang pagsasentro ito sa kasamaang-palad Hindi pagpunta sa gawin marami, maliban sa isang screen na ito eksaktong laki. Kaya maaari naming kumbinsihin ang ating sarili ng mga na sa pamamagitan ng pag-click sa double lupon bagay, nagdadala down na ito pop up menu dito at pagbabago upang i-preview, kung saan namin idedetalye talaga makakuha ng isang pagkakataon upang i-preview kung paano na ito ay talagang tumingin sa iba pang mga device. Tulad ng maaari naming makita, hindi namin kahit na makita ito sa partikular na kasong ito. Kaya Pupunta ako upang isara ito sa ngayon. At ako pupunta upang piliin ang icon na ito pababa sa pinakadulo ilalim na bahagi ng screen. Sinasabi nito Lutasin ang Isyu Auto Layout. Paumanhin, ito ay cut off sa ibaba. Ngunit kung nag-click ako sa na, kung ano ang aking makakuha ay ang pop up-- pumunta ang layo. Ano ang nakukuha ko ay ang mga pop up na ay nagbibigay-daan sa akin upang magdagdag ng mga nawawalang mga hadlang. At sa pamamagitan ng paggawa na ito Pagkatapos ay isang uri ng lock ito sa gitna na bahagi ng screen tulad ko maaaring asahan. Ngayon upang makakuha ng ang pindutan na ito sa tuktok ng ito, kailangan ko upang pumunta sa Editor. Pumunta sa I-embed Sa at pag-click Kontroler Navigation. Ano na ang gagawin ay na magdagdag ito buong iba pang mga bahagi nito, ngunit ito ang aktwal na link ito pabalik sa aking orihinal na UI. At ang mga detalye, muli, hindi namin talagang kailangan upang pangalagaan ang tungkol sa ngayon. Ngunit ko nais upang magkaroon ng isang toolbar sa ibaba napaka. Kaya makikita check ko Mga Palabas Toolbar. At ito ay nagbibigay sa loob ng aking view, na kung saan ay sa ibang lugar ngayon, maaari naming makita ito na naka-link sa paglipas dito. Nagbibigay ito ngayon ng toolbar sa ibaba ng aking UI. Kaya ngayon, sa halip ng pagpili ng isang view ng imahe, maaari ko mahahanap ang isang label, o sa halip ng isang toolbar-- tingnan natin, kung saan ay na? Ano ay tinatawag na ito? Ang isang button-- item bar-- item-- sorry-- bar item na pindutan. Gumawa ng mapa na mayroong at ilapat ang ilang ng kakayahang umangkop na mga puwang sa magkabilang panig upang aktwal na nakasentro na iyon. Kaya ngayon Lumikha ako ng aking UI, talaga. At maaari kong bigyan ito ng isang pangalan sa pamamagitan ng double click sa itaas na napaka dito at sinasabi gallery ng web at iba pa. Ngayon muli, ang mga ito ay mga elemento na umiiral sa pamamagitan ng kanilang mga sarili. At Mayroon akong upang kumonekta mga ito sa aking code na Ang maaari kong gawin sa pamamagitan ng pagdadala muli up ito double icon na bilog, pagbabago mula sa preview. Aling, sa pamamagitan ng ang paraan, ngayon, maaari naming makita ang mabuti nakasentro at ang magiging hitsura ng mahusay sa iba't ibang mga aparato. Lumipat sa awtomatikong, na ilabas ang ViewController code. At ngayon bahaging ito ay mahalaga. Sa order para sa iyo upang ikonekta ang mga ang dalawang mga elemento, ang iyong code sa UI, piliin mo ang item na Nais mo bang kumonekta. Kaya sa kasong ito, kami talagang gusto upang i-encode baguhin ang imahe na nakapaloob sa loob ng view ng imahe UI. Kaya kung kinokontrol mo click mula sa ang view ng imahe at i-drag, mapapansin mo na kang makakuha ng isang maliit na bar, kapag hayaan kang pumunta ang lahat ng ito pop up na magaganap. At sinasabi nito na kami ay lumikha ng isang koneksyon. At mula dito Gusto kong bigyan ito ng isang pangalan, isang bagay tulad ng gallery. Pindutin ang Enter. At ito talaga ay nagbibigay ng variable na tinatawag na isang gallery na ang maaari kong pagkatapos ay sumangguni sa aking code upang baguhin ang imahe, halimbawa. Kaya kung paano na code aktwal na hitsura ay? Well muli, hindi ko nais na gumastos ng masyadong maraming oras sa ito. At hinihikayat kitang i-download ito at tingnan. Ngunit isa sa mga pinaka mahalagang aspeto ay ang code na aktwal na kinukuha ng isang imahe. Kaya sa kasong ito Gusto kong upang makakuha sa loob ng aking mga larawan array, na nakapaloob sa loob ng aking klase. Gusto kong tukuyin ang pangalan at URL na hindi parse out ng JSON. Sa totoo lang tanungin ang aparato upang makuha ang URL, kunin ang URL mula ito, at pagkatapos ay kunin ang data mula sa ang mga nilalaman ng URL na iyon. Pagkatapos ay i-convert ang data na iyon sa isang larawan sa pamamagitan ng pagpasa ito sa imahe UI. Kaya muli, ang mga ito ay ang lahat ng iba't ibang uri ng mga bagay, iba't ibang uri ng mga klase. At pagkatapos ay ako maaaring pagkatapos ay itakda ang aking gallery.image katumbas na data. At iyon ang uri ng mga karne nito na talagang ay pagkatapos magagawang baguhin ang pagbabago ng data from-- larawan mula sa isa sa susunod. Kaya muli, sana ay ngayon Marami ang constructs ay gumawa ng isang maliit na kaunti pang kahulugan. Pansinin na mayroong ilan tandang padamdam dito. Ang tandang padamdam ay lubos na may kaugnayan sa optionals. Ano talaga ako sinasabi ay na walang kahit pagsuri upang makita kung mayroong data sa loob ng opsyonal, Pupunta ako sa sige at angkinin na mayroong at mag-alis ng balot nito. Tandaan na ang ginamit namin ang pagkakatulad ng uri ng isang pakete para sa optionals at kailangan naming mag-alis ng balot ang package at hilahin ang data. Ang tandang padamdam pwersa na aktwal na mangyayari. Ngunit alam ko na ito ay ligtas dahil Sinuri ko upang makita kung ang data ng imahe ay katumbas sa kawalan, talagang ako tingnan upang makita kung opsyonal ay, sa katunayan, ang nabigo. Kung mayroon na, sa katunayan, nabigo pa. At kaya ako sigurado na sa sandaling nakuha ko sa ito point ang maaari kong ligtas na maalis ang balot na data. Maaari mo ring makita ito sa sa anyo ng isang tandang pananong. Kaya kung mag-scroll namin pababa sa kung saan ako kailangan upang aktwal na i-parse ang data. Kaya huwag ilagay off sa pamamagitan ng mga uri ng mahahabang pangalan. Maaari mong mahanap sa Apple site ng nag-develop ng maraming ng mga sanggunian sa lahat ng mga bagay at lahat ng mga proseso na aktwal na gawin itong posible. Ngunit mapansin na ito ay mahalagang isang function kung saan ako pumasa ito ng ilang data. At kumuha ako pabalik uri ng data. At kailangan kong gamitin ito bilang keyword sa -convert ito sa nsdictionary ito? Alin ang muli, isang opsyonal nsdictionary. Aling Kailangan ko pagkatapos ay sa suriin upang makita kung ito ay umiiral na. Kaya ang maaari kong gamitin na kung ipaalam matagumpay equals parse, pagkatapos ay alam ko na iyon opsyonal talaga ay naglalaman ng ilang data. O kung ano ang ginawa ko dito ay ipinapalagay lamang na kapag mayroong ay walang mga error na ito ay sa katunayan safe. Ang lahat ng mga karapatan, gusto kong pasalamatan mo ang lahat talaga para sa darating na. Alam ko na ito ay marami, ngunit ito ay lamang ng isang oras makipag-usap tungkol sa ilang Kahanga-advanced na mga bagay-bagay. At kaya sana makakakuha ka ng pagkakataon upang i-download ang lahat ng mga code at maglaan ng mas mahusay, higit pa masusing pagtingin sa ito. Pagsunud-sunurin ng kumbinsihin ang iyong sarili ng lahat ng ng mga bagay-bagay na nangyayari sa. At gusto ko upang pasalamatan ka lahat, muli, para sa darating na. At good luck sa iyong huling proyekto. Mayroon ba kayong dakilang araw.