[Ag seinm ceoil] DAN AMRMENDARIZ: Tá ag gach duine, fáilte roimh an seimineár CS50, iOS App Forbartha Swift. Tá mé Dan Armendariz, agus mé preceptor na heolaíochta ríomhaireachta anseo ag Harvard. Agus is é an uair seo chugainn ag dul a bheith turas whirlwind de stuif oiread faoin ábhar agus is féidir linn oiriúnach. Beidh mé sa phost gach ceann de na cód foinse go mbeidh tú a fheiceáil sa lá atá inniu ar líne. Ní fhéadfadh muid a bheith in ann i ndáiríre dul thar gach rud go bhfuil mé go bhfuil mé léiríonn tú i an uair an chloig. Ach ar a laghad tá súil againn trí ar bharúlacha an cód foinse, beidh tú in ann chun iarracht a dhéanamh amach cad go díreach atá ag tarlú do na rudaí nach féidir linn a fháil go leor le. Tríd is tríd, an struchtúr Beidh an lae inniu labhairt mar seo a leanas. Beidh muid tús a chur amach ag déanamh roinnt bunúsacha error leis an teanga Swift, dul isteach i roinnt de na níos forbartha chomhréir na teanga Swift. Mar gheall ar an teanga i ndáiríre nua-aimseartha agus é a Tá a lán de leibhéal ard gnéithe, rudaí nach bhfuil muid le feiceáil i C fud CS50, nó fiú roinnt na teangacha eile go atá againn a thosaigh ag baint úsáide as i CS50 mar PHP, mar sin tá mé ag dul a bheith acu chun iarracht a dhéanamh a thabhairt isteach freisin roinnt topaicí a a bhaineann le teangacha leibhéal níos airde nach féidir leat a fheiceáil go domhain i CS50, ach beidh tú a fheiceáil i níos déanaí ranganna eolaíocht ríomhaireachta. Mar sin, tá sé ag dul a bheith ina docht pacáilte uair an chloig. Agus bíodh leisce ort in iúl dom Tá a fhios má tá aon cheist agat. Mar sin, má tá suim agat dhéanamh ar fhorbairt le Swift, nó i ndáiríre aon fhorbairt app iOS, tá cúpla de riachtanais. Gcéad dul síos, caithfidh tú a bheith ag baint úsáide Mac, ag rith sna samplaí go bhfuil muid ag dul a bheith ag baint úsáide inniu, leagan réasúnta nua de OS X. Sa chás seo, tá mé ag rith X 10.5. Is féidir leat a bheith ag rith 10.11 más mian leat. Ach gach rud go bhfuil tú ag dul go dtí a fheiceáil go bhfuil baint ag Xcode 7 agus níos déanaí, a bhfuil an leagan is déanaí de Swift, atá Swift 2.0. Seo i ndáiríre ar go leor idirdhealú tábhachtach. Tá a lán de na error athrú go leor suntasach i roinnt cásanna ó Swift 1.0, a eisíodh an bhliain seo caite, go Swift 2.0, a díreach tháinig amach an titim. Mar sin, táimid ag dul chun a thaispeáint Swift 2.0. A lán de na rudaí a chuardaíonn tú ar líne nuair a bhíonn tú ag iarraidh a fháil sa bhreis faisnéis faoi ar éagsúlacht na rudaí, b'fhéidir gur mhaith leat a sainráite cuardach Swift 2 seachas díreach plain d'aois Swift a dhéanamh cinnte go bhfaigheann tú an chomhréir ceart. Go deimhin, tá sé seo fíor go ginearálta. Níl le méid tapa forbartha ag tarlú sa teanga Swift ó shin i leith scaoileadh Apple é, I mo thuairimse, cad, tá sé curtha beagán níos mó ná bliain anois. Agus tá rudaí a athrú mór tagtha san am sin. Agus nach bhfuil amhlaidh frustrated más rud é, nuair a bhíonn tú ag féachaint timpeall do thopaicí ar Swift nó conas a chur i gcrích rud éigin ag baint úsáide as roinnt cód, mar shampla nó rud éigin nach ndéanann sé obair iarbhír ar Swift 2.0. Bí cinnte go bhfuil tú ag lorg go sonrach chun na leagan chun iarracht a dhéanamh éifeachtaí éagsúla a íoslaghdú leaganacha agus na cineál rudaí. Bainfidh mé triail as a chur in iúl ach roinnt rudaí atá éagsúil le leaganacha níos sine. Ach tá sé rud éigin chun faire amach do. Sin is dócha ag dul a bheith ar cheann de na tinneas cinn is mó go mbeidh tú ag le Swift Tá aimsiú Sampla cód atá níos sine, fiú amháin ag ar feadh cúpla mí, ag iarraidh a úsáid sé i do thionscadal níos nua-aimseartha. Agus sé ach go simplí nach bhfuil ag obair. Bhfuil tú ag fáil earráidí tiomsaitheoir, error earráidí, gach cineál rudaí ar mire. Mar sin, ach a n-othar le go bhfuil, agus beidh tú tá súil againn bhfuil taithí deas deas le an iomlán Swift. Anois is féidir leat join-- ndáiríre agus tá súil agam ní mór dúinn i ndáiríre fós an year-- seo CS 50 Apple app fhoireann a fhorbairt, a Beidh deis a thabhairt duit a shuiteáil aon apps a chruthú duit ar do feistí iOS. Mar sin, chur le breathnú ar an URL más rud é Tá suim acu go bhfuil tú. Mar sin, ach cúpla rudaí faoi Swift féin. Is teanga i dtoll a chéile. Ach feicfidh tú go bhfuil roinnt de na gnéithe sin a úsáid againn cheadú é a úsáid freisin i le beagán cosúil le léirmhíniú ar bhealach chomh maith. Tá a lán de na error a fuarthas ar iasacht ó C. Tá sé bunaithe agus scríofa i C. Agus mar sin beidh muid a fheiceáil go tá a lán de na takeaways ó do eolas atá ann cheana ó C go féidir linn port a Swift. Ach tá rudaí a dhéanamh sé an-difriúil ó C. Tá sé an-láidir clóscríofa. Níl bainistíochta cuimhne uathoibríoch. Nach bhfuil tú ag dul a bheith acu chun úsáid malloc nó áit ar bith saor in aisce. Tá sé seo deartha le haghaidh ghinearáltacht. Mar sin, i bhfocail eile, is féidir leat é a úsáid i gach cineál na comhthéacsanna, ó Apple Watch a iPhone léir ar an mbealach suas go dtí OS X, agus fiú roinnt freastalaithe, fiú roinnt scriptithe. Ach beidh orainn a fheiceáil go bhfuil an tacaíocht a thabhairt do scriptithe Níl go leor ann go fóill mar tá sé i dteangacha eile. Mar sin, is dócha go mbainfidh tú a bheith ag baint úsáide as seo go heisiach le haghaidh forbartha ar do Mac nó ar do iPhone. Agus tá sé a lán de na gnéithe nua-aimseartha. Agus tá a lán de na rudaí rudaí go táimid ag dul chun iarracht a dhéanamh aghaidh a thabhairt ar lá atá inniu ann, ach freisin ar ár ábhair a frankly, is féidir linn a chaitheamh ar chúrsaí ar fad. Go deimhin, CS 51, a bhfuil ar fáil seimeastar seo chugainn, Díríonn go leor ar na hábhair seo go bhfuil cur síos orthu thíos. Mar sin, is féidir leat a chaitheamh ar fad seimeastar tuiscint na rudaí seo. Ach táimid ag dul chun iarracht a a fháil trí iad ar a laghad, go leor go bhfuil tú Is féidir le tuiscint a fháil ar cad atá ag dul ar nuair a fhéachann tú ag clár Swift agus a bheith in ann a hack do bhealach a dhéanamh tríd sé ar an tionscadal deiridh. Anois go féidir le duine de na bealaí is fearr leat eolas breise ar seo a fháil Is frankly díreach trí Apple doiciméid dá bhforáiltear Swift. Níl a lán de na APIs atá ar fáil. Agus é seo bonn bhaile maith agat a lorg, rudaí ar leith go bhfuil tú ag iarraidh a dhéanamh le API a bhaineann iOS. Más mian leat a bhaint as an ceamara le haghaidh Mar shampla, is féidir leat a dtosaíonn ag anseo, agus freisin a úsáid Google agus Stack Overflow mar a bheadh ​​agat de ghnáth. Ceisteanna ar bith ar an roimh léim muid ceart i? Ceart go leor. A ligean ar bogadh ar aghaidh. Mar sin, an chéad, tá mé líon na n-shampla comhaid. Agus tá mé ag dul chun iarracht a céim trí iad sách tapa. Is é seo an comhad Dia duit an Domhain do Swift. Tá sé an-simplí. Níl ar bhealach níos comments ná mar atá cód iarbhír. Fógra go bhfuil an cód iarbhír ag an bun an-ar líne 14. Deir sé phriontáil. Agus ansin tá sé glao feidhm. Táimid ag dul isteach sé teaghrán a dtugtar Dia duit CS50. Fógra go níl aon leathstadanna. Fógra go níl aon phríomh slánuimhir. Níl aon cheann de na cruft a bhí againn le C. Nuair a bhíonn muid ag baint úsáide as Swift ar an mbealach seo, a bhfuil ach scríofa i gcomhad téacs agus a stóráil ar mo ríomhaire, ansin Is féidir liom a chur le chéile é agus rith sé. Fógra go bhfuil mé anseo nach n-úsáideann an IDE CS50. Glacann sé seo go bhfuil mé ag rith agus go bhfuil mé ar OS X, agus go bhfuil mé Xcode suiteáilte cheana ar an meaisín d'fhonn seo d'fheidhm i ndáiríre. Ach tá sé seo ach gnáth comhad téacs gur féidir linn a chur le chéile ansin agus in eagar. Mar sin a ligean ar a fheiceáil conas a oibríonn sé seo i ndáiríre. Cad más mian liom a chur le chéile é? 1.swift swiftc. Tar éis nóiméad nó dhó, sé Beidh a fheiceáil go bhfuil muid anois thiomsaigh seo i gcomhad ar a dtugtar 1. Agus anois ní mór dúinn i gcló ar ár CS50, ár n-iarratas Hello World in áit. Fógra rud amháin eile mar go maith é sin de réir réamhshocraithe, nach raibh againn a ionchur a / n a phriontáil líne nua. De réir réamhshocraithe, an fheidhm cló i Beidh Swift phriontáil líne nua ar do shon. Is féidir leat pas a fháil sa bhreis roghnach paraiméadar a insint nach é sin a dhéanamh. Ach Google le haghaidh tuilleadh eolais ar sin. De réir réamhshocraithe, beidh sé a dhéanamh ar an bprionta líne. Gach ceart, mar sin a ligean ar bogadh ar aghaidh ansin le roinnt rudaí eile. Mar sin, conas is féidir linn a shainiú i ndáiríre athróg? Is féidir linn a dhéanamh go bhfuil úsáid a bhaint as ar cheann de na dhá mhodh. Agus an ceann a ba mhaith liom a insint duit faoi ​​gcéad é an sainmhíniú seo ligean. Agus tá sé seo tábhachtach mar gheall ar go héifeachtach cad táimid ag déanamh is shainmhíniú ar tairiseach. Táimid ag dul a chruthú athróg, nó in áit a ainm a thugtar air i gcónaí, a chur ar fáil sé roinnt data-- i chás seo, an teaghrán Dan. Ach ag baint úsáide as an ligean eochairfhocal, tá muid ag rá go variable-- seo nó arís constant-- dtugtar Ní cúis í in ainm dul a athrú. Tá sé ag dul a bheith ar fud immutable ré an chláir seo nó ar fud na fad an comhthéacs go bhfuil athróg ar fáil. Tá sé seo tábhachtach i ndáiríre go nuair tá tú cuid de na sonraí nach bhfuil ag dul a athrú i do chlár, agus go mbainfidh tú a fheiceáil ar éagsúlacht na samplaí faoi ​​nuair ba mhaith linn a úsáid ligean i gcoinne an error eile, tá sé tábhachtach go bhfuil tú úsáid a ligean nuair is féidir mar gheall ar seo in iúl d' an teanga go bhfuil sé nach bhfuil ag dul a athrú, agus is féidir é a dhéanamh i ndáiríre a lán de na optimizations chun feabhas a chur ar an luas agus sábháilteacht do chlár. Agus ag sábháilteacht, ní chiallaíonn mé in iúl tuairteála sé le hearráidí dÚsachtach go bhféadfaimis a bheith accustomed a fheiceáil i C. Ansin, is féidir linn a úsáid idirshuíomh teaghrán a Cuach seo laistigh de teaghrán. Mar sin, is féidir linn a fheiceáil ar an bprionta líne, a phriontáil hello, agus ansin ag baint úsáide cúlslais parens oscailte, agus ansin an t-ainm mo athróg, sa chás seo tairiseach, dún an lúibíní. Tá mé ag go bunúsach ansin a chur ar an ábhar an t-ainm ar a dtugtar athróg taobh istigh de na teaghrán agus ansin priontáil an toradh ann. Níl athrú amháin eile chuig an gcomhad seo a bhfuil go bhfuil mé, ag an mbarr an-, a chur i líne shebang, a Sonraíonn go bunúsach ach gur mhaith liom a bhaint as an Ateangaire sciobtha, a Ciallaíonn sé sin go mé a thuilleadh thiomsú an clár ar leith. Is féidir liom a reáchtáil ach é mar a script féin. Ach tá sé seo, sa chás seo, taobh thiar de na radhairc á cur le chéile agus ansin á reáchtáil. Tá sé díreach dofheicthe a chur chugainn. Gach ceart, mar sin a ligean ar bogadh ar aghaidh. Mar sin níl beagán de trickery a tharla díreach roimh. Thaispeáin mé tú go bhfuil mé D'fhéadfadh a shainiú tairiseach. Agus d'fhéadfadh mé a chur ar fáil cuid de na sonraí chun é a dhéanamh. Ach sa chás seo, faoi deara nach raibh mé sonraigh iarbhír an cineál sonraí go bhfuil sé. Agus sin mar gheall ar an tiomsaitheoir, is féidir Swift tátal a bhaint astu an cineál sonraí díreach bunaithe ar na sonraí a chuir mé isteach é. Gheall ar a fhios sé go bhfuil ag a mheas seo athróg ar dheis anseo, ceart seo sonraí anseo, a fhios sé go bhfuil sé ar teaghrán. Agus mar sin is é an t-ainm tairiseach, dá bhrí sin dul chun bheith ina teaghrán chomh maith. Ach is féidir linn a bheith chomh maith follasach mar gheall ar an gcineál sin táimid ag dul a úsáid le haghaidh tairisigh nó athróg ag baint úsáide as an error instead-- a ligean ionann Teaghrán ainm colon Dan, rud a chiallaíonn sa chás seo tá muid dul ar ainm a thugtar air i gcónaí a shainiú. Tá sé ag dul a bheith de chineál Teaghrán. Agus is é an luach ag dul a bheith Dan. Anois an bealach eile a Is féidir linn a chruthú variables-- agus tá na hathróga mutable, a Ciallaíonn sé sin go bhfuil muid, i ndáiríre, ag dul chun a n-ábhar a athrú éigin i ré an comhthéacs go bhfuil go athróg defined-- linn a bain úsáid as an eochairfhocal var ionad ligean. Ach arís, de réir réamhshocraithe, ach amháin má tá a fhios agat gur gá duit a ionramháil go bhfuil na sonraí, iarracht a úsáid ligean do feabhsuithe feidhmíochta. Sa chás seo, is féidir liom ansin sonraigh an cineál sonraí go táimid ag súil le bheith taobh istigh de an athróg nua ar a dtugtar lipéad. Tá sé ag dul a bheith ina teaghrán. Agus táimid ag dul chun comhcheangail ansin dhá teaghráin le chéile, an teaghrán Dia duit, agus an teaghrán ionadú ag an athróg, nó in áit an t-ainm tairiseach. Mar sin, is é seo deas mar gheall ar an Tá PHP beag cosúil i go againn tá comhchaitéiniú teaghrán an-éasca. Ní chuirimid a go huathoibríoch úsáid a bhaint as aon saghas bainistíochta cuimhne a mhéadú an méid agus a dhéanamh aon saghas rudaí greannmhar ann. Oibríonn sé seo mar ba mhaith linn a bheith ag súil i ndáiríre. Ceart go leor, aon cheisteanna ar seo? Anois an chúis eile go ní mór dúinn tá an cumas a bheith in ann a shainiú cad cineál na n-athróg sonraí atá Is mar gheall ar uaireanta ní dhéanaimid ag iarraidh a athróga thúsú le cuid de na sonraí ag an pointe sainmhíniú. Mar sin, sa chás seo, a ligean ar rá gur mhaith liom a thosú ionchur roinnt grád i leabhar grád. Bhuel tá a fhios agam go bhfuil ceann de na athróga gur mhaith liom a bheith ag dul a bheith ina ghrád mutable. Agus tá a fhios againn freisin go bhfuil muid ag iarraidh é a bheith ina slánuimhir. Ach b'fhéidir nach bhfuil againn go fóill tá go grád atá ar fáil. I Swift, tá tú chun a shainiú an cineál sonraí go bhfuil a bhaineann le athróg nó a ligean tairiseach sula féidir leat i ndáiríre úsáid athróg. Toisc go bhfuil sé clóscríofa go láidir, caithfidh tú a chomhlachú le cineál leis na hathróga. Mar sin, sa chás seo, más rud é nach Tá mé ag gceart initialized an chéad le roinnt luach, ansin is gá dom a insint cad Swift Táim ag súil leis an gcineál sonraí a bheith. Agus tá sé ag dul chun fanacht chineál sin sonraí céanna ar fud an stair an chláir seo. Anois d'fhéadfá a bheith tempted a luaithe Chruthaigh mé an athróg grád agus ar choinníoll sé slánuimhir de 100, anois má tá mé ag iarraidh chun iarracht a comhcheangail teaghrán leis slánuimhir, D'fhéadfadh a bheith tempted a úsáid i gcónaí go oibreoir comhchaitéiniú teaghrán mar a rinne muid ach cúpla líne roimh. Ach ar an drochuair, Beidh sé seo i ndáiríre ní ag obair, mar go bhfuil tú go bunúsach ag feidhmiú oibríocht ar dhá chineál éagsúla. Anois tá sé seo an-difriúil ó eile Teangacha cosúil le PHP atá i ndáiríre goosey loosey lena n-saghas de chineálacha. Siad díreach ag cosúil, yeah, is cuma cad, ní féidir liom cúram. Just a thabhairt dom le cineál amháin, agus b'fhéidir go mbainfidh mé a dhéanamh ar an rud ceart. Sa chás seo, tá Swift thar a bheith dian faoi na cineálacha go bhfuil tú ag déileáil leis. Seo oibreoir suimiú nó oibreoir comhchaitéiniú Tá go bunúsach cúpla roghanna éagsúla féideartha. Is féidir leat a dhéanamh suimiú le slánuimhreacha, nó is féidir leat is féidir a dhéanamh comhchaitéiniú teaghrán, agus b'fhéidir roinnt rudaí eile chomh maith. Ach más rud é nach bhfuil oibreoir aithníonn an méid atá ar an dá thaobh de, nó in áit an teaglaim de na dhá chineál, nach bhfuil cad atá sé ag súil, ansin tá sé ag dul a chur faoi deara teip. Mar sin, sa chás seo, cad a chiallaíonn sé a bheith acu ar shraith móide slánuimhir? Go maith i gcomhthéacs seo, ba mhaith linn is dócha chun oibríocht comhchaitéiniú teaghrán. Ach ar ndóigh an ríomhaire Níl gur saghas chomhthéacs. Agus mar sin ní mór dúinn a chur ar fáil go eolas breise chun ligean a fhios sé cad é is é sin ba mhaith linn a dhéanamh. Mar sin, i bhfocail eile, ar an bhfíric go bhfuil Swift clóscríofa go láidir a chiallaíonn go bhfuil tú a dhéanamh ar beagán den obair bhreise chun é a fháil a oibriú an bhealach a bheadh ​​gur mhaith leat. Ach mar thoradh air sin, tá sé níos sábháilte. Agus nuair a bhíonn tú a chur ar san áireamh na cineálacha, rudaí ach tús frankly a bheith ag obair go maith go leor. Mar sin, sa chás seo, ba mhaith linn ansin dhéanamh comhchaitéiniú teaghrán trí réitigh go sainráite an tslánuimhir go teaghrán ag timfhilleadh sé seo caipiteal feidhm S Teaghrán, agus ansin ag baint úsáide as comhchaitéiniú teaghrán oibreoir a mhodhnú ar ár athróg lipéad, agus ansin a phriontáil amach. Go dtí seo, chomh maith? Ceart go, a ligean ar bogadh ar aghaidh. Anois tá éagsúlacht na sonraí cineálacha gur féidir linn a úsáid i Swift. Toisc go bhfuil tú i dtaithí ar, Is féidir linn a chruthú sraith mutable. Agus is féidir go sraith amháin go bhfuil cineál amháin. Mar sin, sa chás seo, táimid ag dul a chruthú a arrays mutable de slánuimhreacha, a beidh muid ag glaoch grád, agus beidh muid in ann a stóráil go sa lúibín cearnach formáid mar atá tú tar éis fás accustomed i réimse teangacha eile. Ach faoi deara go anseo tá muid shainmhíniú cúpla rudaí. Is grád ar variable-- mutable táimid ag a úsáid ar an eochairfhocal ligean. Mar sin, ciallaíonn gur féidir linn a mhodhnú ansin ar an ábhar an eagar. Tá sé de chineál Int Eagar, agus is féidir linn a rá go bhfuil bunaithe ar na lúibíní cearnacha anseo. Anois ar cheann de na rudaí deas faoi ​​seo é go bhfuil muid ag rochtain a fháil ar a lán de eolas breise mar gheall ar an sraith díreach ag baint úsáide as roinnt simplí ponc nodaireacht. Mar sin, mar shampla, Soláthraíonn grades.count a chur chugainn líon na míreanna atá ann sa mhéid is go eagar, ar féidir linn a rochtain a fháil ar go leor ansin go héasca ag baint úsáide as ach go ponc nodaireachta. Más mian leat a chur sa bhreis míreanna a ghabhann leis an eagar, Ní féidir leat a dhéanamh ar an stíl PHP áit a bhfuil tú díreach tar éis a shainiú go sainráite, ag innéacs ar leith, roinnt luach gur mian leat a chur isteach. Ina áit sin, bain úsáid as an iarcheangail modh sa chineál eagar a fhoscríbhinn go mír, 95, leis an liosta. Mar sin, anois tá an eagar seo a leanas contents-- 100, 0, 90, 85. Agus anois tá muid i gceangal 95 sin chomh maith. Tá bealaí eile féidir linn rudaí a fhoscríbhinn. Is féidir leat é a úsáid iarbhír oibreoir shuimiú, a a léiriú mar oibríocht iarcheangail eagar. Agus is féidir leat fhoscríbhinn ansin eile eagar, a bhfuil a t-ábhar atá 70 agus 80, leis an eagar. Mar sin, anois táimid tar éis an t-ábhar ar an athróg grades-- 100, 0, 90, 85, 95, 70, agus 80. Is é seo ach comhréire deas beag siúcra a sholáthraíonn Swift a chur chugainn. Mar sin, más mian linn chun suim an grád, tá muid, b'fhéidir dul go dtí gur mian a iterate thar gach mír sa lúb. Agus dhéanaimid bhfuil, i Swift, an coincheap de do lúb mar a bheifeá ag súil. Ach ar an mbealach a léiríonn linn a Tá réimse beagáinín difriúil. Mar sin, sa chás seo, go suim gach rud, beidh muid a ag dul a chruthú sealadach suim a dtugtar athróg d'fhonn dúinn a choimeád ar bun ar an líon. Agus faoi deara ár chun tógála lúb anseo. Le haghaidh innéacs i 0 ..