[MIZIK jwe] DAN AMRMENDARIZ: Tout moun, Byenveni nan seminè a CS50, iOS Devlopman App ak Swift. Mwen se Dann Armendariz, ak mwen se yon presèpteur nan syans òdinatè isit la nan Harvard. Apre sa, lè a pwochen a pwal yon toune gwo toubouyon nan kòm anpil bagay sou sijè sa a kòm nou ka anfòm. Mwen ap afiche tout nan kòd la sous ke ou pral wè jodi a sou entènèt. Nou pa ka kapab aktyèlman ale sou tout bagay ke mwen se ke mwen se ki montre ou nan tan soufrans sa a. Men, nan omwen èspere ke nan kòmantè sa yo nan kòd la sous, ou pral kapab pou yo eseye konnen sa ki egzakteman k ap pase pou bagay sa yo ke nou pa byen ale nan. An jeneral, estrikti a nan pale jodi a yo pral jan sa a. Nou pral kòmanse soti fè kèk debaz sentaks ak lang nan Swift, pral antre nan kèk nan ki pi avanse nan sentaks nan lang lan Swift. Paske lang nan se reyèlman modèn ak li gen yon anpil nan wo nivo karakteristik, bagay sa yo ke nou pa gen wè nan C nan tout CS50, oswa menm kèk lòt lang yo ke nou te te kòmanse lè l sèvi avèk nan CS50 tankou PHP, se konsa mwen pral jwenn gen pou yo eseye prezante tou gen kèk sijè ki yo ki gen rapò nan pi wo nivo lang ke ou pa ka wè nan pwofondè nan CS50, men ou pral wè nan pita klas syans òdinatè. Se konsa, li k ap pase yo dwe yon byen chaje èdtan. Apre sa, tanpri, ezite kite m ' konnen si ou gen nenpòt kesyon. Se konsa, si w ap enterese nan fè devlopman ak Swift, oswa reyèlman nenpòt iOS devlopman app, gen yon koup nan kondisyon. Premye a tout, ou gen lè l sèvi avèk yon Mac, kouri nan egzanp yo ke nou ap ale nan dwe lè l sèvi avèk jodi a, yon relativman nouvo vèsyon an OS X. Nan ka sa a, mwen kouri X 10.5. Ou ka kouri 10.11 si ou vle. Men, tout bagay ki w ap ale nan wè se ki enplike Xcode 7 ak pita, ki te gen vèsyon an dènye a Swift, ki se Swift 2.0. Sa a se aktyèlman yon trè enpòtan distenksyon. Yon anpil nan sentaks la gen chanje bèl anpil nan kèk ka soti nan Swift 1.0, ki te lage ane pase a, Swift 2.0, ki jis te soti sa a tonbe. Se konsa, nou ap ale nan montre Swift 2.0. Yon anpil nan bagay sa yo ke ou rechèch pou sou entènèt lè w ap ap eseye jwenn plis enfòmasyon sou yon varyete de bagay sa yo, ou ka vle klèman rechèch pou Swift 2 olye ke jis plenn fin vye granmoun Swift fè asire w ke ou jwenn sentaks ki kòrèk la. An reyalite, sa a se jeneralman vre. Genyen yon kantite lajan rapid nan devlopman pase nan lang la Swift depi tout tan Apple lage li, mwen panse ke ki sa, li te gen yon ti kras plis pase yon ane kounye a. Apre sa, bagay yo chanje dramatikman nan tan sa a. Se konsa, Ou pa bezwen fwistre.Tanpri si, lè w ap kap alantou pou sijè sou Swift oswa ki jan yo akonpli yon bagay lè l sèvi avèk kèk kòd egzanp oswa yon bagay ke li pa fè sa aktyèlman ap travay sou Swift 2.0. Asire ou ke ou ap chèche espesyalman pou ke vèsyon eseye pou misyon pou minimize efè nan diferan vèsyon ak kalite sa yo ki nan bagay sa yo. M ap eseye pwen soti jis kèk bagay ki diferan nan vèsyon ki pi ansyen. Men, li la yon bagay yo gade soti pou. Sa a pwobableman pral fè youn nan pi gwo tèt fè mal yo ke ou pral gen ak Swift se pou nou jwenn Kòd egzanp se sa ki pi gran, menm jis pa yon kèk mwa, ap eseye sèvi ak li nan pwojè modèn plis ou yo. Epi, se jis tou senpleman pa travay. W ap vin erè du, sentaks erè, tout kalite bagay fou. Se konsa, jis pran pasyans ak sa, ak ou pral èspere ke gen yon eksperyans trè bèl ak Swift an jeneral. Koulye a, ou kapab aktyèlman join-- e mwen espere ke nou aktyèlman toujou gen sa a sa a year-- CS 50 nan Apple app ekip devlopman, ki pral pèmèt ou enstale nenpòt apps kote ou kreye sou iOS aparèy ou yo. Se konsa, pran yon gade nan URL sa a si w enterese nan fè sa. Se konsa, jis yon koup nan bagay sou Swift tèt li. Li se yon lang konpile. Men, ou pral wè ke gen kèk nan karakteristik yo ki ke nou itilize pèmèt li yo dwe itilize tou nan yon ti jan tankou yon entèprete fason kòm byen. Yon anpil nan sentaks la prete soti nan C. Li nan ki baze ak ekri nan C. Se konsa, nou pral wè ke gen yon anpil nan takeaways soti nan konesans ki egziste deja ou soti nan C ke nou kapab pò Swift. Men, gen bagay sa yo ke fè li trè diferan de C. Li se trè fòtman tape. Genyen jesyon memwa otomatik yo. Ou pa ap ale nan gen yo itilize malok oswa gratis nenpòt kote. Li nan ki fèt pou générales. Se konsa, nan lòt mo, ou ka sèvi ak li nan tout kalite kontèks, ki soti nan Apple Watch nan iPhone tout wout la jiska OS X, ak menm kèk serveurs, menm kèk scripting. Men, nou pral wè ke nan sipò pou scripting se pa byen gen anyen ankò kòm li se nan lòt lang yo. Se konsa, gen plis chans ou pral lè l sèvi avèk sa a sèlman pou devlopman sou Mac ou a oswa iPhone ou. Apre sa, li gen yon anpil nan karakteristik modèn. Ak yon anpil nan bagay sa yo se bagay ki nou ap ale nan eseye adrese jodi a, men tou, sijè nou an ki franchman, nou ka konsakre kou tout antye. An reyalite, CS 51, ki se ofri pwochen semès, konsantre yon anpil sou sijè sa yo ke yo dekri anba a. Se konsa, ou ka pase yon semès antye konprann bagay sa yo. Men, nou ap ale nan eseye yo ka resevwa nan yo omwen ase ke ou ka konprann sa ki nan ale sou lè ou gade Yon pwogram Swift epi yo dwe kapab Hack fason ou atravè li pou pwojè a final la. Koulye a, youn nan pi bon fason yo ke ou ka jwenn plis enfòmasyon sou sa a se franchman jis nan Apple la bay dokiman pou Swift. Genyen yon anpil nan APIs ki disponib yo. Lè sa a se yon baz bon pou ou lakay yo gade pou li a, bagay sa yo espesifik ke ou vle fè ak yon API ki enplike iOS. Si ou vle sèvi ak kamera a pou egzanp, ou ka kòmanse kap isit la, epi tou li sèvi ak Google ak Stack Debòde jan ou ta nòmalman. Nenpòt kesyon sou sa a anvan nou so dwa nan? Tout dwa. Se pou yo deplase sou. Se konsa, premye, mwen gen yon Nimewo nan dosye egzanp. Apre sa, mwen pral pou yo eseye etap nan yo relativman byen vit. Sa a se dosye a Alo Mondyal pou Swift. Li trè senp. Genyen fason pi plis kòmantè pase gen Kòd vrè. Avi kòd la aktyèl se nan pati anba a anpil sou liy 14. Li di enprime. Lè sa a, li nan yon apèl fonksyon. Nou ap pase nan li yon fisèl rele Bonjou CS50. Remake gen nan pa gen virgules. Remake gen nan pa gen int prensipal la. Genyen pa youn nan la cruft ke nou te gen ak C. Lè nou ap itilize Swift nan fason sa a, ki se jis ekri nan yon dosye tèks ak ki estoke sou òdinatè mwen an, lè sa a Mwen kapab konpile li epi li kouri li. Remake isit la mwen se pa lè l sèvi avèk IDE nan CS50. Sa a sipoze ke mwen menm ki kouri ak ke mwen se sou OS X, e ke mwen te deja enstale Xcode sou machin sa a yo nan lòd pou sa a ki aktyèlman fonksyon. Men, sa a se jis yon dosye tèks nòmal ke nou ka Lè sa a konpile ak edit. Se konsa, kite a wè ki jan sa a aktyèlman ap travay. E si mwen vle konpile li? swiftc 1.swift. Apre yon ti moman oswa de, li pral wè ke nou genyen kounye a konpile sa a nan yon dosye rele 1. Epi, koulye a nou te enprime CS50 nou an, aplikasyon Alo mond nou an olye. Avi yon lòt bagay tankou byen se ke pa default, nou pa t 'gen yo opinyon yon / n nan enprime yon liy nouvo. Pa default, fonksyon an ekri an lèt detache nan Swift pral enprime yon liy nouvo pou ou. Ou ka pase yon lòt si ou vle paramèt di li pa fè sa. Men, Google Pou plis enfòmasyon sou sa. Pa default, li pral fè liy nan ekri an lèt detache. Tout dwa, se konsa kite a deplase sou Lè sa a, nan kèk lòt bagay. Se konsa, ki jan nou ka aktyèlman defini varyab? Nou ka fè sa a, se lè l sèvi avèk youn nan de metòd. Ak yon sèl la ke mwen vle di ou sou premye se definisyon kite sa a. Lè sa a se enpòtan paske efektivman sa n ap fè se defini yon konstan. Nou pral kreye yon varyab, ou pito yon rele konstan, bay li kèk nan data-- ka sa a, fisèl la lavil Dann. Men, lè l sèvi avèk kite sa mo kle, nou ap di ke sa a variable-- oswa ankò constant-- rele Non pa janm yo pral chanje. Li k ap pase yo dwe nan tout imuiabl dire a nan pwogram sa a oswa nan tout nan dire nan kontèks la ki varyab sa ki disponib. Sa a se vrèman enpòtan ke lè ou gen kèk done ki pa pral chanje nan pwogram ou an, epi ou pral wè yon varyete de egzanp sou lè nou vle sèvi ak kite kont lòt sentaks la, li enpòtan ke ou itilize se pou kèlkeswa lè sa posib paske sa a notifye lang nan ke li se pa ale nan yo chanje yo, epi li ka aktyèlman fè yon anpil nan optimizasyon amelyore vitès la ak sekirite a nan pwogram ou an. Ak nan sekirite, pa vle di se pou mwen li aksidan ak erè fou ke nou ta ka abitye wè nan C. Lè sa a, nou ka sèvi ak fisèl entèpolasyon ankapsulasyon sa a ki nan yon fisèl. Se konsa, nou ka wè nan sa a liy enprime, enprime hello, Lè sa a, lè l sèvi avèk antislach ak paran louvri, ak Lè sa a non an nan varyab m 'yo, nan sa a konstan ka, fèmen parantèz yo. Mwen Lè sa a, esansyèlman mete nan sa a varyab rele non sa a andedan nan fisèl la ak Lè sa a enprime rezilta a la. Genyen yon lòt chanjman nan sa a ranpli ki se ke mwen gen, nan tèt la anpil, mete nan yon liy kaz, ki fondamantalman jis presize ke mwen vle sèvi ak nan Swift entèprèt, ki vle di ke mwen pa gen okenn ankò gen konpile pwogram sa a an patikilye. Mwen ka jis kouri li tankou script pwòp li yo. Men, sa a se, nan ka sa a, dèyè sèn nan ke yo te konpile ak Lè sa a ke yo te kouri. Se jis envizib yo ban nou. Tout dwa, se konsa kite a deplase sou. Se konsa, gen nan yon ti jan nan artifices ki jis ki te pase anvan. Mwen te montre nou se mwen te kapab defini yon konstan. Apre sa, mwen te kapab bay kèk done fè li. Men, nan ka sa a, remake ke mwen pa t ' aktyèlman presize ki kalite done ke li se. Epi sa a, paske nan du, Swift kapab dégager ki kalite done jis ki baze sou done a ke mwen mete nan li. Paske li konnen ke pa evalye sa a varyab dwa isit la, sa a dwat done isit la, li konnen ke li se yon fisèl. Se konsa, non sa a Se poutèt sa se konstan pral gen yon fisèl kòm byen. Men, nou kapab tou gen pou eksplisit sou kalite a sa a, se nou pral pou itilize pou konstan oswa varyab lè l sèvi avèk sentaks sa a instead-- kite Non kolon fisèl egal Dann, ki nan ka sa a vle di nou ap ale nan defini yon rele konstan. Li k ap pase yo dwe nan kalite fisèl. Epi se valè a pral fè lavil Dann. Koulye a, nan lòt fason ki nou ka kreye variables-- ak sa yo, se varyab mutabl, ki vle di ke nou se, an reyalite, ale chanje sa yo nenpòt moman nan dire a nan kontèks la ki varyab sa se defined-- nou itilize mo kle a var olye pou yo kite. Men, ankò, pa default, sof si ou konnen ke ou bezwen manipile ki done, eseye sèvi ak kite pou pèfòmans amelyorasyon. Nan ka sa a, mwen kapab Lè sa a, presize ki kalite done ki nou espere yo dwe andedan nan varyab sa a nouvo rele mete etikèt sou. Li k ap pase yo dwe yon fisèl. Epi nou ap ale nan Lè sa a, anchene de strings ansanm, fisèl la hello, ak fisèl la reprezante pa la varyab, ou pito non an konstan. Se konsa, sa se bèl paske sa a se yon ti jan tankou nan PHP ke nou gen trè fasil Anchènman fisèl. Nou pa bezwen otomatikman itilize nenpòt ki sòt nan jesyon memwa ogmante gwosè a ak fè nenpòt ki sòt de bagay sa yo komik la. Sa a ap travay kòm nou ta aktyèlman atann. Tout dwa, nenpòt kesyon sou sa a? Koulye a, lòt rezon ki fè nou bezwen ou gen kapasite nan pou kapab defini ki sa di ki kalite varyab telefòn nan se paske pafwa nou pa fè sa vle inisyalize varyab ak kèk done nan la pwen nan definisyon. Se konsa, nan ka sa a, se pou yo di ke mwen vle kòmanse Anthrax kèk klas nan yon liv klas. Oke mwen konnen ke youn nan la varyab ke mwen vle yo dwe a pwal yon nòt mutabl. E nou konnen tou ke nou vle li nan dwe yon nonb antye relatif. Men, petèt nou pa fè sa ankò gen sa klas yo ki disponib. Nan Swift, ou gen defini kalite a nan done ki asosye avèk yon varyab oswa yon kite konstan anvan ou kapab aktyèlman sèvi ak sa varyab. Paske li se fòtman tape, ou gen yo asosye yon kalite ak varyab sa yo. Se konsa, nan ka sa a, si mwen te pa byen inisyalizèd premye a ak kèk valè, lè sa a mwen bezwen di sa Swift Mwen atann mwen kalite nan done yo dwe. Epi, se k ap pase yo rete ki menm kalite done nan tout istwa a nan pwogram sa a. Koulye a, ou ta ka dwe tante le pli vit ke Mwen te kreye sa a varyab klas ak bay li yon nonb antye relatif nan 100, kounye a si mwen vle pou yo eseye anchene yon afè ak sa nonb antye relatif, ta ka vin tante l 'toujou itilize ki operatè fisèl Anchènman tankou nou te fè jis yon liy kèk anvan. Men, malerezman, sa a pral aktyèlman pa travay, paske ou se esansyèlman fè yon operasyon sou de kalite diferan. Koulye a, sa a se trè diferan de lòt lang tankou PHP ki yo se reyèlman loosey goosey ak sòt yo nan kalite. Yo ap jis tankou, yeah, tou sa, mwen pa pran swen. Jis ban m 'yon kalite, ak petèt mwen pral fè sa ki dwat. Nan ka sa a, se Swift trè strik sou kalite mouvman yo ke ou ap fè fas ak. Operatè somasyon sa a oswa operatè Anchènman gen esansyèlman se yon koup la diferan opsyon posib. Ou ka fè somasyon ak nonm antye relatif, oswa ou kapab fè fisèl Anchènman, ak petèt kèk lòt bagay yo tou. Men, si ke operatè pa rekonèt ki sa ki sou chak bò nan li, ou pito konbinezon an nan tout sa yo de kalite, se pa sa ki li nan tann, lè sa a li k ap pase yo lakòz yon echèk. Se konsa, nan ka sa a, ki sa sa vle di gen yon fisèl plis yon nonb antye relatif? Oke nan yon kontèks sa a, nou pwobableman vle fè yon operasyon fisèl Anchènman. Men, nan kou òdinatè a pa gen ki sòt de kontèks. Se konsa, nou bezwen bay ki plis enfòmasyon kite li konnen ki sa li se ke nou vle fè. Se konsa, nan lòt mo, lefèt ki se fòtman tape Swift vle di ou dwe fè yon ti kras nan plis travay jwenn li yo opere nan fason ke ou ta vle. Men, kòm yon rezilta, li se pi an sekirite. Apre sa, yon fwa ou gen pran nan kont sa yo kalite, bagay sa yo jis kòmanse franchman nan travay trè byen. Se konsa, nan ka sa a, nou Lè sa a ta fè fisèl Anchènman pa klèman Distribisyon nonb antye relatif nan yon fisèl pa vlope l 'nan sa a kapital S fisèl fonksyon, Lè sa a, lè l sèvi avèk Anchènman ak nan fisèl operatè li modifye varyab etikèt nou an, ak Lè sa a enprime li soti. Se konsa, lwen, se konsa sa ki bon? Tout dwa, se pou yo deplase sou. Koulye a, gen yon varyete de done kalite ke nou ka itilize nan Swift. Kòm ou te vin tounen abitye, nou kapab kreye yon etalaj mutabl. Epi sa etalaj ka sèlman gen yon kalite sèl. Se konsa, nan ka sa a, nou ap ale nan kreye yon ranje mutabl nan nonm antye relatif, ki nou pral rele klas, epi nou yo pral kapab nan magazen ki nan bracket kare sa a fòma menm jan ou te grandi abitye yo bay nan yon varyete de lòt lang. Men, remake ke isit la nou ap defini yon koup nan bagay sa yo. klas se yon variable-- mutabl nou pa itilize mo kle a kite. Se konsa, ki vle di nou ka Lè sa a modifye sa ki nan sa a etalaj. Li se nan kalite Array Int, epi nou ka di ke ki baze sou parantèz kare sa yo isit la. Koulye a, youn nan bagay ki bèl sou sa a se ke nou gen aksè a yon anpil nan plis enfòmasyon sou etalaj la jis lè l sèvi avèk kèk notasyon dot senp. Se konsa, pou egzanp, grades.count bay yo ban nou Nimewo a nan atik ki egziste nan ki etalaj, ki nou ka Lè sa a, jwenn aksè nan bèl fasil tou senpleman lè l sèvi avèk ki notasyon dot. Si ou vle ajoute plis atik yo etalaj sa a, ou pa kapab fè style la PHP kote ou jis klèman defini, Yon endèks bay yo, kèk valè ke ou vle insert. Olye de sa, sèvi ak ajoutra nan metòd an kalite a etalaj kole ki atik, 95, nan lis sa a. Se konsa, kounye etalaj sa a gen sa ki annapre yo contents-- 100, 0, 90, 85. Epi, koulye a nou te fen liv 95 ak sa yo ki kòm byen. Gen lòt fason nou ka kole bagay sa yo. Ou ka aktyèlman sèvi ak yon operatè somasyon, ki pral kapab entèprete kòm yon operasyon etalaj ajoutra. Epi ou ka Lè sa a, kole yon lòt etalaj, ki gen sa yo se 70 ak 80, ak sa yo ki etalaj. Se konsa, kounye a nou gen nan sa nan varyab sa a grades-- 100, 0, 90, 85, 95, 70, ak 80. Sa a se jis yon bèl ti kras Massachusetts Institute of Technology sik ki Swift bay yo ban nou. Se konsa, si nou vle sòm la klas, nou ap petèt ale nan vle repekte sou tout atik nan sa a riban. Epi nou gen, nan Swift, nosyon a nan yon pou riban menm jan ou ta atann. Men, wout la ke nou endike yon seri se yon ti kras diferan. Se konsa, nan ka sa a, nan sòm tout bagay, nou pral ale nan kreye yon tanporè varyab rele sòm nan lòd pou nou yo kenbe konte sa a. Apre sa, remake pou nou an bouk konstriksyon isit la. Pou endèks nan 0 ..