[Mūzikas atskaņošanai] DAN AMRMENDARIZ: Ikvienam, welcome uz CS50 seminārā, iOS App Development ar Swift. Es esmu Dan Armendariz, un es esmu skolotājs datorzinātņu šeit Hārvardā. Un nākamā stunda būs viesulis tūre tik daudz sīkumi par šo tēmu, kā mēs varam fit. Es post visas pirmkodu ka jūs redzēsiet šodien tiešsaistē. Mēs varētu nebūt spējīgs faktiski iet pāri visam ka es esmu, kas es esmu parādot jums šajā stundā. Bet vismaz cerams cauri komentāri par pirmkodu, jūs varēsiet mēģināt izdomāt, ko tieši notiek ar šīm lietām ka mums nav gluži nokļūt. Kopumā, struktūra šodienas diskusija būs šāda. Mēs sāksim ārā darīt dažas pamata sintakse ar Swift valodu, nonākšana daži no vairāk uzlabotas sintakse no Swift valodā. Jo valodā ir patiešām mūsdienīgs un to ir daudz augsta līmeņa funkcijas, lietas, kas mums ir ne redzams C visā CS50, vai Pat daži citās valodās ka mēs esam sākuši lietot CS50 piemēram PHP, tāpēc es esmu nāksies mēģināt ieviest arī dažas tēmas, kas ir saistīti ar augstāka līmeņa valodām ka jums nevar redzēt padziļināti CS50, bet jūs redzēsiet vēlāk datorzinātnes nodarbības. Tātad tas būs cieši saspiesti stundu. Un, lūdzu, let me zināt, ja jums ir kādi jautājumi. Tātad, ja jūs interesē darot attīstību ar Swift, vai tiešām jebkurš iOS app attīstība, tur ir pāris prasībām. Pirmkārt, jums ir jābūt, izmantojot Mac, darbojas piemēriem ka mēs gribam būt, izmantojot šodien, salīdzinoši jauna versija, OS X. Šajā gadījumā, es skrienu X 10.5. Jūs var darboties 10.11, ja vēlaties. Bet viss, kas jūs gatavojas skatīt iesaista Xcode 7 un vēlāk, kas ir jaunākā versija SWIFT, kas ir Swift 2.0. Tas ir faktiski diezgan būtiska atšķirība. A sintakse daudz ir mainījies diezgan būtiski dažos gadījumos no Swift 1,0, kas tika izlaists pagājušajā gadā, uz Swift 2.0, kas tikko iznāca šoruden. Tātad mēs ejam, lai parādītu Swift 2.0. Vairāki lietām daudz kas jūs meklēt tiešsaistē kad jūs mēģināt iegūt papildu informācija par dažādām lietām, Jūs varat skaidri meklēt Swift 2 nevis tikai plain veco Swift, lai padarītu pārliecināts, ka jūs saņemsiet sintakse pareiza. Faktiski, tas parasti ir taisnība. Tur ir ātra daudzums attīstības notiek Swift valodā kopš Apple izlaida to, es domāju, ka ko, tas ir bijis nedaudz vairāk kā gadu tagad. Un viss ir mainījies dramatiski šajā laikā. Un tāpēc nevajag neapmierinātas ja, ja jūs meklējat apkārt par tēmām, par SWIFT vai kā paveikt kaut kas, izmantojot kādu piemēru kodu vai kaut ka tā nav faktiski strādā pie Swift 2.0. Pārliecinieties, ka jūs meklējat īpaši šim versiju lai mēģinātu samazināt ietekmi atšķirīgs versijas un tie veidu lietas. Es mēģināšu norādīt tikai dažas lietas kas atšķiras ar vecākām versijām. Bet tas ir kaut kas, lai noskatītos, kas paredzēti. Tas droši vien būs viena no lielākajām galvassāpēm ka jums būs ar Swift ir atrast piemērs kods, kas ir vecāka, pat tikai pēc dažiem mēnešiem, mēģinot izmantot tā savā modernāka projektu. Un tas vienkārši nedarbojas. Jūs saņemat kompilators kļūdas, sintakse kļūdas, visādi trakas lietas. Tik vienkārši esiet pacietīgi ar ka, un jums būs, cerams ir diezgan jauka pieredze ar Swift kopvērtējumā. Tagad jūs varat faktiski join-- un es ceru mēs faktiski joprojām ir šī šī year-- CS 50-Apple app attīstības komanda, kas ļaus Jums uzstādīt jebkuru progr kas jums izveidot jūsu iOS ierīcēm. Tātad to apskatīt šo URL, ja Jūs interesē darot to. Tātad tikai pāris lietas par Swift pati. Tas ir apkopota valoda. Bet jūs redzēsiet, ka daži no iezīmēm, ka mēs izmantojam ļauj to izmantot arī mazliet tāpat interpretēts veidā, kā arī. A sintakse daudz ir aizgūts no C. Tā ir balstīta un uzrakstīts C. Un tā mēs redzam, ka tur ir daudz takeaways no savas esošās zināšanas no C, ka mēs varam ostas SWIFT. Bet ir lietas, kas padara to ļoti atšķiras no C. Tas ir ļoti stingri drukāti. Tur ir automātiska atmiņas pārvaldība. Jūs neesat nāksies izmantot malloc vai bezmaksas visā. Tā ir paredzēta vispār. Tātad citiem vārdiem sakot, jūs varat izmantot to visu veidu kontekstos, no Apple Watch iPhone visu ceļu līdz OS X, un pat daži serveri, pat daži skriptu. Bet mēs redzam, ka atbalsts skriptu nav gluži tur vēl par tas ir arī citās valodās. Tātad, visticamāk, jūs izmantojat Tas vienīgi attīstībai uz jūsu Mac vai jūsu iPhone. Un tas ir daudz mūsdienīgas funkcijas. Un daudz no šīm lietām ir sīkumi, kas mēs ejam, lai mēģinātu risināt šodien, bet arī mūsu tēmas, kas atklāti, mēs varam veltīt visu kursu. Faktiski, CS 51, kas ir piedāvāja nākamajā semestrī, koncentrējas daudz par šīm tēmām kas ir aprakstīti zemāk. Tātad jūs varat pavadīt visu semestri izprast šīs lietas. Bet mēs esam gatavojas izmēģināt nokļūt caur tiem vismaz tik daudz, ka jums var saprast, kas ir notiek, ja paskatās pie Swift programmas un varēs kapāt savu ceļu caur to galīgajā projektā. Tagad viens no labākajiem veidiem, ka jūs varat iegūt papildu informāciju par šo ir atklāti tikai caur Apple nosacījumu dokumentāciju Swift. Tur ir daudz API kas ir pieejami. Un tas ir labs mājas bāzi par jums meklēt, konkrētām lietām, kas jums gribu darīt ar API iesaistot iOS. Ja vēlaties izmantot kameru Piemēram, jūs varat sākt meklēt šeit, un arī izmantot Google un kaudze Pārplūdes, kā Jūs parasti. Kādi jautājumi par šo pirms mēs lēkt tiesības? Viss kārtībā. Pieņemsim pāriet. Tātad, pirmkārt, man ir skaits piemēram failus. Un es esmu gatavojas, lai mēģinātu soli caur tiem salīdzinoši ātri. Tas ir Hello World fails Swift. Tas ir ļoti vienkārši. Tur ir daudz vairāk komentāri kā tur ir faktiskais kods. Ievērojiet faktiskais kods ir ļoti apakšējā rindā 14. Tajā teikts, drukāt. Un tad tas ir funkcija zvans. Mēs iet uz to stīgu sauc Sveiki CS50. Ievērojiet, ka tur nav semikoliem. Ievērojiet, ka tur nav int galvenais. Tur neviens no koda atlikumiem, kas mums bija ar C. Kad mēs izmantojam Swift šādā veidā, kas ir tikai uzrakstīts teksta failā un glabājas manā datorā, tad Es varu sastādīt un palaist to. Ievērojiet, ka šeit es esmu neizmantojot CS50 IDE. Tas paredz, ka es esmu darbojas un ka es esmu par OS X, un ka man ir Xcode jau uzstādītas par šo mašīnu, lai tas faktiski funkciju. Bet tas ir tikai normāla teksta failu ka mēs pēc tam var sastādīt un rediģēt. Tātad, pieņemsim redzēt, kā tas reāli darbojas. Ko darīt, ja es gribu, lai apkopotu to? swiftc 1.swift. Pēc brīža vai diviem, tas redzēs, ka mēs esam tagad apkopoti šī failā ar nosaukumu 1. Un tagad mēs esam uzdrukāts mūsu CS50, Mūsu Hello World pieteikums drīzāk. Ievērojiet viena cita lieta, jo labi ir tas, ka pēc noklusējuma, mums nebija ievade A / n izdrukāt jaunu līniju. Pēc noklusējuma, drukas funkcija Swift izdrukās jaunu līniju jums. Jūs varat nodot izvēles papildu parametrs pateikt to nedarīt. Bet Google, lai iegūtu vairāk informācijas par to. Pēc noklusējuma, tas būs jādara drukas līniju. Labi, tāpēc pieņemsim pāriet uz tad uz dažām citām lietām. Tātad, kā mēs varam faktiski definēt mainīgos? Mēs varam darīt, ir, izmantojot viena no divām metodēm. Un viens, ka es gribu jums pastāstīt Par pirmais ir tas pieņemsim definīcija. Un tas ir svarīgi jo efektīvi tas, ko mēs darām, ir definēt konstants. Mēs gatavojamies izveidot mainīgo, vai drīzāk konstante sauc vārds, nodrošināt to daži data-- in Šajā gadījumā, stīgu Dan. Taču, izmantojot šo let atslēgvārds, mēs sakām ka šis variable-- vai atkal constant-- sauc vārds nekad nebūs jāmaina. Tas būs jābūt nemainīgām visā ilgums šīs programmas vai visā ilgums kontekstā ka šis mainīgais ir pieejams. Tas ir ļoti svarīgi, ka tad, kad Jums ir daži dati, kas nav gatavojas mainīt savu programmu, un jūs redzēsiet dažādus piemērus par to, kad mēs vēlamies izmantot ļaujiet pret otras sintaksi, tas ir svarīgi, ka jūs izmantojat ļaut kur vien iespējams, jo šī Brīdina valodas, ka tas ir netiks mainīta, un tas faktiski var veikt daudz optimizācijas lai uzlabotu ātrumu un drošība jūsu programmā. Un ar drošību, es domāju ne let tas crash ar crazy kļūdām ka mēs varētu būt pieraduši redzēt C Tad mēs varam izmantot string interpolāciju rezumēju šo ietvaros virkni. Tātad, mēs varam redzēt šajā print līnija, drukāt hello, un tad, izmantojot slīpsvītru atvērtos parens, un tad nosaukums mana mainīgo, šajā gadījumā konstanti, aizveriet iekavas. Es esmu būtībā tad liekot saturs ir mainīgā sauc nosaukuma no virknes iekšā un pēc tam drukāšanas rezultātu tur. Ir viens otru izmaiņas šajā failā kas ir, ka man ir, pašā augšā, īstenot zaņķis līniju, kas būtībā tikai precizēts ka es vēlos izmantot Swift tulks, kas nozīmē, ka man vairs nav apkopot šo konkrēto programmu. Es varu tikai palaist to kā savu skriptu. Bet tas ir, šajā gadījumā, aiz ainas tiek apkopoti un pēc tam to palaist. Tas ir tikai neredzama mums. Labi, tāpēc pieņemsim pāriet. Tātad tur ir mazliet blēdība kas tikko notika pirms tam. Man parādīja, ka es varētu noteikt konstantu. Un es varētu sniegt dažus datus, lai to izdarītu. Bet šajā gadījumā, paziņojums, ka man nav faktiski norāda datu veidu ka tas ir. Un tas ir tāpēc, ka kompilatoru, Swift var secināt datu veidu tikai, pamatojoties uz datiem, kas man par to. Jo tas zina, ka, izvērtējot šo mainīgs tepat, šie dati tiesības šeit, tas zina, ka tas ir string. Un tā tas konstante nosaukums tādēļ ir būs virkni kā labi. Bet mēs varam būt arī skaidri par veidu, kas ir mēs gatavojamies izmantot konstantes vai mainīgie izmantojot šo sintaksi instead-- ļaujiet nosaukums resnās String vienāds Dan, kas šajā gadījumā nozīmē, ka mēs esam gatavojas noteikt nemainīgu sauc vārdu. Tas būs tipa String. Un vērtība būs Dan. Tagad cits veids, kas mēs varam izveidot variables-- un tie ir mainīgs mainīgie, kas nozīmē, ka mēs esam, patiesībā, dodoties mainīt to saturu dažkārt ilgumu, saistībā ka mainīgais defined-- mēs izmantot VAR atslēgvārdu nevis ļaut. Bet atkal, pēc noklusējuma, ja vien jūs zināt kas jums ir nepieciešams, lai manipulēt, ka dati, mēģināt izmantot ļaut, lai veiktspējas uzlabojumi. Šajā gadījumā, es var pēc tam norādīt datu tipu ka mēs sagaidām, ka iekšpusē Šī jaunā mainīgais sauc etiķete. Tas būs virkne. Un mēs ejam, lai pēc tam saķēdēt divas stīgas kopā, string hello, un string pārstāvēta ar mainīgs, vai drīzāk konstante nosaukums. Tātad, tas ir jauki, jo tas ir nedaudz PHP, piemēram, to, ka mums ir ļoti viegli string konkatenācija. Mums nav automātiski izmantot jebkāda veida atmiņas pārvaldība lai palielinātu izmēru un darīt jebkāda veida funny lietas tur. Tas darbojas kā mēs varētu reāli sagaidīt. Labi, kādi jautājumi par šo? Tagad cits iemesls, ka mums ir vajadzīga jums ir iespēja lai varētu noteikt, ko Datu mainīgo tips ir ir tāpēc, ka dažreiz mēs to nedarīsim vēlaties, lai sāktu mainīgos ar dažiem datiem tajā punkts definīcijas. Tātad šajā gadījumā, teiksim ka es vēlos sākt ievadījusi dažas pakāpes integrācijai klases grāmatu. Nu es zinu, ka viens no mainīgie, kas es gribu būt ir būs mainīgs pakāpes. Un mēs arī zinām, ka mēs vēlaties, lai to veselam skaitlim. Bet varbūt mēs to vēl nav ir pieejams, kas pakāpē. In Swift, jums ir definēt datu veidu kas ir saistīta ar mainīgais vai ļaut konstante Pirms jūs faktiski var izmantot šo mainīgo. Jo tas ir stipri drukāti, Jums ir saistīt tipa ar šiem mainīgajiem. Tātad šajā gadījumā, ja man nav pareizi inicializēts pirmais ar kādu vērtību, tad man ir nepieciešams, lai pastāstītu, ko Swift Es ceru, ka datu tips būt. Un tas notiek, lai paliek ka pats datu tips Visā vēsturē šīs programmas. Tagad jūs varētu būt kārdinājums, tiklīdz Esmu izveidojis šo klases mainīgo un ja tas ir skaitlis 100, tagad, ja I gribu mēģināt saķēdēt virkne ar šo skaitlim, varētu būt kārdinājums joprojām izmanto ka string konkatenācija operators tāpat kā mēs to darījām tikai dažas rindiņas pirms. Bet, diemžēl, Tas faktiski nav strādāt, jo jūs esat būtībā veicot darbība uz diviem dažādiem veidiem. Tagad tas ir ļoti atšķirīgs no citiem valodas, piemēram, PHP, kas ir patiešām loosey dumjš ar savu veida veidiem. Viņi tāpat kā, jā, kāds, man vienalga. Dāvini man vienu veidu, un varbūt es darīšu pareizi. Šajā gadījumā, Swift ļoti stingri par veidiem ka jums ir darīšana ar. Summēšanu operators vai konkatenācija operators ir būtībā pāris dažādas iespējas. Jūs varat darīt summēšanas ar veseliem skaitļiem, vai arī jūs var izdarīt virkni konkatenācija, un varbūt dažas citas lietas, kā arī. Bet, ja tas operators neatzīst to, kas ir uz katru pusi no tā, vai drīzāk uz tiem apvienošanas divi veidi, nav tas, ko tā gaida, tad tas būs radīt neveiksmes. Tātad šajā gadījumā, ko tas nozīmē lai būtu virkni plus vesels skaitlis? Nu kontekstā Tas, mēs, iespējams, vēlas darīt string konkatenācija darbību. Bet, protams, dators nav šāda veida kontekstā. Un tāpēc mums ir nepieciešams, lai nodrošinātu ka papildu informācija lai ļautu tai zināt, ko tas ir tā, ka mēs vēlamies darīt. Tātad citiem vārdiem sakot, to, ka Swift ir stipri drukāti nozīmē, ka jums ir jādara Mazliet papildu darbu lai saņemtu to, lai darbinātu veids, ka jūs vēlaties. Bet, kā rezultātā, tā ir drošāk. Un, kad jums ir jāņem vērā šiem tipiem, lietas vienkārši atklāti sākt strādāt diezgan labi. Tātad šajā gadījumā, mēs tad būtu veikt virkni konkatenācija nepārprotami liešana vesels skaitlis uz virkni ar ietīšanas to šajā kapitāls S String funkcija, un tad, izmantojot string konkatenācija operators, lai mainītu mūsu etiķetes mainīgo, un pēc tam to izdrukāt. Līdz šim tik labi? Labi, pieņemsim virzīties tālāk. Tagad tur ir dažādas datu veidi, ka mēs varam izmantot, jo SWIFT. Kā jūs esat pieraduši, mēs varam radīt mainīgu masīvu. Un tas masīvs var tikai satur viena veida. Tātad šajā gadījumā, mēs ejam, lai radītu a mainīgs bloki veseli skaitļi, kas mēs sauksim atzīmes, un mēs varēsim uzglabāt ka šajā kvadrātiekava formātu, kā jūs esat pieraduši uz dažādiem citiem valodu. Bet paziņo, ka šeit mēs esam definējot pāris lietas. pakāpes ir mainīgs variable-- mēs neizmanto Let atslēgvārdu. Tātad tas nozīmē, ka mēs varam, tad mainīt saturs šī masīva. Tas ir tipa Array Int, un mēs varam pateikt, ka pamatojoties uz šiem kvadrātiekavās šeit. Tagad viens no jaukas lietas par šo ir tas, ka mēs ir pieejams daudz Papildus informācija par masīva tikai izmantojot daži vienkārši dot apzīmējumu. Tā, piemēram, grades.count sniedz mums Vienību skaits, kas pastāv, ka masīvs, kuru mēs pēc tam var piekļūt diezgan viegli vienkārši izmantojot šo dot notācija. Ja vēlaties pievienot papildu priekšmeti uz šo masīva, Jūs nevarat darīt PHP stils kur tu tikko skaidri definēt, pie noteikta indeksa, daži vērtība ka vēlaties ievietot. Tā vietā, izmantojiet pievienošanu metode masīva tipa lai pievienotu šo posteni, 95, šim sarakstam. Tāpēc tagad šis masīvs ir šāds contents-- 100, 0, 90, 85. Un tagad mēs esam pievienoti 95. ka labi. Ir arī citi veidi mēs varam pievienot lietas. Jūs faktiski var izmantot sasummēt operators, kas tiks interpretēts kā masīvs Append operācija. Un jūs varat pievienot otru masīvs, kuru saturs ir 70 un 80, šai masīvs. Tāpēc tagad mums ir saturs šajā mainīgā grades-- 100, 0, 90, 85, 95, 70 un 80. Tas ir tikai jauka maz sintaktisko cukurs, ka Swift sniedz mums. Tātad, ja mēs gribam, lai summai pakāpes, mēs esam varbūt gatavojas vēlaties atkārtot pār katru posteni šajā cilpa. Un mums ir, jo Swift, jēdziens kādas cilpa, kā jūs varētu gaidīt. Bet tā, ka mēs norādītu diapazons ir nedaudz atšķirīgs. Tātad, šajā gadījumā, lai Rezumējot visu, mēs gatavojas izveidot pagaidu mainīgais sauc summa, lai par mums saglabāt šo skaitu. Un paziņojums mūsu för cilpa celtniecība šeit. Par indekss 0 ..