[Zenelejátszási] DAN AMRMENDARIZ: Mindenki, Üdvözöljük a CS50 szeminárium, iOS App Fejlesztési Swift. Én vagyok Dan Armendariz, és én vagyok tanító a számítógép-tudomány itt a Harvardon. És a következő órában lesz a forgószél túra annyi cuccot erről a témáról, mint mi elfér. Én is hozzászólok összes forráskód hogy látni fogja a mai napon az interneten. Lehet, hogy nem lesz képes valóban megy át mindent hogy én vagyok, hogy én vagyok amely megmutatja, ebben az órában. De legalább remélhetőleg keresztül A hozzászólások a forráskód, Ön képes lesz arra, hogy megpróbálja kitalálni, mit Pontosan történik azokért a dolgokért, hogy nem elég eljutni. Összességében, a szerkezet a mai vita lesz a következő. Kezdjük ki csinál néhány alapvető szintaxis a Swift nyelv, megy néhány fejlettebb szintaxis a Swift nyelven. Mert a nyelv valóban modern és van egy csomó magas szintű jellemzők, amikkel nem látott C-szerte CS50, vagy még néhány más nyelveken hogy már megkezdődött használja a CS50, mint a PHP, így fogom meg kell próbálnunk bevezetésére is néhány téma, hogy kapcsolódnak a magasabb szintű nyelvek hogy nem lehet látni a mélység CS50, de látni fogja a későbbi számítástechnika osztályok. Szóval ez lesz a tömje óra. És ne habozzon hadd tudom, ha bármilyen kérdése van. Tehát, ha érdekel ennek során fejlesztés Swift, vagy tényleg minden iOS app fejlesztés, van egy pár a követelményeknek. Először is, meg kell használni Mac, fut a példák hogy mi lesz használva ma, egy viszonylag új verzióját OS X. Ebben az esetben az X fut 10.5. Akkor fut 10.11, ha akarod. De mindent, hogy meg fogsz lásd bevonja Xcode 7 és újabb, amely a legújabb verzió A Swift, ami Swift 2.0. Ez valójában egy nagyon Fontos különbséget. Sok a szintaxis területén megváltozott elég jelentősen néhány esetben ettől Swift 1.0, amely tavaly jelent meg, Swift 2.0, amely most jött ki idén ősszel. Mi is így fogjuk mutatni Swift 2.0. Egy csomó olyan dolog, hogy keres online ha akarsz, hogy további információkat a különböző dolgokat, érdemes lehet kifejezetten keresni Swift 2 ahelyett, hogy csak a jó öreg Swift, hogy arról, hogy Önnek a szintaxis helyes. Tény, hogy ez általában igaz. Van egy gyors mennyiségű fejlesztési történik a Swift nyelven Amióta az Apple kiadta, azt hiszem, mi, ez már egy kicsit több mint egy éve Most. És minden megváltozott drámaian abban az időben. És így nem lehet csalódott ha, ha éppen nézett körül A téma a Swift, vagy hogyan kell elérni valami segítségével néhány példa kód vagy valami, hogy nem ténylegesen munkát Swift 2.0. Győződjön meg arról, mit keres a kifejezetten erre a változat hogy megpróbálja minimalizálni hatása a különböző változatok és azok a dolgok. Megpróbálom kiemelni csak néhány dolog, amelyek különböznek a régebbi verziók. De ez valami, hogy néz ki. Ez valószínűleg lesz az egyik legnagyobb fejfájást hogy lesz a Swift megtalálása Például kódot, ami a régebbi, akár csak néhány hónap, akarják használni ez a modern projektet. És ez egyszerűen nem működik. Kezdesz fordító hibákat, szintaxis hibák, mindenféle őrült dolgot. Szóval, csak légy türelmes ezt, és remélhetőleg Van egy nagyon szép élmény Swift összességében. Most már tényleg join-- és remélem, mi még mindig van ez ebben year-- CS 50-es Apple app fejlesztőcsapat, amely lehetővé teszi, hogy telepíteni alkalmazásokat amely létrehozza az iOS eszközök. Szóval vessünk egy pillantást az alábbi URL-ha érdekli, hogy ezt tegyük. Szóval csak egy pár dolog Swift magát. Ez egy összeállított nyelvet. De látni fogja, hogy bizonyos jellemzője, hogy az általunk használt Ügyeljünk arra, hogy használni is egy kicsit mint egy értelmezhető módon is. Sok a szintaxis kölcsönzött C. Ez alapján és a C nyelven írt És így majd meglátjuk, hogy van egy csomó elvitelre a meglévő ismeretek ettől C, hogy tudjuk port Swift. De vannak dolgok, hogy nagyon különbözik a C. Ez nagyon erősen típusos. Van automatikus memória kezelése. Ugye nem kell majd használja malloc vagy ingyenes bárhol. Úgy tervezték, az általánosság. Más szóval, akkor azt mindenféle kontextusban, az Apple Watch iPhone egészen a OS X, és még néhány szerverek, még néhány script. De majd meglátjuk, hogy a támogatja a script Nem igazán van még, mint ez más nyelveken. Tehát valószínűleg fel fog használni ez kizárólag a fejlesztési a Mac vagy az iPhone. És van egy csomó modern funkciókat. És sok ilyen dolog dolog, hogy fogjuk próbálni, hogy kezelni tudja a jelenlegi, hanem a téma, hogy őszintén, tudjuk szentelni egész tanfolyamok. Tény, hogy a CS 51, amely a felajánlotta a következő félévben, összpontosít sokat ezekről a témákról hogy az alábbiakban ismertetjük. Szóval lehet tölteni egy egész szemesztert megértjük ezeket a dolgokat. De megyünk próbálni hogy rajtuk keresztül legalább elég, hogy Megértem, mi folyik, ha megnézed egy Swift programot és képesnek kell lennie csapkod az utat rajta keresztül a végleges projekt. Most az egyik legjobb módja, hogy tudsz további kiegészítő információkat kaphat ezen a őszintén szólva csak az Apple előírt dokumentáció Swift. Van egy csomó API-k hogy rendelkezésre állnak. És ez egy jó kiindulópont legyen Ön keresni, konkrét dolog, amit akarok egy API bevonásával iOS. Ha szeretné használni a kamerát Például, akkor elkezd keres itt, és azt is használja a Google és a Stack Túlfolyó a szokásos módon. Kapcsolatos kérdéseket a következő mielőtt ugrani? Minden rendben. Menjünk tovább. Tehát először, van egy számú példa fájlokat. És én fogom próbálni, hogy lemond rajtuk keresztül viszonylag gyorsan. Ez a Hello World fájl Swift. Ez nagyon egyszerű. Van út több hozzászólás mint ahány tényleges kódot. Figyeljük meg a tényleges kód van a legalján on line 14. Azt mondja, print. És akkor ez egy függvényhívás. Mi megy bele a karakterlánc úgynevezett Helló CS50. Figyeljük meg, hogy nincs pontosvessző. Figyeljük meg, hogy nincs int main. Itt nem a cruft, hogy mi volt a C Amikor mi használ Swift ezen a módon, amely most írt egy szöveges fájlt és tárolni a számítógépen, majd Tudom, hogy elkészítse és futtatni. Figyeljük meg, hogy itt vagyok, nem használja a CS50 IDE. Ez azt feltételezi, hogy én vagyok fut, és hogy én vagyok az OS X, és hogy én Xcode már telepítve Ezen a gépen ahhoz, hogy ez hogy ténylegesen funkciót. De ez csak egy normál szöveges fájl hogy tudunk majd össze és szerkesztheti. Nézzük, hogy ez hogyan is működik. Mit tegyünk, ha az összeállításhoz? swiftc 1.swift. Miután egy-két pillanat, hogy látni fogja, hogy mi most összeállított ezt figyelembe nevű fájlt 1. És most már kinyomtatott mi CS50, a Hello World alkalmazása helyett. Figyeljük meg egy másik dolog is, mint valamint az, hogy alapértelmezés szerint, mi nem kell bevinnie A / N nyomtatni egy új sort. Alapértelmezésben a nyomtatási funkció Swift kiírja egy új sort az Ön számára. Akkor át egy opcionális kiegészítő paramétert, hogy mondja el, hogy ne erre. De a Google több információt, hogy. Alapértelmezésben fog tenni a nyomtatási sort. Rendben, menjünk tovább majd néhány más dolog. Tehát hogyan tudjuk valójában megadott változók? Tehetünk ez a két módszer egyikével. És az egyik, hogy azt akarom mondani, mintegy első ez let meghatározását. És ez fontos mert hatékonyan mit csinálunk a meghatározó állandó. Fogunk egy változó, vagy inkább állandó nevű nevet, biztosítani kell, hogy néhány data-- a Ebben az esetben, a húr Dan. De ezzel a let kulcsszó, mondjuk hogy ez változó-- vagy újra constant-- úgynevezett név nem is fog változtatni kell. Ez lesz megváltoztathatatlan egész időtartamának ez a program vagy az egész időtartama összefüggésben hogy a változó elérhető. Ez nagyon fontos, hogy amikor Van néhány adat, amely nem változni fog a programban, és látni fogod a különböző példák mikor akarjuk használni hagyja a másikkal szemben szintaxist, ezért fontos, hogy használd Amikor csak lehetséges, mert ez nem értesíti A nyelv, hogy Nem fog változni, és ez ténylegesen elvégzi Sok optimalizáció hogy javítsa a sebesség és biztonsága érdekében a programban. És a biztonság alatt azt értem, nem hagyja, ez összeomlás őrült hibákat hogy mi lehet megszokta, hogy a C. Akkor tudjuk használni karakterlánc interpoláció hogy magukba ez egy húr. Tehát láthatjuk, ebben a nyomtatási sort, nyomtassa hello, majd a backslash nyitott parens, majd a neve a változó, ebben az esetben állandó, zárja be a zárójelet. Én alapvetően majd üzembe a tartalmát a változó nevű név belül a húr, majd nyomtatás eredménye van. Van még egy változás, hogy ezt a fájlt ami az, hogy én, az egyik legfontosabb, valósult meg a kocsma vonal, amely alapvetően csak pontosítja hogy szeretném használni a Swift értelmező, amely azt jelenti, hogy már nem kell lefordítani ezt a különleges programot. Én is csak futtatni, mint a saját forgatókönyvet. De ez, ebben az esetben, mögött A színfalak összegyűjtötték, és majd futtat. Ez csak láthatatlanok számunkra. Rendben, menjünk tovább. Szóval van egy kis trükk hogy csak előtt történt. Megmutattam, hogy én meghatározhatják állandó. És tudtam, hogy bizonyos adatokat kell csinálni. De ebben az esetben, észre, hogy én nem ténylegesen meghatározza, hogy milyen típusú adatok ez az. És ez azért van, mert a fordító, SWIFT következtetni, hogy milyen típusú adatok alapján csak az adatokra, hogy tettem bele. Mert tudja, hogy értékeli ezt változó itt, ez az adat jobb Itt, mert tudja, hogy ez egy húr. És így ez az állandó nevet tehát lesz egy string is. De mi is lehet explicit a típus, ami fogunk használni konstans vagy változó segítségével ezt a szintaxist instead-- hadd nevét kettőspont karakterlánc megegyezik Dan, ami ebben az esetben azt jelenti vagyunk fogja meghatározni állandó nevű nevét. Ez lesz a String. És az értéke lesz Dan. Most a másik irányba, hogy mi is létrehozhatunk variables-- és ezek változékony változók, amelyek azt jelenti, hogy mi, sőt, megy megváltoztatni azok tartalmát valamikor időtartamának összefüggésben hogy ez a változó defined-- vagyunk Használja a var kulcsszó helyett hadd. De ismétlem, alapértelmezés szerint, ha nem tudod, hogy meg kell manipulálni az adatokat, próbálja használni hagyja a teljesítmény növekedéssel. Ebben az esetben, tudok majd adja meg, milyen adatok hogy elvárjuk, hogy belül a Az új változó nevű címkét. Ez lesz a húr. És mi lesz akkor összefűzni két húr együtt, a húr hello, és a húr által képviselt változó, vagy inkább a konstans neve. Szóval ez jó, mert ez némileg PHP, mint az, hogy mi nagyon könnyen szövegösszefűzés. Nem kell, hogy automatikusan Használja bármiféle memória kezelése méretének növelése és do bármilyen furcsa dolog van. Ez úgy működik, ahogy azt az elemzők. Rendben, bármilyen kérdése ezzel kapcsolatban? Most a másik oka annak, hogy szükségünk van a képesség, hogy képes legyen meghatározni, mit típusú adatok változók azért van, mert néha nem szeretnénk, hogy a változók inicializálása Néhány adat a pont meghatározása. Tehát ebben az esetben, mondjuk hogy szeretnék kezdeni megadásával néhány osztályt egy fokozatú könyvet. Hát én tudom, hogy az egyik változók, hogy én akarok lenni lesz egy változékony minőségű. És azt is tudjuk, hogy mi szeretné, hogy legyen egy egész szám. De talán még nem Van, hogy a kategória áll rendelkezésre. Ebben Swift, meg kell meghatározzák az adatok típusa társított egy változó vagy állandó legyen Mielőtt ténylegesen használni, hogy a változó. Mivel erősen típusos, meg kell társítani típusú ezekkel a változókkal. Tehát ebben az esetben, ha már nem megfelelően inicializált az első néhány érték, akkor azt kell mondanom, hogy mit Swift Elvárom az adatok típusát, hogy legyen. És ez meg fog maradni Ugyanezen adatok típusa története során ez a program. Most lehet, hogy a kísértés, amint Én hoztam létre ezt fokozatú változó és feltéve, hogy az értéke 100, ha most szeretném kipróbálni, hogy összefűzni A karakterlánc, hogy egész, Csábító lehet még használni hogy sztring: mint mi, csak egy pár sort, mielőtt. De sajnos, ez ténylegesen nem dolgozni, mert te Lényegében teljesítő egy művelet két különböző típusú. Most ez nagyon különbözik a többi nyelvek, mint a PHP, amelyek igazán Loosey goosey azok a fajta típusok. Olyanok, mint, igen, bármi, engem nem érdekel. Adj egy típusa, és talán majd a helyes dolgot. Ebben az esetben, Swift a rendkívül szigorú a típusok hogy van dolga. Ez összegzése üzemeltető vagy operátor lényegében egy pár különböző lehetséges opciókat. Meg tudod csinálni összegzése egész számokkal, vagy tehetünk szövegösszefűzés, és talán néhány más dolgot is. De ha ez a vállalkozó nem ismeri mi mindkét oldalán úgy, vagy inkább a kombináció az említett Két típusú, nem az, ami már várja, akkor ez lesz a meghibásodást okozhat. Tehát ebben az esetben, mit jelent hogy egy húr, plusz egy egész szám? Nos összefüggésben ezt, érdemes hogy nem egy szövegösszefűzés működését. De természetesen a számítógép Nincsenek hogy a fajta összefüggésben. És így meg kell, hogy hogy kiegészítő információkat hogy tudassa, mit az, hogy meg akarjuk csinálni. Más szóval, az a tény, hogy a SWIFT erősen típusos azt jelenti, hogy nem egy kis kiegészítő munka hogy ez hogy működik a módja, amit szeretne. De az eredmény, ez biztonságosabb. És ha már megteszi véve az ilyen típusú, dolgok csak őszintén indul hogy a munka elég jól. Tehát ebben az esetben, mi majd lenne végre szövegösszefűzés által kifejezetten öntés Az egész egy húr a csomagolás is ebben a tőke S sztring függvény, majd az szövegösszefűzés üzemeltetőt, hogy módosítsa a kiadónk változó, majd nyomtassa ki. Eddig jó? Rendben, menjünk tovább. Most van a különböző adatok típusok, hogy tudjuk használni a Swift. Ahogy már megszokták, mi is létrehozhatunk egy változékony tömb. És ez elrendezés csak tartalmaz egyetlen típusát. Tehát ebben az esetben, megyünk létrehozni mutable tömbök egész számok, amelyek fogjuk hívni a kategóriák, és képesek leszünk tárolni, hogy ebben a szögletes zárójel formátum ahogy már megszokta hogy a különböző más nyelveken. De észre, hogy itt vagyunk meghatározó egy-két dolgot. évfolyamon egy változékony változó-- mi nem használja az let kulcsszó. Szóval ez azt jelenti, hogy majd módosítani tartalmának ezt a tömböt. Ez a típus Array Int, és meg tudjuk mondani, hogy ezek alapján a szögletes zárójelben van. Most az egyik szép dolgokat ez, hogy mi van, hogy egy csomó további információ a tömb csak használ Néhány egyszerű dot jelöléssel. Így például, grades.count nyújt nekünk a tételek számát, hogy létezik, hogy tömb, ahol tudunk majd elérni, elég egyszerűen csak használ, hogy pont jelöléssel. Ha azt szeretnénk, hogy adjunk további adatokat ehhez a tömb, Ön nem tud a PHP stílusban ahol csak kifejezetten meg kell határozni, egy adott index, néhány érték hogy a beszúrni kívánt. Ehelyett használja az append módszer a tömb típus hozzáfűzni, hogy a tétel, 95, ehhez a listához. Tehát most ez a tömb a következő contents-- 100, 0, 90, 85. És most már csatolt 95, hogy is. Vannak más módon tudunk hozzáfűzni dolgokat. Ténylegesen használni egy összegzése üzemeltető, amely kell értelmezni, mint tömb append műveletet. És akkor majd fűzze a másik tömb, amelynek tartalma 70 és 80, az, hogy a tömb. Tehát most már a tartalmát ebben a változó grades-- 100, 0, 90, 85, 95, 70, és 80. Ez csak egy szép kis szintaktikai cukor Swift biztosít számunkra. Tehát ha azt akarjuk összefoglalni a évfolyamon, vagy talán mi szeretne majd ismételget mint minden tétel ebben a hurok. És mi van, a Swift, az elképzelés, A for ciklus, ahogy az elvárható. De az is, hogy jelezzük, egy sor némileg eltérő. Tehát ebben az esetben, hogy Összefoglalva mindent, akkor fog létrehozni egy ideiglenes nevű változó összeget, hogy a számunkra hogy fenntartsák ezt a száma. És észre mi az loop építkezés itt. Mert index 0 ..