[Prehrávanie hudby] DAN AMRMENDARIZ: Každý, vitajte na CS50 seminár, iOS App Development s Swift. Som Dan Armendariz, a ja som učiteľ informatiky tu na Harvarde. A ďalšie hodina bude víchrica prehliadka toľko vecí o tejto téme, ako sme sa vojde. Budem sa po celý zdrojového kódu že budete vidieť online ešte dnes. Mohli by sme neboli schopní skutočne ísť nad všetkým že som, že som ukáže vám v tejto hodine. Ale aspoň dúfam, že prostredníctvom pripomienky zdrojového kódu, budete môcť pokúsiť sa zistiť, čo presne sa deje na tie veci že nemáme dosť dostať. Celkovo možno povedať, štruktúra dnešná diskusia bude nasledujúci. Začneme sa robiť niektoré základné syntax s jazykom Swift, ísť do niektorej z viacerých pokročilých Syntaxe Swift jazyka. Vzhľadom k tomu, jazyka je naozaj moderné a to má veľa vysokej úrovni rysy, veci, ktoré máme nie je vidieť na C v celej CS50, alebo Dokonca aj niektoré iné jazyky že sme začali použitie v CS50 ako je PHP, takže budem musieť pokúsiť zaviedli aj niektoré témy, ktoré sú vztiahnuté k jazykoch vyššej úrovne že nemusíte vidieť do hĺbky v CS50, ale uvidíte neskôr počítačovej vedy triedy. Takže to Bude to zhutnenie hodinu. A prosím, neváhajte ma nechať vedieť, ak máte nejaké otázky. Takže ak máte záujem v tom rozvoja s Swift, alebo naozaj akýkoľvek iOS pre vývoj aplikácií, existuje niekoľko požiadaviek. Po prvé, musíte používať Mac, bežiaci v príkladoch že budeme používať dnes, relatívne nová verzia operačného systému X. V tomto prípade, bežím X 10.5. Môžete byť spustený 10.11, ak chcete. Ale všetko, čo budete pozri zapája Xcode 7 a novšie, ktorý má najnovšiu verziu Swift, ktorý je swift 2,0. To je vlastne celkom dôležitý rozdiel. Veľa syntaxe má zmenilo docela významne v niektorých prípadoch od Swift 1.0, ktorý bol prepustený v minulom roku, na Swift 2.0, ktorý práve vyšiel tento rok na jeseň. Takže ideme ukázať Swift 2.0. Veľa vecí, ktoré hľadáte pre online keď sa snažíte dostať ďalšie informácie o rôznych vecí, možno budete chcieť explicitne vyhľadávať Swift 2 skôr než len obyčajný starý Swift, aby sa uistil, že dostanete syntaxe správna. V skutočnosti je tento všeobecne platí. K dispozícii je rýchly množstvo vývoja deje v Swift jazyku Od tej doby Apple to prepustený, myslím, čo, je to už niečo cez rok teraz. A veci sa zmenili dramaticky v tom čase. A tak nebuďte frustrovaní ak, keď ste rozhliadať pre tém na Swift alebo ako dosiahnuť niečo, pomocou niektoré príklad kódu alebo niečo, že to tak nie je skutočne pracujú na Swift 2.0. Uistite sa, že ste hľadali špeciálne pre túto verziu pokúsiť sa minimalizovať efekty rôznych verzie a tie druhy vecí. Budem sa snažiť poukázať len niektoré veci ktoré sa budú líšiť, aby staršie verzie. Ale je to niečo, čo si dať pozor. To asi bude jeden z najväčších bolestí hlavy že budete mať s Swift je zistenie, príklad kódu, ktorý je starší, aj len o pár mesiacov, sa snaží používať to v modernejšom projektu. A to jednoducho nefunguje. Začínaš chyby kompilátora, syntax Chyby, všetky druhy bláznivé veci. Takže jednoducho byť pacient s že, a dúfajme, že budete majú celkom pekné zážitky s Swift celkovo. Teraz môžete skutočne join-- a ja dúfam, sme vlastne ešte This rok-- CS 50 je Apple app vývojový tím, ktorý vám umožní inštalovať žiadne aplikácie ktorý vytvoríte na vašich zariadeniach so systémom iOS. Takže sa pozrieť na túto adresu URL, ak máte záujem o tom, že. Takže len pár veci, o Swift sám. Jedná sa o zostavený jazyk. Ale uvidíte, že niektoré z funkcií, ktoré používame tomu, aby mohla byť použitá aj v trochu ako interpretovaný spôsobom rovnako. Mnoho syntax je požičal z C. Je založený a napísaný v jazyku C. A tak sme sa vidieť, že existuje veľa takeaways z vašich súčasných znalostí z C, ktorý môžeme port Swift. Ale sú tu veci, ktoré robiť to veľmi odlišné od C Je to veľmi silne zadali. K dispozícii je automatická správa pamäte. Nebudete musieť používať malloc alebo zadarmo kdekoľvek. Je určený pre univerzálnosti. Takže inými slovami, môžete ho použiť v najrôznejších kontextoch a situáciách, od Apple Watch iPhone celú cestu až do OS X, a dokonca aj niektoré servery, dokonca aj niektoré skriptovanie. Ale uvidíme, že podpora pre skriptovanie nie je tam ešte dosť as to je v iných jazykoch. Takže s najväčšou pravdepodobnosťou budete používať to výhradne pre rozvoj na počítači Mac alebo iPhone. A to má veľa moderných prvkov. A mnoho z týchto vecí sú veci, ktoré budeme sa snažiť riešiť dnes, ale aj naše témy, ktoré úprimne povedané, môžeme venovať celé kurzy. V skutočnosti, CS 51, ktorý je ponúkol ďalšie semester, sa zameriava veľa na týchto témach , Ktoré sú popísané nižšie. Takže môžete stráviť celý semester pochopenie týchto vecí. Ale budeme sa snažiť dostať cez ne aspoň tak, že vás môže pochopiť, čo je deje, keď sa pozriete na Swift programu a musí byť schopný zaseknúť svoju cestu cez to pre finálnu projekt. Teraz jeden z najlepších spôsobov, ktoré môžete získať ďalšie informácie na túto tému je úprimne povedané práve prostredníctvom Apple za predpokladu, dokumentáciu k Swift. Je tu veľa API ktoré sú k dispozícii. A to je dobrá domáca základňa pre vás hľadať, konkrétne veci, ktoré chcete urobiť s API zahŕňajúce iOS. Ak chcete používať fotoaparát príklad, môžete začať hľadať tu, a tiež používajú Google a Stack Overflow, ako by ste normálne. Akékoľvek otázky týkajúce sa tejto predtým, než sme sa skočiť priamo? Dobre. Poďme ďalej. Takže najprv, mám Počet napríklad súborov. A budem sa snažiť do kroku cez ne relatívne rýchlo. Toto je súbor Ahojte všetci pre Swift. Je to veľmi jednoduché. Je tu oveľa viac komentáre ako existujú konkrétne kód. Všimnite si, že skutočná kódu je na samom dne na riadku 14. To hovorí, že tlač. A potom je to volanie funkcie. Sme prechádzať do nej Reťazec s názvom Ahoj CS50. Všimnite si, že je žiadne bodkočiarkami. Všimnite si, že nie je int main. Je tu žiadny z Cruft, že sme mali s C. Keď sme pomocou Swift týmto spôsobom, ktorý je práve napísal v textovom súbore a uložené na mojom počítači, potom Môžem skompilovať a spustiť ho. Všimnite si, že tu nie som nepoužívate CS50 IDE. To predpokladá, že som beh a že som na OS X, a že som Xcode už nainštalovaný Na tomto stroji, aby pre tento skutočne funkciu. Ale to je len normálne textový súbor že sa potom môžeme zostaviť a upravovať. Tak uvidíme, ako to vlastne funguje. Čo keď chcem, aby to kompiláciu? swiftc 1.swift. Po chvíľke alebo dvoch, to uvidí, že máme teraz zostavil toto do súboru s názvom 1. A teraz sme tlačený našu CS50, naše Hello World aplikácie trochu. Všimnite si jednu vec ako dobre, je, že v predvolenom nastavení, sme nemali zadávať a / n vytlačiť nový riadok. Štandardne je funkcia v tlači Swift vytlačí novú linku pre vás. Môžete odovzdať fakultatívny doplnková Parameter to povedať, že tak neurobí. Ale Google pre viac informácií o to. V predvolenom nastavení, bude to robiť tlačovú linku. Dobre, tak poďme ďalej potom sa na niektoré iné. Tak ako môžeme vlastne definovať premenné? Môžeme si robiť, že je to za použitia jednej z dvoch metód. A ten, ktorý chcem vám povedať, o Prvým z nich je táto definícia rokov. A to je dôležité pretože účinne to, čo robíme, je definovanie konštantu. Chystáme sa vytvoriť premennú, alebo skôr konštantný s názvom názov, poskytovať k nej niektoré data-- v Tento prípad, reťazec Dan. Ale pomocou tohto ROKOV kľúčových slov, hovoríme že tento proměnná-- alebo Znovu constant-- nazvaný meno je nikdy byť zmenený. Je to bude nemenná po celú dobu doba trvania tohto programu alebo po celú dobu trvanie kontextu že táto premenná je k dispozícii. To je veľmi dôležité, že keď máte nejaké dáta, ktoré nie sú sa zmení vo vašom programe, a uvidíte celý rad príkladov o tom, kedy chceme použiť nechať proti druhej syntaxe je dôležité, aby ste používali nechať všade tam, kde je to možné, pretože to prináša informácie jazyk, ktorý je nebude zmenený, a môže v skutočnosti vykonať veľa optimalizáciou zlepšiť rýchlosť a bezpečnosť vášho programu. A bezpečnosť, myslím nenechám že havárie s bláznivými chybami že by sme mohli byť zvyknutí vídať v C. Potom môžeme použiť reťazec interpolácie zapouzdřit to v reťazci. Takže môžeme vidieť v tom print linka, tlač ahoj, a potom pomocou spätného lomky otvorených parens, a potom meno môjho premenné, v tomto prípade konštantný, zatvorte zátvoriek. Ja som v podstate potom dosadení Obsah tejto premennej s názvom meno vnútri reťazca a potom tlač tam výsledok. Je tu ešte jedna ďalšie zmeny tohto súboru čo je to, čo mám, na samom vrchole, dal do shebang líniu, ktorá v podstate len špecifikuje že chcem použiť Swift interpret, ktorý Znamená to, že som sa už nemusí zostaviť tento konkrétny program. Môžem len spustiť ho ako jeho vlastného scenára. Ale to je v tomto prípade, za scény zhromažďuje a potom spustený. Je to len na nás neviditeľná. Dobre, tak poďme ďalej. Takže tam to trochu podvodu že sa práve stalo predtým. Ukázal som ti, že mohli definovať konštantu. A ja som mohol poskytnúť niektoré údaje na to. Ale v tomto prípade, si všimnite, že som to neurobil v skutočnosti určiť typ dát že to je. A to preto, že kompilátor, Swift môže odvodiť typ dát len ​​na základe Na základe údajov, ktoré som do neho. Pretože vie, že na základe vyhodnotenia tejto variabilný tu, tieto dáta vpravo tú, to vie, že je reťazec. A tak táto konštanta meno teda bude reťazec rovnako. Ale môžeme byť aj explicitné o type, ktorý je budeme používať pre konštanty alebo premenné pomocou tejto syntaxe instead-- nech názov hrubého čreva String rovná Dan, čo v tomto prípade znamená, že sme bude definovať konštantný názvom meno. Bude to byť typu String. A hodnota bude Dan. Teraz na druhú stranu, ktoré môžeme vytvoriť variables-- a to sú meniteľné premenné, ktoré znamená, že sú v skutočnosti deje zmeniť ich obsah niekedy v trvaní kontexte že táto premenná je defined-- my pomocou kľúčového slova var miesto prenájmu. Ale opäť, v predvolenom nastavení, ak neviete, že je potrebné manipulovať, že dáta, skúste použiť nechať pre zlepšenie výkonu. V tomto prípade, môžem potom špecifikovať typ dát že očakávame, že budeme vo vnútri táto nová premenná s názvom štítok. Bude to byť reťazec. A budeme sa spojíte dva reťazce dohromady, reťazec ahoj, a reťazec predstavovaná variabilné, alebo skôr konštantný názov. Takže to je pekné, pretože to je trochu PHP ako v tej my majú veľmi jednoduché reťazenie reťazcov. Nemáme automaticky použiť ľubovoľný druh pamäťového riadenie zväčšiť veľkosť a robiť nejaký druh smiešnych vecí tam. To funguje ako by sme vlastne očakávať. Dobre, nejaké otázky o tom myslíte? Teraz sa ďalší dôvod, prečo potrebujeme, budete mať možnosť aby bolo možné definovať, čo typ dátových premenných Je to preto, niekedy nie Chcete inicializovať premenné s niektorými dát na bod definície. Takže v tomto prípade, povedzme že chcem začať zadanie Niektoré stupňa do úrovňovej knihu. No ja viem, že jedným z premenné, ktoré chcem byť sa chystá byť premenlivý stupeň. A vieme tiež, že my chcem, aby to bolo celé číslo. Ale možno my doteraz majú, že stupeň k dispozícii. V Swift, musíte definovať typ dát ktorý je spojený s premenná alebo nechať na konštantnej Ako môžete skutočne použiť túto premennú. Vzhľadom k tomu, že je silne napísaný, budete musieť pripojiť typ s týmito premennými. Takže v tomto prípade, ak som správne inicializovaná najprv s nejakú hodnotu, potom musím povedať, čo Swift Očakávam, že typ dát byť. A to bude aj naďalej že rovnaký typ dát v celej histórii tohto programu. Teraz môžete byť v pokušení, akonáhle Vytvoril som tento stupeň premennú a ak ju má celé číslo 100, teraz, ak I chcete skúsiť zřetězit reťazec s týmto celé číslo, by mohol byť v pokušení aj naďalej používať že prevádzkovateľ reťazec zreťazenie ako sme to urobili len pár riadkov predtým. Ale bohužiaľ, Tým sa vlastne nie je pracovať, pretože ste v podstate vykonáva operácie na dvoch rôznych typov. Teraz je to veľmi odlišné od iných jazyky ako PHP, ktoré sú naozaj loosey Goosey s ich druhom typov. Sú rovnako ako, jo, čo, je mi to jedno. Daj mi jeden typ, a možno budem robiť správnu vec. V tomto prípade, je Swift veľmi prísna o typoch že máte čo do činenia s. Tento operátor zhrnutie alebo operátor zreťazenie má v podstate niekoľko rôznych možností. Môžete to urobiť zhrnutie s celými číslami, alebo môže robiť zreťazenie, a možno niektoré ďalšie veci rovnako. Ale ak tento subjekt neuznáva čo je na jednej strane toho, alebo skôr ich kombináciu dva druhy, nie je to, čo to je očakával, potom to bude spôsobiť zlyhanie. Takže v tomto prípade, čo to znamená mať reťazec plus celé číslo? Výhodne v kontexte toho sme pravdepodobne chcieť urobiť operáciu reťazec zreťazenie. Ale samozrejme je počítač nemá tento druh kontextu. A preto je treba poskytnúť že dodatočné informácie aby mu vedieť, čo to je to, že chceme robiť. Takže inými slovami, skutočnosť, že Swift je silne zadali znamená, že musíte urobiť trochu ďalšej práce aby si to k prevádzke tak, že by ste chceli. Avšak v dôsledku toho, že je bezpečnejšie. A až budete mať vziať do úvahy tieto typy, veci jednoducho úprimne začať sa celkom dobre fungovať. Takže v tomto prípade, a potom by sa nám vykonať zreťazenie výslovným odlievaním celé číslo do reťazca od zabalením do tejto kapitál funkcie S String, a potom pomocou metódy zreťazenie operátor zmeniť našu štítok premenné, a potom ho vytlačiť. Zatiaľ je všetko dobré? Dobre, poďme ďalej. Teraz existuje celý rad údajov typy, ktoré môžeme použiť v Swift. Ako ste si zvykli na, môžeme vytvoriť premenlivý poľa. Iba A to pole môže obsahovať jediný typ. Takže v tomto prípade, budeme vytvárať mutabilní pole celých čísel, ktoré budeme nazývať známky, a my budeme schopní pre ukladanie, že v tomto hranatých zátvorkách Formát ako ste Zvykli v rôznych iných jazykov. Ale všimnite si, že tu sme definuje niekoľko vecí. stupňa je premenlivý proměnná-- nebudeme používať nechať kľúčové slovo. Takže to znamená, že môžeme potom upraviť Obsah tohto poľa. To je typu Array Int, a môžeme povedať, že na základe tu týchto hranatých zátvorkách. Teraz jeden z pekných vecí na tom je, že sme majú prístup na mnohé Ďalšie informácie o pole len pomocou niektoré jednoduché bodka notácie. Tak napríklad, grades.count poskytuje nám počet položiek, ktoré existujú v tom, že pole, ktoré potom môžeme pristupovať pekne ľahko jednoducho pomocou tejto dot notácie. Ak chcete pridať ďalšie položky na tomto poli, nemôžete robiť štýl PHP kde stačí explicitne definovať, pri danom indexe, nejaká hodnota ktoré chcete vložiť. Namiesto toho použite append metóda v type poľa pripojiť tejto položky, 95, do tohto zoznamu. Takže teraz to pole má nasledujúce contents-- 100, 0, 90, 85. A teraz sme pripojený 95 sa, že rovnako. Existujú aj iné spôsoby môžeme pripojiť veci. Môžete skutočne používať operátor sčítania, ktorý bude interpretovaný ako operácie pole pripájací. A potom môžete pripojiť ďalšie pole, ktorého obsah je 70 a 80, do tejto matice. Takže teraz máme obsah v tejto premennej grades-- 100, 0, 90, 85, 95, 70, a 80. To je len pekný malý syntaxe cukor, ktorý Swift poskytuje k nám. Takže ak chceme sčítať stupňa, sme snáď bude chcieť opakovať nad každú položku v tejto slučky. A my to majú v Swift, pojem zo slučky for, ako by ste očakávali. Ale spôsob, akým sme naznačujú, rozsah sa mierne líšia. Takže v tomto prípade, aby Stručne povedané všetko, budeme chystáte vytvoriť dočasný premenná nazýva suma, aby nás udržať tento počet. A všimnite si našu FOR stavba tu slučka. Pre index v 0 ..