[Музички] ДАН AMRMENDARIZ: Секој, добредојдовте во семинарот CS50, iOS App развој со Свифт. Јас сум Дан Armendariz, и јас сум наставник на компјутерската наука тука на Харвард. И следниот час ќе биде виорот турнеја на колку работи на оваа тема, како што може да се вклопат. Јас ќе ја објавите на сите на изворниот код кои ќе ги видите на интернет денес. Ние може да не биде во можност да всушност, оди над сè дека сум дека сум Ви прикажуваат во овој час. Но барем се надевам дека преку коментарите на изворниот код, ќе бидете во можност да се обиде да дознаам што точно се случува за тие работи дека ние не сосема да се дојде до. Сè на сè, на структурата на денешниот разговор ќе биде како што следува. Ќе започне од тоа некои основни синтакса со јазикот Свифт, навлегуваме во некои од понапредните Синтаксата на Свифт јазик. Бидејќи јазикот е навистина модерен и тоа има голем број на високо ниво карактеристики, работи кои не треба виден во C текот CS50, или па дури и некои други јазици дека ние сме отворени користење во CS50 како PHP, па јас сум ќе мора да се обиде да се воведе, исто така, дел од темите кои се поврзани со високото ниво јазици дека не може да се види во длабочина во CS50, но ќе видите подоцна компјутерски науки класи. Значи тоа се случува да биде збиени час. И ве молиме да се чувствуваат слободни да ме пушти знам дали имате било какви прашања. Значи, ако сте заинтересирани правејќи развој со Свифт, или навистина било развој iOS стан, постојат неколку барања. Прво на сите, ќе мора да биде со користење на Mac, трчање во примерите дека ние се случува да биде во употреба и денес, релативно нова верзија на оперативен систем X. Во овој случај, јас се кандидирам X 10.5. Можете да се работи 10.11, ако сакате. Но, сето она што ви се случува да види се вклучуваат Xcode 7 и подоцна, која има најновата верзија на Свифт, која е Свифт 2.0. Ова е всушност прилично важна разлика. Голем дел од синтаксата има променети прилично значително во некои случаи од Свифт 1.0, кој беше објавен минатата година, да Свифт 2.0, кој само излезе оваа есен. Па ние ќе се покаже Свифт 2.0. А многу од работите кои да пребарувате за онлајн кога ќе се обидуваш да се добие дополнителни информации во врска со различни нешта, можеби ќе сакате да експлицитно пребарувате за Свифт 2 а не само обичен стар Свифт да се направи сигурни дека ќе добиете синтаксата точни. Всушност, ова е генерално точно. Има еден брз износот на развој случува во Свифт јазик откако Apple го отпушти, мислам што, тоа е малку повеќе од една година сега. И работите се променија драматично во тоа време. И така не се фрустрирани ако, кога сте во потрага наоколу теми за вршење на услуги брз или како да се постигне нешто со користење на некои пример кодот или нешто што не е така всушност работат на Свифт 2.0. Бидете сигурни дека сте во потрага специјално за таа верзија во обид да се минимизираат ефектите на различни верзии и оние видови на нештата. Ќе се обидам да се истакне само некои работи кои се различни со постарите верзии. Но тоа е нешто да внимаваш за. Што е веројатно нема да биде еден од најголемите главоболки дека ќе имаат со Свифт е изнаоѓање пример код, кој е постар, дури и само по неколку месеци, во обид да го користите тоа во вашата помодерен проект. И тоа само едноставно не функционира. Ти си добивање грешки компајлер, синтакса грешки, сите видови на луди нешта. Па само да бидете трпеливи со тоа, и се надевам дека ќе имаат прилично убаво искуство Свифт со генералниот пласман. Сега може да се, всушност, join-- и се надевам ние всушност има ваков оваа year-- CS 50 Јаболко App тимот за развој, која ќе ви овозможи да се инсталира било апликации кој ќе се создаде на вашиот iOS уреди. Па да ги разгледаме во овој URL ако сте заинтересирани за тоа го прават. Па само неколку работи во врска со самата Свифт. Таа е составена јазик. Но, ќе се види дека некои од карактеристиките кои ги користиме оставете ја да се користи и за малку како начин да се толкува, како и. Голем дел од синтаксата е позајмена од C. Тоа е врз основа и напишан во C. И така ќе се види дека постојат голем број на takeaways од вашиот постоечки знаења од C што можеме порта да Свифт. Но, постојат работи кои го прават тоа многу различна од В. Тоа е многу силно отчукува. Има автоматско управување со меморијата. Вие нема да мора да се користете Примерок или бесплатно насекаде. Тоа е дизајниран за општо добро. Значи со други зборови, можете да го користите во сите видови на контексти, од Apple Види на iPhone на целиот пат до OS X, и па дури и некои сервери, па дури и некои скриптирање. Но, ќе видиме дека поддршка за скриптирање не е сосема има уште како што е во други јазици. Па најверојатно ќе биде со користење на ова ексклузивно за развој на вашиот Mac или iPhone. И таа има многу модерни карактеристики. И многу од овие работи се работи кои ние ќе треба да се обиде да се обратам денес, но исто така и на нашите теми кои искрено, можеме да го посвети целото курсеви. Во фактот, CS 51, што е понудени следниот семестар, се фокусира многу на овие теми кои се опишани подолу. За да можете да го поминат целиот семестар разбирање на овие работи. Но, ние ќе треба да се обиде да се добие преку нив барем доволно да се може да се разбере она што е се случува кога ќе се погледне со брзина од програмата и да бидат способни да се пробие на вашиот пат низ него за финалниот проект. Сега е еден од најдобрите начини на кои може да се добиете дополнителни информации за ова е искрено само преку Епл документација за Свифт. Има многу на API кои се на располагање. И ова е добра база за вас да барате, конкретни работи што сакате да направите со API, вклучувајќи iOS. Ако сакате да ја користите камерата за На пример, можете да почнете да барате тука, и исто така го користат Гугл и Стак Прелевање како што нормално би. Било какви прашања во врска со овој пред да скокаат право во? Во ред. Ајде да се движи. Значи прво, имам бројот на пример датотеки. А јас ќе одам да се обиде да се повлече преку нив релативно брзо. Ова е Здраво Светот датотека за Свифт. Тоа е многу едноставно. Има начин повеќе коментари отколку што има вистински код. Известување на реалните код е на самото дно на линијата 14. Таа вели дека за печатење. И тогаш тоа е повик на функција. Ние сме поминува во неа низа наречен Здраво CS50. Забележи дека не постои точка-запирка. Известување дека нема int главната. Нема ниту еден од cruft што ги имавме со Ц. Кога се користат Свифт на овој начин, кој е само напишано во текстуална датотека и се чуваат на мојот компјутер, а потоа Можам да го компајлирате и да ја стартувате. Забележите дека овде сум некористење на CS50 ИРО. Ова значи дека јас сум трчање и дека јас сум на OS X, и дека сум Xcode веќе инсталиран на оваа машина со цел за ова за да всушност функција. Но, ова е само нормална текстуална датотека кои потоа може да се собере и уреди. Да видиме како тоа всушност се работи. Што ако сакам да го компајлирате? swiftc 1.swift. По една минута или две, тоа ќе видите дека ние имаме сега Составувач е ова во датотека наречена 1. И сега имаме нашите печатени CS50, нашите Hello World апликација наместо. Забележи една друга работа што добро е тоа што по дифолт, ние не треба да го внесете на / n да се печати нова линија. Стандардно, функцијата за печатење во Свифт ќе печати на нова линија за вас. Можете да помине евентуален дополнителен параметар за да се каже дека тоа не го стори тоа. Но на Google за повеќе информации за тоа. По дифолт, тоа ќе го стори линија за печатење. Добро, па ајде да се движи тогаш за некои други работи. Па како можеме навистина да дефинираат променливи? Можеме да го направиме тоа е со користење на еден од двата методи. И оној кој јас сакам да ти кажам Првата е во врска со дефиницијата пушти. И ова е важно бидејќи ефикасно она што го правиме е дефинирање константа. Ние ќе се обидеме да се создаде променлива, или подобро кажано, постојана нарече, за да го обезбеди некои data-- во овој случај, стринг Дан. Но, со помош на овој ајде клучни зборови, сакаме да го кажеме дека ова variable-- или повторно повика constant-- име, никогаш нема да се смени. Тоа се случува да биде непроменлива во текот времетраењето на оваа програма или во текот на Времетраењето на контекстот дека таа променлива е достапна. Ова е навистина важно дека кога имате некои податоци кои не се ќе се промени во вашата програма, и ќе видите различни примери за кога ќе сакате да го користите нека наспроти други синтакса, тоа е важно да користите дозволувајте Секогаш кога е можно, бидејќи ова нотифицирана на јазикот на кој што е нема да се промени, и тоа, всушност, може да врши многу оптимизации да се подобри брзината и безбедноста на вашата програма. И со безбедноста, јас не значи да таа несреќа со луди грешки кои би можеле да бидат навикнати да гледаат во В. Тогаш може да се користат низа интерполација да капсулирало ова во рок од стрингот. Па ние може да се види во овој печати линија, печати здраво, а потоа со помош обратна коса црта отворен parens, а потоа го името на променливата ми, во овој случај константна, затворете го загради. Јас сум во суштина потоа да се стави на Содржината на оваа променлива наречена име внатрешноста на низа и потоа печати резултатот таму. Има една друга промена До оваа податотека а тоа е дека имам, во самиот врв, се стави во shebang линија, која во основа, само ги специфицира што сакате да ја користите Свифт преведувач, значи дека јас повеќе не мораат да собере на оваа конкретна програма. Јас само може да се кандидира како своја скрипта. Но, ова е, во овој случај, зад сцените се собрани, а потоа што се извршуваат. Тоа е само невидливо за нас. Добро, па ајде да се движи. Па таму е малку на измама што се случило пред тоа. Те покажа дека сум може да се дефинира константа. И јас би можеле да обезбедат некои податоци да го стори тоа. Но, во овој случај, да се забележи дека не сум всушност, наведете го видот на податоците тоа е тоа. А тоа е затоа што на компајлер, Свифт може заклучиме од типот на податоците само врз основа на податоците кои ни го ставам во него. Затоа што знае дека од страна на оценување на оваа променлива токму тука, ова право податоци тука, таа знае дека тоа е стринг. Па така ова име затоа е постојана ќе биде променлива, како и. Но, ние исто така може да бидат експлицитни за типот кој е ние се случува да се користи за константи и променливи со користење на оваа синтакса instead-- дозволувајте името колон Стринг еднаква Дан, кој во овој случај значи дека ние сме ќе се дефинира константа нарече. Тоа се случува да биде од тип Стринг. И вредноста ќе биде Дан. Сега на друг начин на кој можеме да се создаде variables-- и овие се променливи променливи, кои значи дека ние сме, всушност, се случува да се промени нивната содржина некаде во траење од контекст дека таа променлива се defined-- ние користете var клучни зборови наместо ајде. Но, повторно, по дифолт, освен ако навистина знаете кои ви се потребни за да се манипулира со тие податоци, обидете да го користите за да подобрувања во перформансите. Во овој случај, тогаш можам наведете го видот на податоците кои се очекува да биде во внатрешноста на оваа нова променлива наречена етикета. Тоа се случува да биде стринг. И ние си оди за да потоа concatenate две жици заедно, стрингот здраво, и гудачкиот претставена од страна на променлива, или подобро кажано, постојаното име. Значи ова е убаво, бидејќи ова е малку PHP како со тоа што ние имаат многу лесно низа сплет. Ние не треба да се автоматски користете било каков вид на управување со меморијата да се зголеми големината и направи било кој вид на смешни работи таму. Ова работи како што ние, всушност, би се очекувало. Сите права, било прашања во врска со ова? Сега од друга причина што ние треба да имаат способност за да може да се дефинира она што Вид на променливи податоци е затоа што понекогаш не сакате да го иницијализирам променливи со некои податоци во точка на дефиниција. Значи во овој случај, да речеме што сакам да започне внесување некои оценки во градус книга. Па знам дека еден од варијабли кои сакам да бидам се случува да биде непостојана одделение. И ние исто така знаеме дека ние сакам тоа да биде цел број. Но, можеби се 'уште не имаат тоа одделение на располагање. Кај Свифт, ќе мора да го дефинирање на типот на податоци кој е поврзан со променлива или нека постојана Пред да можете да всушност ја користат таа променлива. Поради тоа што е силно отчукува, ќе мора да се дружат еден вид со овие променливи. Значи во овој случај, ако јас не сум правилно иницијализиран првиот со некоја вредност, тогаш јас треба да се каже она што Свифт Очекувам типот податоци да бидат. И тоа се случува да остане на истиот тип на податоци низ историјата на оваа програма. Сега може да биде во искушение штом Имам креирано овој градус променлива и тоа со што се предвидени цел број 100, сега ако јас сакате да се обиде да concatenate стринг со тој број, би можеле да бидат доведени во искушение да се уште го користат тој оператор низа сплет како што ни остана само неколку линии порано. Но за жал, ова всушност ќе не работат, затоа што се суштина вршење операција на два различни вида. Сега ова е многу различен од другите јазици како PHP кои се навистина loosey изплашен со нивниот вид на типови. Тие се само се допаѓа, да, што и да, не ми е грижа. Само дај ми еден тип, и можеби и јас ќе ја направат вистинската работа. Во овој случај, Свифт е многу строги за видовите кои ќе се занимаваат со. Овој оператор сума или конкатенација оператор во суштина неколку различни можни опции. Можете да го направите сума со цели броеви, или може да направи низа сплет, и можеби и некои други работи, како и. Но, ако тоа не го признава оператор она што е на двете страни на тоа, или, поточно, комбинација на сите овие два типа, не е она што го очекуваме, тогаш тоа нема да предизвика неуспех. Значи во овој случај, што значи тоа да има низа плус цел број? И во контекст на ова, веројатно ќе сакате да се направи операција на низа сплет. Но, се разбира на компјутерот не мора тој вид на контекст. И така ние треба да се обезбедат дека дополнителни информации да нека знаат што е тоа е дека ние сакаме да се направи. Значи со други зборови, тоа дека Свифт е силно отчукува значи дека треба да се направи малку дополнителна работа да се добие тоа да работат на начин на кој вие ќе го сакате. Но, како резултат на тоа, тоа е побезбедно. И штом еднаш ќе имаат преземат ги во предвид овие видови, работи само искрено да почне да се работи доста добро. Значи во овој случај, тогаш ние би изврши низа сплет со експлицитно кастинг цел број во низа со тоа што обвивката во овој капитал К низа функција, а потоа со помош на низа сплет оператор да ги изменат нашите променлива етикета, а потоа и да го испечатите. Досега добро? Добро, ајде да се движи. Сега постојат различни податоци видови кои може да се користат во Свифт. Како што се навикнати да, можеме да се создаде променливи низа. Само и дека низа може содржи еден тип. Значи во овој случај, ние ќе треба да се создаде на променливи низи од броеви, кои ние ќе го наречеме оценки, и ние ќе бидеме во можност за да ја запази дека во овој плоштад заградата формат како што сте свикнале во голем број на други јазици. Но се забележи дека тука се дефинирање на неколку работи. оценки е непостојана variable-- ние не го користат ајде клучен збор. Па тоа значи дека тогаш ние може да го менува Содржината на оваа низа. Тоа е од типот Низа int, а ние може да се каже дека врз основа на овие квадратни загради тука. Сега е еден од убавите работи во врска со ова е дека ние имаат пристап до голем број на дополнителни информации за низа само користење некои едноставни точка нотација. Така на пример, grades.count обезбедува до нас бројот на предмети кои постојат во таа низа, која потоа можеме да пристапите прилично лесно, едноставно со помош на таа точка нотација. Ако сакате да додадете дополнителни предмети на оваа низа, не можете да направите стилот на PHP каде што само експлицитно да се дефинира, во даден индекс, некои вредност што сакате да ја внесете. Наместо тоа, користете додавај метод во вид на низа за да се додаде таа ствар, 95, на оваа листа. Па сега оваа низа има следниве contents-- 100, 0, 90, 85. И сега сме во прилог 95 до тоа како добро. Постојат и други начини можеме да додадете работи. Ти всушност може да се користи оператор збир, која ќе се толкува како операција низа додавај. А потоа може да се додаде уште еден низа, чии содржини се 70 и 80, за таа низа. Така, сега имаме на содржина на овој променлив grades-- 100, 0, 90, 85, 95, 70 и 80. Ова е само убаво малку синтаксички шеќер што Свифт дава нам. Значи, ако сакаме да се сумира на оценки, ние сме можеби ќе сакаат да iterate во текот на секој елемент во овој циклус. И ние имаме, кај Свифт, поимот на за телефонска линија, како што би очекувале. Но начинот на кој ние се покаже опсег е малку поинаква. Значи во овој случај, да се сумира сè, ние ќе случува да се создаде привремена променлива наречена сума со цел за нас да се одржи овој брои. И известување за нашите јамка изградба тука. За индекс во 0 ..