[Muzika] DAN AMRMENDARIZ: Gjithkush, mirëpritur të seminarit CS50, iOS App Development me Swift. Unë jam Dan Armendariz, dhe unë jam një preceptor e shkencës kompjuterike këtu në Harvard. Dhe orën e ardhshme do të jetë një turne shakullinë e sa më shumë gjëra në lidhje me këtë temë si ne mund të përshtatet. Unë do të postoj të gjitha të kodit burim që ju do të shihni sot në internet. Ne mund të mos jetë në gjendje të në fakt shkojnë mbi gjithçka se unë jam që jam duke treguar se në këtë orë. Por të paktën shpresojmë se përmes komentet e kodit burim, ju do të jetë në gjendje të përpiqen të kuptoj se çfarë pikërisht po ndodh për ato gjëra se ne nuk mjaft të marrë për të. Në përgjithësi, struktura e flasim e sotme do të jetë si më poshtë. Ne do të filloni duke bërë disa shërbime bazë Sintaksa me gjuhën Swift, që shkon në disa nga më të avancuar Sintaksa e gjuhës Swift. Për shkak të gjuhës është me të vërtetë moderne dhe atë ka një shumë të nivelit të lartë karakteristika, gjëra që ne nuk kanë parë në C gjatë CS50, ose edhe disa gjuhë të tjera se ne kemi filluar përdorur në CS50 si PHP, kështu që unë do të duhet të përpiqen për futur edhe disa tema që janë të lidhura me gjuhë të nivelit të lartë që ju nuk mund të shihni në thellësi në CS50, por ju do të shihni në më vonë klasa shkenca kompjuterike. Kështu ajo do të jetë një mbushur fort orë. Dhe ju lutem mos ngurroni të më lejoni të e di nëse keni ndonjë pyetje. Pra, nëse ju jeni të interesuar duke bërë të zhvillimit me Swift, apo me të vërtetë ndonjë zhvillim iOS app, ka disa prej kërkesave. Para së gjithash, ju duhet të jetë duke përdorur një Mac, drejtimin në shembujt se ne do të jetë duke përdorur sot, një version i ri i OS relativisht X. Në këtë rast, unë jam duke X 10.5. Ju mund të konkurrojnë 10.11 në qoftë se ju dëshironi. Por çdo gjë që ju jeni do të shikoni është përfshirë Xcode 7 dhe më vonë, e cila ka versionin më të fundit i Swift, e cila është Swift 2.0. Kjo është në fakt një goxha dallim i rëndësishëm. Një shumë e sintaksë ka ndryshuar goxha të konsiderueshme në disa raste nga Swift 1.0, i cili u lirua vitin e kaluar, për Swift 2.0, e cila sapo doli këtë vjeshtë. Pra, ne jemi duke shkuar për të treguar Swift 2.0. Një shumë prej gjërave që ju kërkoni për internet kur jeni duke u përpjekur për të marrë shtesë informacion në lidhje me një shumëllojshmëri të gjëra, ju mund të dëshironi të qartë kërkoni për Swift 2 sesa Swift thjesht e vjetër për të bërë i sigurt që ju të merrni sintaksa e saktë. Në fakt, kjo është përgjithësisht e vërtetë. Ka një sasi të shpejtë të zhvillimit ndodh në gjuhën Swift qysh Apple lëshuar atë, unë mendoj çfarë, kjo është pak më shumë se një vit tani. Dhe gjërat kanë ndryshuar në mënyrë dramatike në atë kohë. Dhe kështu që nuk do të jenë të frustruar në qoftë se, kur ju jeni duke kërkuar rreth e rrotull për tema mbi Swift apo si për të përmbushur diçka duke përdorur një kod shembull apo diçka që ai nuk ka aktualisht punojnë në Swift 2.0. Sigurohuni që ju jeni duke kërkuar në mënyrë specifike për këtë version të përpiqen për të minimizuar efektet e ndryshme versionet dhe ato llojet e gjërave. Unë do të përpiqemi për të nxjerr në pah vetëm disa gjëra që janë të ndryshme për versionet më të vjetra. Por kjo është diçka për të parë për. Kjo ndoshta do të jetë një nga dhimbje koke mëdha që ju do të keni me Swift është gjetur shembull kodin që është më i vjetër, madje edhe vetëm nga disa muaj, duke u përpjekur për të përdorur ajo në projektin tuaj më moderne. Dhe kjo thjesht nuk funksionon. Ju jeni marrë gabimet e përpiluesit, sintaksë Gabimet, të gjitha llojet e gjëra të çmendur. Pra, vetëm të jetë i durueshëm me se, dhe ju do të shpresojmë se kanë një përvojë mjaft të bukur me Përgjithësisht Swift. Tani ju mund të vërtetë join-- dhe unë shpresoj ne fakt ende kemi këtë këtë year-- Apple App CS 50- Ekipi i zhvillimit, i cili do t'ju lejojë të instaluar ndonjë Apps që keni krijuar në pajisjet tuaja iOS. Pra, të marrë një sy në këtë URL nëse ju jeni të interesuar për të bërë atë. Pra, vetëm një çift i gjëra në lidhje me vetë Swift. Ajo është një gjuhë hartuar. Por ju do të shihni se disa nga tiparet që ne përdorim të lejojë atë që do të përdoret edhe në një grimë si një mënyrë e interpretuar si. Një shumë e sintaksë është e huazuar nga C. Është e bazuar dhe e shkruar në C. Dhe kështu që ne do të shohim se ka shumë të takeaways nga njohuritë tuaja ekzistuese nga C që ne mund të portit të Swift. Por ka gjëra që e bëjnë atë shumë të ndryshme nga C. Ajo është e shtypur shumë i fuqishëm. Ka menaxhimit automatik kujtesës. Ju nuk jeni do të duhet të përdorin malloc apo kudo të lirë. Është projektuar për përgjithshmërinë. Pra, me fjalë të tjera, ju mund ta përdorni atë në të gjitha llojet e konteksteve, nga Apple Watch për iPhone të gjithë rrugën deri në OS X, dhe edhe disa servera, madje disa scripting. Por ne do të shohim se mbështetje për të shkruar nuk është mjaft ende atje si ajo është në gjuhë të tjera. Pra, ka shumë të ngjarë që ju do të jetë duke përdorur kjo ekskluzivisht për zhvillimin në Mac tuaj apo iPhone tuaj. Dhe ajo ka shumë karakteristika moderne. Dhe shumë nga këto gjëra janë gjëra që ne jemi duke shkuar për të përpiqen për të trajtuar sot, por edhe tema tanë që sinqerisht, ne mund të kushtojnë kurse të tëra. Në të vërtetë, CS 51, i cili është ofruar semestër tjetër, fokusohet shumë në këto tema që janë përshkruar më poshtë. Kështu që ju mund të kaloni një semestër të tërë kuptuar këto gjëra. Por, ne jemi duke shkuar për të provoni për të marrë nëpërmjet tyre të paktën të mjaftueshme që ju mund të kuptojnë se çfarë është ndodh kur ju shikoni në një program Swift dhe të jetë në gjendje për të kollitem në rrugën tuaj përmes saj për projektin përfundimtar. Tani një nga mënyrat më të mira që ju mund të të marrë informacion shtesë mbi këtë është sinqerisht vetëm përmes Apple siguruar dokumentacionin për Swift. Nuk është një shumë e TV që janë në dispozicion. Dhe kjo është një bazë e mirë në shtëpi për ju për të kërkuar, gjëra të veçanta që ju doni të bëni me një API që përfshin iOS. Nëse ju doni të përdorni kamerën për shembull, ju mund të filloni duke kërkuar këtu, dhe të përdorë gjithashtu edhe Google dhe rafte Overflow si ju do normalisht. Çdo pyetje mbi këtë para se të hidhen të drejtë në? Në rregull. Le të lëvizë. Pra, së pari, unë kam një Numri i dosjeve shembull. Dhe unë jam duke shkuar për të përpiqen për të rritur përmes tyre relativisht shpejt. Kjo është skedari Hello World për Swift. Është shumë e thjeshtë. Nuk ka mënyrë më shumë komente se ka kodin aktual. Njoftim kodi aktual është në fund shumë on line 14. Ajo thotë shtypura. Dhe pastaj kjo është një thirrje funksion. Ne jemi duke kaluar në të një string quajtur Përshëndetje CS50. Vini re se nuk ka pikpresje. Vini re se nuk ka int main. Nuk ka asnjë nga cruft që kemi pasur me C. Kur ne jemi duke përdorur Swift në këtë mënyrë, e cila është vetëm e shkruar në një skedar teksti dhe ruhen në kompjuterin tim, atëherë Unë mund të përpiloni atë dhe drejtuar atë. Vini re që këtu unë jam i mos përdorur IDE CS50. Kjo supozon se unë jam drejtimin dhe që unë jam në OS X, dhe se unë kam Xcode tashmë të instaluar në këtë makinë në mënyrë që kjo në fakt funksionin. Por kjo është vetëm një skedar normal teksti që ne pastaj mund të përpilojnë dhe të redaktoni. Pra, le të shohim se si kjo në fakt funksionon. Çka nëse unë dua të përpiloni atë? 1.swift swiftc. Pas një moment ose dy, ajo do të shihni se ne kemi tani hartuar këtë në një skedar të quajtur 1. Dhe tani ne kemi shtypur CS50 tonë, kërkesa jonë Hello World vend. Vini re një gjë tjetër si mirë është se në mungesë, ne nuk kemi të dhëna A / n për të shkruar një linjë të re. By default, funksioni shtypura në Swift do të shtypura një linjë të re për ju. Ju mund të kalojë një shtesë fakultative parametër për të të treguar se nuk duhet të bëni kështu. Por Google për më shumë informacion mbi këtë. By default, ajo do të bëjë vijën shtypura. Të gjithë të drejtë, kështu që le të lëvizë pastaj për disa gjëra të tjera. Pra, si mund të vërtetë të përcaktojë variablat? Ne mund ta bëjmë këtë është duke përdorur një prej dy metodave. Dhe ai që unë dua të ju them për të parë është ky definicion le. Dhe kjo është e rëndësishme sepse në mënyrë efektive ajo që ne jemi duke bërë është përcaktuar një konstante. Ne do të krijojë një ndryshore, ose më mirë një e quajti konstante, japë atij disa data-- në ky rast, string Dan. Por duke përdorur këtë le fjalen, ne jemi duke thënë se kjo variable-- ose përsëri constant-- quajtur Emri nuk do të ndryshohet. Ajo do të jetë i pandryshueshëm gjatë gjithë kohëzgjatja e këtij programi ose në të gjithë kohëzgjatja e kontekstit se kjo variabël është në dispozicion. Kjo është me të vërtetë e rëndësishme që kur ju keni disa të dhëna që nuk është do të ndryshojë në programin tuaj, dhe ju do të shihni një shumëllojshmëri të shembujve kur ne duam të përdorim le kundrejt sintaksë tjetër, është e rëndësishme që ju përdorni le kudo që të jetë e mundur për shkak se këtë njofton gjuha që ajo është nuk do të ndryshohet, dhe kjo në fakt mund të kryejnë një shumë e optimizim për të përmirësuar shpejtësinë dhe sigurinë e programit tuaj. Dhe me siguri, unë nuk do të thotë le të përplasje ajo me gabime çmendur që ne mund të jetë mësuar të shohim në C. Atëherë ne mund të përdorim varg interpolation për të përmbledhur këtë në një varg. Pra, ne mund të shohim në këtë Linja të shtypura, të shtypura hello, dhe pastaj duke përdorur backslash parens të hapura, dhe pastaj emrin e variablit tim, në këtë rast konstante, mbyllur kllapa. Unë jam në thelb pastaj të vënë Përmbajtja e kësaj ndryshueshme quajtur emër brenda vargut dhe pastaj shtypjen rezultatin atje. Ka një ndryshim tjetër në këtë skedë që është se unë kam, në krye, vënë në një linjë mesele, e cila në thelb vetëm specifikon që unë dua për të përdorur Përkthyes Swift, e cila do të thotë se unë nuk kanë më të hartojnë këtë program të veçantë. Unë vetëm mund të kandidojë atë si shkrimit të saj. Por kjo është, në këtë rast, pas skenat duke u hartuar dhe pastaj duke u drejtuar. Është vetëm e padukshme për ne. Të gjithë të drejtë, kështu që le të lëvizë. Pra, ka pak dredhi që ka ndodhur vetëm para. Ju kam treguar se unë mund të përcaktojë një konstante. Dhe unë mund të sigurojë disa të dhëna për të bërë atë. Por në këtë rast, vini re se unë nuk e bëri në fakt të specifikojë llojin e të dhënave që është. Dhe kjo është për shkak se përpilues, Swift mund të tregoj tipin e të dhënave të bazuar vetëm në të dhënat që kam vënë në të. Për shkak se ajo e di se duke vlerësuar këtë ndryshueshme të drejtë këtu, kjo e drejtë e të dhënave këtu, ajo e di se ajo është një varg. Dhe kështu që ky emër konstante për këtë arsye është do të jetë një varg si. Por ne gjithashtu mund të jetë i qartë rreth llojit që është ne do të përdorim për konstantet ose variabla duke përdorur këtë sintaksë instead-- le String emri i zorrës së trashë është e barabartë me Dan, e cila në këtë rast do të thotë që ne jemi do të përcaktojë një quajti konstante. Ajo do të jetë e tipit String. Dhe vlera do të jetë Dan. Tani mënyra të tjera që ne mund të krijojmë variables-- dhe këto janë variabla të ndryshueshme, të cilat do të thotë se ne jemi, në fakt, duke shkuar për të ndryshuar përmbajtjen e tyre diku në kohëzgjatjen e kontekstit se kjo variabël është defined-- ne përdorin fjalen var në vend të le. Por përsëri, si parazgjedhje, nëse nuk e dini që ju duhet për të manipuluar që të dhënat, përpiqen të përdorin le për përmirësime të performancës. Në këtë rast, unë mund pastaj të specifikojë llojin e të dhënave që ne presim që të jetë brenda ky variabël i ri i quajtur emërtim. Ajo do të jetë një varg. Dhe ne jemi duke shkuar për të pastaj lidh Dy vargjet bashku, string hello, dhe string përfaqësuar nga ndryshueshme, ose më mirë emri konstante. Pra, kjo është e bukur, sepse kjo është disi PHP si në atë që ne kanë shumë të lehtë varg string. Ne nuk duhet të automatikisht përdorin çdo lloj të menaxhimit të kujtesës për të rritur madhësinë dhe të bëjë çdo lloj gjëra funny atje. Kjo punon si ne faktikisht do të presim. Të gjithë të drejtë, ndonjë pyetje mbi këtë? Tani arsye tjetër që ne kemi nevojë për ju keni mundësinë për të jetë në gjendje për të përcaktuar se çfarë tipi i variablave të dhënave janë është për shkak se nganjëherë ne nuk e bëjmë dua të nisja variablave me disa të dhënave në Pika e përkufizimit. Pra, në këtë rast, le të themi që unë dua të fillojë inputting disa notat në një libër të klasës. E pra unë e di se një nga Variablat që unë dua të jem do të jetë një notë ndryshueshëm. Dhe ne gjithashtu e dimë se ne duan që ajo të jetë një numër të plotë. Por ndoshta ne nuk e bëjmë akoma kanë që klasën në dispozicion. Në Swift, ju duhet të përcaktojnë llojin e të dhënave që është i lidhur me një ndryshueshme ose një le të vazhdueshme para se ju mund të vërtetë përdorin atë ndryshore. Për shkak se ajo është e shtypur me forcë, ju duhet të shoqërojnë një lloj me këto variabla. Pra, në këtë rast, në qoftë se unë nuk e kam si duhet inicializohet i pari me disa vlera, atëherë unë duhet të them se çfarë Swift Unë pres lloji të dhënave të jetë. Dhe ajo do të mbetet që i njëjti tip të dhënat e të gjithë historinë e këtij programi. Tani ju mund të joshet sa më shpejt që Unë kam krijuar këtë variabël klasën dhe me kusht atë një numër i plotë i 100, tani, nëse unë duan të përpiqen për të lidh një varg me këtë numër i plotë, mund të joshet për të përdorur ende se operatori string varg si ne e bëmë vetëm disa rreshta para. Por për fat të keq, ky fakt nuk do të punë, sepse ju jeni në thelb kryerjen një operacion në dy lloje të ndryshme. Tani kjo është shumë e ndryshme nga tjetri gjuhë si PHP cilat janë me të vërtetë Budalla loosey me lloj e tyre të llojeve. Ata janë ashtu si, vërtet, çfarëdo, Unë nuk e kujdesit. Vetëm më jepni një lloj, dhe ndoshta unë do të bëj gjënë e duhur. Në këtë rast, Swift është jashtëzakonisht të rreptë në lidhje me llojet që ju jeni marrë me. Ky operator përmbledhje apo operatori varg ka në thelb një çift të opsione të ndryshme të mundshme. Ju mund të bëni përmbledhje me integers, ose mund të bëjë string varg, dhe ndoshta disa gjëra të tjera si edhe. Por në qoftë se operatori nuk e njeh ajo që është në të dyja anët e saj, ose më mirë kombinimi i atyre dy lloje, nuk është ajo që është pritur, atëherë ajo do të shkaktojë një dështim. Pra, në këtë rast, çfarë do të thotë të ketë një varg plus një numër të plotë? Edhe në kontekstin e këtë, ne ndoshta do të doni për të bërë një operacion string varg. Por sigurisht kompjuteri nuk kanë atë lloj të kontekstit. Dhe kështu që ne kemi nevojë për të siguruar se informacioni shtesë për të le të dini se çfarë është se ne duam të bëjmë. Pra, me fjalë të tjera, fakti se Swift është shtypur me forcë do të thotë që ju duhet të bëni një pak punë shtesë për të marrë atë për të vepruar mënyrë që ju do të duan. Por si rezultat, është më e sigurt. Dhe një herë ju keni marrë parasysh ato lloje, gjëra vetëm sinqerisht të fillojë për të punuar mjaft mirë. Pra, në këtë rast, ne atëherë do të kryejnë string varg duke hedhur në mënyrë eksplicite numër i plotë në një varg nga ambalazhi atë në këtë Kapitali funksion S String, dhe pastaj duke përdorur varg string Operatori për të ndryshuar variablin tonë etiketë, dhe pastaj të shtypura it out. Deri më tani, në mënyrë të mirë? Të gjithë të drejtë, le të lëvizë. Tani ka një shumëllojshmëri të të dhënave Llojet që ne mund të përdorin në Swift. Siç e keni bërë për të mësuar, ne mund të krijojë një rrjet të ndryshueshëm. Dhe kjo array mund vetëm përmbajnë një lloj të vetëm. Pra, në këtë rast, ne jemi duke shkuar për të krijuar një vargjeve të ndryshueshme e integers, të cilat ne do të thërrasë nota, dhe ne do të jetë në gjendje për të ruajtur se në këtë grupim katror format si ju kam rritur të mësuar për në një shumëllojshmëri të gjuhëve të tjera. Por vini re se ne jemi këtu përcaktimin e disa gjërave. notat është një variable-- i ndryshueshëm ne nuk e përdorin fjalen let. Kështu që do të thotë që ne pastaj mund të modifikoj Përmbajtja e kësaj grup. Ai është i tipit Array Int, dhe ne mund të them se bazuar në këto kllapa katrore këtu. Tani një nga gjërat e bukur në lidhje me këtë është se ne kanë qasje në një shumë të informacion shtesë për grup vetëm duke përdorur disa thjeshtë dot simbol. Kështu për shembull, grades.count siguron për ne numri i artikujve që ekzistojnë në atë grup, të cilat ne pastaj mund të hyni goxha lehtë thjesht duke përdorur atë dot simbol. Nëse ju doni të shtoni shtesë Artikuj në këtë grup, ju nuk mund të bëjë stilin PHP ku ju vetëm në mënyrë eksplicite të përcaktuar, në një indeks të caktuar, disa vlera që ju doni të futur. Në vend të kësaj, përdorni append metodë në llojin array për të append atë artikull, 95, në këtë listë. Deri tani ky grup ka në vijim contents-- 100, 0, 90, 85. Dhe tani ne kemi bashkangjitur 95 për të se si. Ka mënyra të tjera ne mund të append gjëra. Ju mund të përdorni të vërtetë një operator përmbledhje, e cila do të interpretohet si një operacion grup append. Dhe pastaj ju mund të append një tjetër array, përmbajtja e të cilit janë 70 dhe 80, për këtë grup. Deri tani ne kemi Përmbajtja në këtë variabël grades-- 100, 0, 90, 85, 95, 70, dhe 80. Kjo është vetëm një sintaktik bukur pak sheqer se Swift siguron për ne. Pra, nëse ne duam të mbledhë notat, ne jemi ndoshta do të duan të iterate mbi çdo send në këtë lak. Dhe ne kemi, në Swift, nocioni e një për lak si ju do të presin. Por mënyra që ne të tregojnë një varg është paksa e ndryshme. Pra, në këtë rast, për të përmbledhur gjithçka, ne do të do të krijojë një të përkohshme quajtur shumë të ndryshueshme në mënyrë për ne për të ruajtur këtë akuzë. Dhe vini re për tonë Ndërtimi loop këtu. Për indeksin në 0 ..