[Muzikos grojimo] DAN AMRMENDARIZ: Kiekvienas, Sveiki atvykę į CS50 seminare, iOS Programos plėtros su Swift. Aš Danas Armendariz, ir aš auklėtojas kompiuterių mokslo čia Harvarde. Ir kitą valandą bus whirlwind kelionė, kaip daug dalykų apie šią temą, kaip mes gali tilpti. Aš po visų kodo kad jūs pamatysite šiandien internete. Mes gali nepavykti iš tikrųjų eiti virš visko kad aš, kad aš parodyti jums šiame valandą. Bet bent jau tikiuosi per Dėl kodo komentarai, Galėsite pabandyti išsiaiškinti, kas tiksliai vyksta už tų dalykų, kad mes ne visai gauti. Apskritai struktūra šiandien aptarimas bus taip. Pradėsime iš darote kai pagrindinė sintaksė su Swift kalba vyksta į kai kurias sudėtingesnes sintaksė Swift kalba. Kadangi kalba yra tikrai modernus ir ją turi aukšto lygio daug funkcijos, dalykų, kad mes ne matyti C visoje CS50 arba Net kai kitų kalbų kad mes pradėjome vartoti CS50 kaip PHP, todėl aš einu bandyti pristatyti taip pat kai temas, yra susiję su aukštesnio lygio kalbomis kad jūs negalite matyti gylio CS50, bet jūs pamatysite vėliau kompiuterių mokslo klasės. Taigi jis ketina būti sandariai supakuotas valandą. Ir prašome nedvejodami praneškite man žinoti, jei turite kokių nors klausimų. Taigi, jei jus domina daro plėtrą su SWIFT, ar tikrai bet iOS app plėtra, yra daug reikalavimų pora. Pirmiausia, jūs turite būti naudojant Mac, veikia pavyzdžiuose kad mes ketiname naudoti šiandien, palyginti nauja versija OS X. Tokiu atveju Bėgu X 10.5. Galite būti paleista 10.11, jei norite. Tačiau viskas, kad jūs ketinate pamatyti, yra įtraukti Xcode 7, o vėliau kuris turi naujausią versiją SWIFT, kuris yra SWIFT 2.0. Tai iš tikrųjų yra gana svarbus skirtumas. A sintaksė daug turi pasikeitė gana ženkliai kai kuriais atvejais iš SWIFT 1.0 kuris buvo išleistas pernai, SWIFT 2.0, kuri tiesiog išėjo šį rudenį. Taigi mes ketiname parodyti Swift 2.0. Keletas dalykų daug, kad jums ieškoti internete kai bandote gauti papildomos Informacija apie įvairių dalykų, jums gali tekti aiškiai ieškoti Swift 2 o ne tiesiog senas Swift padaryti Įsitikinkite, kad jūs gaunate sintaksė teisinga. Iš tiesų, tai paprastai yra teisinga. Yra greitas suma plėtros vyksta Swift kalba bet kada, nes "Apple" išleido jį, manau, ką, tai buvo šiek tiek daugiau nei metus dabar. Ir viskas pasikeitė smarkiai tuo metu. Ir todėl nereikia būti nusivylė jeigu, jūs dairausi temų Swift arba kaip pasiekti kažkas naudojant kai kuriuos pavyzdinius kodą ar kažkas, kad ne realiai dirbti Swift 2.0. Įsitikinkite, kad jūs ieškote specialiai tam versija bandyti sumažinti poveikį skirtingi versijos ir tų dalykų rūšių. Bandysiu atkreipti dėmesį tik kai kuriuos dalykus kad yra skirtingi, kad vyresnio amžiaus versijas. Bet tai ką saugotis. Tai tikriausiai bus vienas iš didžiausių galvos skausmų kad jūs turite su Swift yra rasti pavyzdys kodas, kuris yra vyresnis, net tik iki kelių mėnesių, bando naudoti tai jūsų modernesnio projektą. Ir tai tiesiog neveikia. Jūs gaunate kompiliatoriaus klaidų, sintaksės klaidų, visi crazy stuff rūšių. Taigi tiesiog būkite kantrūs su , kad ir jūs, tikiuosi, turi gana gražią patirtį su Swift apskritai. Dabar jūs iš tikrųjų galite join-- ir aš tikiuosi, mes iš tikrųjų vis dar turi šią šį šarvuotuose CS 50 obuolys App plėtros komanda, kuri leis jums įdiegti jokių programų, kuris jums sukurti savo "iOS" įrenginius. Taigi imtis šiame URL, jei išvaizdą Jus domina daryti. Taigi tik porą dalykų apie save SWIFT. Jis yra sudarytas kalba. Bet jūs pamatysite, kad kai kurie iš funkcijų, kad mes naudojame kad ji galėtų būti naudojama taip pat šiek tiek kaip aiškinama būdas, taip pat. A sintaksė daug pasiskolinta iš C. Jis grindžiamas ir parašyta C Ir todėl mes matome, kad yra daug takeaways daug iš savo turimas žinias iš C, kad mes galime uosto Swift. Tačiau yra dalykų, kurie kad ji labai skiriasi nuo C Jis labai stipriai įvedėte. Yra automatinis atminties valdymas. Jūs neprisijungęs teks naudoti malloc arba nemokamai bet kurioje vietoje. Jis sukurtas bendrumo. Taigi, kitaip tariant, jūs galite naudoti ją Visi kontekstuose rūšių, iš Apple Žiūrėti iPhone visą kelią iki OS X, ir net kai kurie serveriai, net kai skriptų. Bet mes matome, kad parama scenarijus yra ne visai ten dar kaip ji yra ir kitomis kalbomis. Taigi, greičiausiai jums bus naudojant tai tik vystymosi ant jūsų Mac arba jūsų iPhone. Ir tai turi modernių funkcijų daug. Ir iš šių dalykų yra dalykų, kad mes ketiname išbandyti šiandien spręsti, bet ir mūsų temos, tiesą sakant, mes galime skirti visą kursus. Iš tiesų, CS 51, kuris yra pasiūlė kitą pusmetį, dėmesys dėl šių temų daug kad yra aprašyti žemiau. Taigi jūs galite praleisti visą semestrą suprasti šiuos dalykus. Tačiau mes ketiname pabandyti gauti per juos bent pakankamai, kad jums gali suprasti, kas yra vyksta, kai jūs žiūrite ne Swift programos ir galės nulaužti savo kelią per jį per galutinį projektą. Dabar vienas iš geriausių būdų, kad galite gauti papildomos informacijos apie tai yra atvirai tik per Apple pateikė dokumentus dėl SWIFT. Yra API daug , kurie yra prieinami. Ir tai yra geras namų vieta Jums ieškoti, konkrečių dalykų, kad jūs norite daryti su API dalyvavo iOS. Jei norite naudoti fotoaparatą Pavyzdžiui, galite pradėti ieškoti čia ir taip pat naudoti "Google" ir kamino Perpildyta kaip tai darytumėte įprastai. Bet apie tai klausimai kol mes pereiti teisę? Gerai. Pereikime. Taigi, pirmiausia, turiu Taškų pavyzdžiui failus. Ir aš ruošiuosi pabandyti žingsnis per juos gana greitai. Tai Hello World failą Swift. Tai labai paprasta. Yra būdas daugiau komentarų nei yra tikrasis kodas. Atkreipkite dėmesį, tikrasis kodas yra pačioje apačioje eilutėje 14. Ji sako spausdinti. Ir tada tai skambinimo funkcijos. Mes artimųjų į tai eilutė vadinama Hello CS50. Atkreipkite dėmesį, kad ten nėra kabliataškiai. Atkreipkite dėmesį, kad nėra int main. Yra nė vienas iš cruft, kad mes turėjome su C. Kai mes naudojame Swift šiuo būdu, kuris yra tiesiog parašyta tekstinį failą ir saugomi mano kompiuteryje, tada Galiu rinkti ją ir paleisti jį. Atkreipkite dėmesį, kad čia aš nenaudojate CS50 IDE. Tai reiškia, kad aš esu veikia ir kad aš ant OS X, ir kad aš Xcode jau įdiegta šiame kompiuteryje Kad ši faktiškai funkcija. Bet tai tiesiog normalus tekstinis failas kad mes galime tada surinkti ir redaguoti. Taigi pažiūrėkime, kaip tai iš tiesų veikia. Ką daryti, jei norite kompiliuoti tai? swiftc 1.swift. Po metu ar du, tai pamatysite, kad mes turime dabar surinkti į failą pavadinimu 1 tai. Ir dabar mes turime spausdinami mūsų CS50, Mūsų Hello World taikymas o. Atkreipkite dėmesį, vienas kitas dalykas, kaip gerai yra tai, kad pagal nutylėjimą, mes neturėjome įvesti A / N spausdinti naują eilutę. Numatyta, kad spausdinimo funkcija Swift bus atspausdinti naują eilutę jums. Galite pereiti neprivaloma papildoma parametras pasakyti, to nedaryti. Tačiau "Google" daugiau informacijos apie tai. Pagal nutylėjimą, jis darys spausdinimo liniją. Visos teisės, todėl galime pereiti tada kai kurių kitų dalykų. Taigi, kaip mes galime iš tikrųjų apibrėžia kintamuosius? Mes galime padaryti, tai naudojantis vienas iš dviejų metodų. Ir vienas, kad aš noriu jums pasakyti apie pirmą tai tegul apibrėžimas. Ir tai yra svarbu, nes efektyviai ką mes darome yra apibrėžti konstantą. Mes ketiname sukurti kintamąjį, ar veikiau nuolatinis vadinamas vardas teikti jai kai kurie data-- šiuo atveju, eilutė Danas. Tačiau naudojant šį let raktažodžių, mes sakome, kad tai variable-- arba vėl constant-- vadinamas pavadinimas niekada būti pakeistas. Tai bus nekintamas per visą šios programos trukmė arba visoje trukmė kontekste kad kintamasis yra prieinama. Tai tikrai svarbu, kad kai turite kokių nors duomenų, kurie nėra ketina keisti savo programą, ir pamatysite keletą pavyzdžių įvairovė kai norime naudoti tegul, palyginti su kitų sintaksės, svarbu, kad jūs naudojate tegul kur įmanoma, nes šio notifikuotų kalba, kad jis yra nesiruošia būti pakeistas, ir ji iš tikrųjų gali atlikti iš optimizavimas daug siekiant pagerinti greitį ir Jūsų programos sauga. Ir saugai, aš turiu galvoje ne tegul jis avarijos su beprotiškų klaidų kad būtume pripratęs prie C Tada mes galime naudoti string interpoliacija hermetyzacji tai per eilutę. Taigi matome, šiame Spausdinti linija, spausdinti Sveiki, ir tada naudojant backslash atviras skliaustai, ir tada mano kintamojo vardas, šiuo atveju konstanta, uždaryti skliausteliuose. Aš iš esmės tada išleidimą turinys Šis kintamasis vadinamas vardu viduje eilutę ir tada spausdinti rezultatas ten. Yra vienas kitas pakeitimas į šį failą kuris yra tai, kad aš, pačiame viršuje, įdėti į Szulernia linija, kuri iš esmės tik nurodo, kad aš noriu naudoti Swift vertėjas, kuris reiškia, kad aš nebeturi kaupia šią konkrečią programą. Galiu tiesiog paleisti jį kaip savo scenarijų. Tačiau tai yra, šiuo atveju, už scenos yra kaupiami ir tada vadovauja. Tai tiesiog nematomas mums. Gerai, tad judėti. Taigi ten yra gudrybė tiek kad tik atsitiko anksčiau. Aš jums parodžiau, kad aš gali apibrėžti konstantą. Ir aš galėtų suteikti tam tikrus duomenis tai padaryti. Tačiau šiuo atveju, pastebėsite, kad aš ne iš tikrųjų nurodyti duomenų tipą , kad jis yra. Ir tai dėl to, kad kompiliatorius Swift gali išvadą, jog duomenų tipą tik remiantis dėl duomenų, kad aš įdėti į jį. Nes jis žino, kad vertinant tai kintamasis čia, šie duomenys teisė čia, tai žino, kad ji yra eilutė. Ir taip ši konstanta vardas todėl bus eilutę taip pat. Bet mes taip pat gali būti aiškiai apie tipą, kuris manimi mes ketiname naudoti konstantos arba kintamieji naudojant šį sintaksė instead-- tegul vardas dvitaškis Styginių lygus Danas, kuris šiuo atveju reiškia, kad mes esame ketina nustatyti pastovų vadinamas vardą. Tai bus tipo eilutę. Ir vertė bus Danas. Dabar kitas būdas, kad mes galime sukurti variables-- ir tai yra permainingas kintamieji, kurie tai reiškia, kad mes esame, iš tiesų, vyksta pakeisti jų turinį kažkada atsižvelgiant į aplinkybes trukmę kad kintamasis defined-- mes naudoti var raktažodį vietoj tegul. Bet vėl, pagal nutylėjimą, jei žinote, kad jums reikia manipuliuoti, kad duomenys, pabandykite naudoti tegul už efektyvumu. Šiuo atveju, galiu tada nurodyti duomenų tipą kad mes tikimės, kad viduje Šis naujas kintamasis vadinamas etiketė. Tai bus įtemptas. Ir mes ketiname tada Jungiant dvi eilutes kartu, styginių Sveiki, ir styginių atstovavo šiuo kintamasis, ar veikiau nuolatinis pavadinimą. Taigi tai yra gražus, nes tai yra šiek tiek PHP kaip ir kad mes labai lengvai simbolių eilučių sujungimas. Mes neturi automatiškai naudoti bet atminties valdymas rūšiuoti padidinti dydį ir daryti bet juokingas dalykų ten rūšiuoti. Tai veikia, kaip mes iš tikrųjų tikėtis. Gerai, kokių nors klausimų apie tai? Dabar kita priežastis, dėl kurios mes turime jums turėti galimybę gebėti apibrėžti, kas Duomenų tipas kintamųjų yra yra todėl, kad kartais mes darome ne nori inicijuoti kintamieji su kai tuo duomenimis taškas apibrėžimą. Taigi šiuo atveju, tarkim kad aš noriu pradėti įvedusi kai į A klasės knygą rūšių. Na aš žinoti, kad vienas iš kintamieji, kad aš noriu būti ketina būti permainingas laipsnio. Ir mes taip pat žinome, kad noriu, kad ji būtų sveikas. Bet gal mes dar turite, kad kokybės nėra. Swift, turite apibrėžti duomenų tipą , kuris yra susietas su kintamasis arba tegul pastovi Prieš jūs iš tikrųjų galite naudoti, kad kintamasis. Kadangi ji yra labai įvedėte, jūs turite susieti tipas šių kintamųjų. Taigi šiuo atveju, jei aš netinkamai inicijuoti pirmasis su kai verte, tada man reikia pasakyti, kas Swift Tikiuosi, kad duomenų tipas turi būti. Ir jis ketina likti ta pati duomenų tipas visoje šios programos istoriją. Dabar jums gali būti linkusios kuo greičiau Aš sukūriau šią klasę kintamasis ir tai yra sąlyga, sveikasis skaičius 100, o dabar, jei aš noriu pabandyti Jungiant eilutė su tuo sveikasis skaičius, gali būti linkusios vis dar naudoja kad simbolių eilučių sujungimas operatorius kaip mes padarėme tik keletą eilučių anksčiau. Bet deja, Tai bus tikrai ne dirbti, nes jūs esate iš esmės atlikti on dviejų skirtingų tipų operacija. Dabar tai yra labai skiriasi nuo kitos kalbos, kaip PHP, kurie tikrai loosey Kvailys su savo rūšies tipus. Jie tiesiog patinka, taip, kas, man tai nerūpi. Tiesiog duok man vieną tipą ir gal aš daryti teisingus dalykus. Šiuo atveju, Swift labai griežta apie tipus kad jums yra susijusios su. Tai sumuojant operatorius arba sujungimas operatorius turi esmės yra pora įvairių galimų alternatyvų. Jūs galite tai padaryti sumavimo su skaičiais, arba gali padaryti simbolių eilučių sujungimas ir galbūt kai kiti daiktai, taip pat. Bet jei tas operatorius nepripažįsta kas yra ant abiejų jo pusėje, ar veikiau tų funkcijų deriniui dviejų tipų, yra ne tai, ką ji laukiasi, tada jis ketina sukelti gedimą. Taigi šiuo atveju, ką tai reiškia turėti eilutę plius sveikasis skaičius? Na kontekste tai, mes tikriausiai nori padaryti simbolių eilučių sujungimas veikimą. Bet, žinoma, kompiuteris neturi tokios konteksto rūšiuoti. Ir todėl mes turime teikti papildoma informacija tegul jis žino, kas tai yra tai, kad mes norime daryti. Taigi, kitaip tariant, dėl to, kad SWIFT yra stipriai įvedėte reiškia, kad jūs turite padaryti šiek tiek papildomo darbo gauti jį eksploatuoti būdas, kad jūs norėtumėte. Bet, kaip rezultatas, jis yra saugesnis. Ir kai jūs turite imtis į šiuos tipus, dalykai tiesiog atvirai pradėti dirbti gana gerai. Taigi, šiuo atveju, mes tada būtų atlikti simbolių eilučių sujungimas , aiškiai liejimo į eilutę sveikasis skaičius vyniojimo šiame kapitalo S Styginių funkcija, ir tada naudojant simbolių eilučių sujungimas operatorius keisti mūsų etiketės kintamasis, ir tada atsispausdinti. Kol kas viskas gerai? Gerai, pereikime. Dabar yra įvairius duomenis tipai, mes galime naudoti SWIFT. Kaip jūs jau įprato, mes galime sukurti permainingas masyvo. Ir tai masyvas gali tik būti vienas tipą. Taigi šiuo atveju, mes ketiname sukurti a permainingas matricos sveikieji skaičiai, kurie mes vadiname pažymius, ir mes galėsime saugoti, kad šioje kvadratinį kronšteino formatas, kaip jūs įpratę į kitų kalbų įvairovė. Tačiau pastebite, kad čia mes apibrėžti keletą dalykų. rūšių yra permainingas variable-- mes ne naudoti tegul raktinį žodį. Taigi tai reiškia, kad mes galime tada pakeisti šio masyvo turinys. Tai tipo Array Žiniasklaida, ir mes galime pasakyti, kad remiantis šiais laužtiniuose skliaustuose čia. Dabar vienas iš gražumynai apie tai, kad mes turi prieigą prie daug Papildoma informacija apie masyvo tik naudojant kai paprastas taškas notacija. Taigi, pavyzdžiui, grades.count suteikia mums vienetų skaičius, kad egzistuoja, kad masyvas, kurį mes galime tada prieiti gana lengvai tiesiog naudojant tą dot notacijos. Jei norite pridėti papildomą elementus į šio masyvo, jūs negalite padaryti PHP stilius kur jūs tiesiog aiškiai apibrėžti, bent tam tikro indekso, kai vertė kad norite įterpti. Vietoj to, naudokite APPEND metodas masyvo tipo pridėti šį elementą, 95, prie šio sąrašo. Taigi, dabar šis masyvas turi šias contents-- 100, 0, 90, 85. Ir dabar mes pridėti 95, kad taip pat. Yra ir kitų būdų mes galime pridėti dalykų. Jūs iš tikrųjų galite naudoti sumuojant operatorius, kuris bus aiškinama kaip masyvas Papildyti operacija. Ir tada galite pridėti kitą masyvas, kurio turinys yra 70 ir 80, to masyvo. Taigi dabar mes turime turinys Šiame kintamajame grades-- 100, 0, 90, 85, 95, 70, ir 80. Tai tik gražus sintaksinis cukraus, kad SWIFT teikia mums. Taigi, jei norime, kad susumuotų rūšių, mes galbūt ketinate norite pakartoti per kiekvieną šio ciklo dienos. Ir mes turime, Swift, sąvoka iš už linijos, kaip būtų galima tikėtis. Bet taip, kad mes rodo intervalas yra šiek tiek kitoks. Taigi, šiuo atveju, siekiant Apibendrinant viską, mes ketina sukurti laikinas kintamasis vadinamas suma tam, kad mus išlaikyti šią skaičius. Ir pastebėsite mūsų For kilpa statybos čia. Dėl indekso 0 ..