[موسیقی] DAN AMRMENDARIZ: هر کس، به سمینار CS50 استقبال، در iOS توسعه نرم افزار با سویفت. من دن Armendariz به هستم، و من یک معلم هستم علوم کامپیوتر اینجا در دانشگاه هاروارد. و یک ساعت بعد است برای رفتن به یک تور گردباد از مسائل به اندازه در مورد این موضوع که ما می توانیم مناسب است. من همه از کد منبع ارسال که شما امروز آنلاین را ببینید. ما نمی ممکن است قادر به در واقع بیش از همه چیز به که من که من نشان دادن شما در این ساعت است. اما حداقل امیدوارم از طریق نظر کد منبع، شما قادر خواهید بود به تلاش برای کشف کردن آنچه دقیقا برای کسانی که چیز اتفاق می افتد که ما کاملا به دریافت کنید. به طور کلی، ساختار بحث امروز به شرح زیر است. ما شروع به انجام برخی از عمومی نحو با زبان سویفت، رفتن به برخی از پیشرفته تر نحو زبان سویفت. از آنجا که زبان است واقعا مدرن و آن را تا به بسیاری از سطح بالا ویژگی های، چیزهایی که ما ندارد در C سراسر CS50 دیده می شود، و یا حتی برخی از زبان های دیگر که ما شروع به با استفاده از در CS50 مانند PHP، بنابراین من می خواهم به باید سعی کنید به معرفی نیز برخی از موضوعاتی که به زبان سطح بالاتر مربوط که شما ممکن است در عمق در CS50 را مشاهده کنید، اما شما در بعد را ببینید کلاس های علوم کامپیوتر است. پس از آن برای رفتن به یک محکم ساعت بسته بندی شده. و لطفا به من اجازه دهید اگر شما هر گونه سوال. بنابراین اگر شما علاقه مند هستید در انجام توسعه با سویفت، و یا واقعا هر گونه توسعه برنامه IOS، یک زن و شوهر از الزامات وجود دارد. اول از همه، شما باید با استفاده از مک، در حال اجرا در نمونه که ما می رویم تا با استفاده از امروز، یک نسخه از سیستم عامل نسبتا جدید X. در این مورد، من در حال اجرا X 10.5. شما می توانید در حال اجرا 10.11 اگر شما می خواهید. اما همه چیز که شما در حال رفتن به ببینید که شامل Xcode متعلق 7 و بعد، که دارای آخرین نسخه سویفت است که سویفت 2.0. این در واقع خیلی تمایز مهم است. بسیاری از نحو است بسیار قابل توجهی تغییر در برخی موارد از Swift 1.0، که در سال گذشته منتشر شد، به سویفت 2.0، که فقط بیرون آمد این سقوط. بنابراین ما قصد داریم به نشان می دهد سویفت 2.0. بسیاری از چیزهایی که شما برای آنلاین جستجو هنگامی که شما تلاش برای به دست آوردن اضافی اطلاعات در مورد انواع چیزهایی، شما ممکن است به صراحت می خواهید به جستجو برای سویفت 2 و نه تنها ساده و قدیمی سویفت به مطمئن شوید که شما دریافت نحو درست. در واقع، این است به طور کلی درست است. یک مقدار سریع توسعه وجود دارد اتفاق می افتد در زبان سویفت زمانی که اپل آن را منتشر شد، من فکر می کنم چه، آن را کمی بیش از یک سال بوده است اکنون. و همه چیز تغییر کرده به طور چشمگیری در آن زمان. و پس از انجام نا امید نمی شود اگر، زمانی که شما به دنبال در اطراف برای موضوعات در مورد سویفت و یا چگونه برای به انجام رساندن چیزی با استفاده از برخی از مثال کد یا چیزی است که آن را نمی کند در واقع در سویفت 2.0 کار می کنند. اطمینان حاصل کنید که شما به دنبال به طور خاص برای آن نسخه سعی کنید به حداقل رساندن اثرات مختلف نسخه و کسانی که چیزها. من سعی می کنم به این نکته اشاره فقط برخی از چیزهایی که به نسخه های قدیمی تر متفاوت است. اما آن چیزی به مراقب است. که احتمالا برای رفتن به یکی از بزرگترین سردرد که شما با سویفت دارند، یافتن به عنوان مثال کد است که مسن تر، حتی اگر فقط توسط چند ماه، تلاش برای استفاده از آن را در پروژه مدرن تر خود را. و آن را فقط به سادگی کار نمی کند. شما در حال گرفتن خطاهای کامپایلر، نحو اشتباهات، تمام انواع چیزهای دیوانه. پس فقط بیمار با شود که، و شما امیدوارانه یک تجربه بسیار خوب با کلی سویفت. در حال حاضر واقع شما می توانید join-- و من امیدوارم که ما در واقع هنوز هم این این year-- دارند اپل برنامه CS 50 تیم توسعه، که به شما اجازه نصب هر برنامه که شما را در دستگاه های iOS خود را ایجاد کنید. بنابراین یک نگاهی به این URL را اگر شما علاقه مند به انجام آن هستند. بنابراین فقط چند همه چیز در مورد Swift است. این زبان یک زبان وارد شده است. اما شما ببینید که برخی از از ویژگی های که استفاده می کنیم آن اجازه داده شود نیز در کمی استفاده می شود مثل یک تفسیر راه است. بسیاری از نحو قرض گرفته است از C. آن بر اساس و در C. نوشته و بنابراین ما خواهید دید که هستند بسیاری از takeaways وجود دارد از دانش موجود خود را از C که ما می توانیم به پورت سویفت. اما چیزهایی وجود دارد که آن را بسیار متفاوت از C. آن است که بسیار به شدت تایپ. مدیریت حافظه خودکار وجود دارد. شما در حال رفتن به به استفاده از malloc و یا هر جای رایگان. آن را برای عموم طراحی شده است. بنابراین به عبارت دیگر، شما می توانید آن را در استفاده تمام انواع زمینه، از اپل دیده بان به آی فون تمام راه را تا به OS X، و حتی برخی از سرویس دهنده ها، حتی برخی از برنامه نویسی. اما خواهیم دید که پشتیبانی برای برنامه نویسی است که هنوز کاملا وجود به عنوان آن را در زبان های دیگر است. بنابراین به احتمال زیاد شما با استفاده از این به طور انحصاری برای توسعه در مک و یا آی فون خود را خود را. و آن را تا بسیاری از ویژگی های مدرن است. و بسیاری از این چیزها چیزهایی که ما در حال رفتن به تلاش برای رسیدگی امروز، بلکه مباحث ما که رک و پوست کنده، ما می توانیم کل دوره اختصاص. در واقع، CS 51 است، که ترم بعد ارائه شده، تمرکز زیادی در مورد این موضوع که در زیر توضیح داده. بنابراین شما می توانید با دوره ترم کامل صرف درک این چیزها. اما ما قصد داریم به تلاش از طریق آنها حداقل به اندازه کافی که شما می توانید درک چه که در زمانی که شما نگاه کنید در یک برنامه سویفت و قادر به هک راه خود را از طریق آن برای پروژه نهایی. در حال حاضر یکی از بهترین راه هایی که شما می توانید دریافت اطلاعات بیشتر در این رک و پوست کنده است فقط از طریق اپل اسناد و مدارک برای سویفت ارائه شده است. در بسیاری از رابط های برنامه کاربردی وجود دارد که در دسترس هستند. و این پایگاه را به خانه برای شما خوب است برای، همه چیز خاص نگاه که شما می خواهید با یک API مربوط به سیستم عامل iOS. اگر شما می خواهید به استفاده از دوربین برای به عنوان مثال، شما می توانید شروع به دنبال در اینجا، و همچنین گوگل و پشته استفاده سرریز به عنوان شما را به طور معمول. هر گونه سوال در این قبل از ما در سمت راست پرش؟ خیلی خوب. اجازه دهید در حرکت. بنابراین برای اولین بار، من یک تعداد مثال فایل های. و من قصد دارم به سعی کنید به گام از طریق آنها نسبتا به سرعت. این فایل سلام جهان برای سویفت است. این بسیار ساده است. این نظرات راه بیشتر وجود دارد از کد واقعی وجود دارد. توجه داشته باشید که کد واقعی است در پایین در خط 14. این گزارش می گوید نسخه قابل چاپ. و سپس آن را فراخوانی تابع است. ما در حال عبور به آن رشته به نام سلام CS50. توجه داشته باشید که هیچ سمی کالن وجود دارد. توجه داشته باشید که هیچ اصلی اعضای هیات وجود دارد. هیچ یک از وجود دارد فایلهای بیهوده است که ما با C. حال هنگامی که ما با استفاده از سویفت در این راه، است که فقط در یک فایل متنی نوشته شده است و ذخیره شده بر روی کامپیوتر من، پس از آن من می توانم آن را کامپایل و اجرا کنید. توجه داشته باشید که در اینجا من با استفاده از IDE CS50 نیست. این فرض که من در حال اجرا و که من در OS X هستم، و که من در حال حاضر نصب Xcode متعلق به در این دستگاه به منظور برای این در واقع تابع. اما این فقط یک فایل متنی معمولی است که ما پس از کامپایل می توانید و ویرایش کنید. بنابراین بیایید ببینید که چگونه این در واقع کار می کند. اگر من می خواهم به آن را کامپایل؟ 1.swift swiftc. پس از یک یا دو لحظه، آن را خواهید دید که ما در حال حاضر این را به یک فایل به نام 1 وارد شده است. و در حال حاضر ما CS50 ما چاپ، نرم افزار سلام جهان ما و نه. توجه داشته باشید یک چیز دیگر به عنوان خوب است که به طور پیش فرض، ما به ورودی ندارد A / N برای چاپ یک خط جدید. به طور پیش فرض، تابع چاپ در سویفت یک خط جدید برای شما چاپ کنید. شما می توانید اضافی اختیاری عبور پارامتر به آن را به انجام این کار نیست. اما گوگل برای کسب اطلاعات بیشتر بر روی آن. به طور پیش فرض، آن را به خط چاپ را انجام دهد. خوب، پس اجازه دهید در حرکت سپس به برخی چیزهای دیگر. پس چگونه می تواند ما در واقع متغیرهای تعریف؟ ما می توانیم انجام این کار با استفاده از یکی از دو روش. و یکی که من می خواهم به شما بگویم در مورد اول این تعریف اجازه است. و این مهم است چون به طور موثر آنچه که ما در حال انجام است تعریف یک ثابت. ما می رویم به ایجاد یک متغیر، یا به جای یک نام نام ثابت، ارائه به برخی از آن data-- در این مورد، رشته دن. اما با استفاده از این اجازه کلید واژه، ما می گویند که این variable-- یا دوباره constant-- نام نام و نام خانوادگی است هرگز به تغییر کند. آن را به تغییر ناپذیر در سراسر مدت زمان این برنامه و یا در طول مدت زمان زمینه که آن متغیر در دسترس است. این است که واقعا مهم است که وقتی شما برخی اطلاعات است که نه رفتن به تغییر در برنامه خود، و شما نمونه های مختلف را ببینید در مورد زمانی که ما می خواهیم به استفاده از اجازه دهید در مقابل نحو دیگر، این مهم است که شما با استفاده اجازه دهید هر کجا که ممکن است به دلیل این اطلاع زبان که آن را رفتن به تغییر، و آن را در واقع می توانید انجام بسیاری از بهینه سازی به منظور بهبود سرعت و ایمنی برنامه خود را. و با ایمنی، منظور من اجازه نمی تصادف آن را با خطاهای دیوانه که ما ممکن است عادت به دیدن در C. پس ما می توانیم الحاق رشته استفاده برای کپسوله کردن این در یک رشته است. بنابراین ما می توانیم در این دید خط چاپ، چاپ سلام، و سپس با استفاده از بک اسلش پرانتز باز، و سپس نام متغیر من، در این ثابت مورد، بستن پرانتز. من اساسا سپس قرار دادن محتویات این متغیر به نام نام داخل رشته و سپس چاپ نتیجه وجود دارد. یک تغییر دیگر به این تصویر وجود دارد که این است که من، در بالا بسیار، را در یک خط ابتکار، که اساسا فقط مشخص که من می خواهم به استفاده از مترجم سویفت، که بدان معنی است که من دیگر به کامپایل برنامه های ویژه. من فقط می تواند آن را مانند اسکریپت خود را اجرا کنید. اما این، در این مورد، در پشت صحنه در حال تدوین است و پس از آن در حال اجرا. آن را فقط به ما نامرئی بود. خوب، پس اجازه دهید در حرکت. پس یک ذره از حیله گری وجود دارد که درست قبل از اتفاق افتاده است. من به شما که من نشان داد می تواند یک ثابت تعریف کنیم. و من می توانم برخی از داده ها را به انجام آن فراهم می کند. اما در این مورد، توجه کنید که من نمی در واقع نوع داده را مشخص که آن است. و این به این دلیل که کامپایلر، سویفت می توانید پی بردن به نوع داده ها فقط بر اساس بر روی داده است که من به آن قرار داده است. از آنجا که آن می داند که با ارزیابی این متغیر در اینجا، این حق داده در اینجا، آن می داند که آن یک رشته است. و بنابراین این نام ثابت است بنابراین برای رفتن به یک رشته است. اما ما همچنین می توانید صریح و روشن می شود در مورد نوع که ما می رویم به استفاده از آن برای ثابت یا متغیر با استفاده از این نحو instead-- اجازه دهید رشته نام کولون برابر دن، که در این مورد به معنی ما رفتن به تعریف یک نام نام ثابت است. آن را به از نوع رشته. و ارزش است برای رفتن به دن. در حال حاضر راه های دیگر است که ما می توانیم ایجاد variables-- و این متغیرها تغییر پذیر هستند، که معنی است که ما، در واقع، رفتن به تغییر محتوای آنها گاهی اوقات در مدت زمان زمینه که آن متغیر است defined-- ما استفاده از کلمه کلیدی var جای دهید. اما باز هم، به طور پیش فرض، مگر اینکه شما می دانید که شما نیاز به دستکاری داده ها، سعی کنید به استفاده اجازه دهید برای بهبود عملکرد. در این مورد، من پس از آن می توانید تعیین نوع داده که ما انتظار داریم به داخل می شود این متغیر جدید به نام برچسب. آن را به یک رشته است. و ما قصد داریم تا پس از آن الحاق دو رشته با هم، رشته سلام، و رشته ارائه شده توسط متغیر، و یا به جای نام ثابت است. بنابراین این خوب به دلیل این است است که تا حدودی مانند که ما پی اچ پی دارند الحاق رشته بسیار آسان است. ما به طور خودکار به ندارد استفاده از هر نوع از مدیریت حافظه برای افزایش اندازه و انجام هر نوع از چیزهای خنده دار وجود دارد. این نسخهها کار به عنوان ما در واقع انتظار می رود. همه حق است، هر گونه سوال در مورد این؟ در حال حاضر دلیل دیگری که ما نیاز شما توانایی قادر به تعریف آنچه نوع متغیر داده ها است چون گاهی اوقات ما نمی می خواهم به مقداردهی اولیه متغیر با برخی از داده ها در نقطه تعریف. بنابراین در این مورد، اجازه دهید بگویم که من می خواهم برای شروع وارد برخی نمرات را به یک کتاب درجه. خب من می دانم که یکی از متغیرهایی که من می خواهم به در حال رفتن به یک کلاس تغییر پذیر. و ما نیز می دانیم که ما خواهید آن را به یک عدد صحیح. اما شاید ما هنوز نمیدانیم که درجه در دسترس است. در سویفت، شما را به تعریف نوع داده است که با مرتبط متغیر و یا یک اجازه ثابت قبل از واقع شما می توانید استفاده از آن متغیر است. دلیل آن است که به شدت تایپ، شما باید به یک نوع ارتباط با این متغیرها باشد. بنابراین در این مورد، اگر من به درستی نمی مقداردهی اولیه برای اولین بار با برخی از ارزش، پس از آن من نیاز به سویفت بگویم چه من انتظار دارم که نوع داده شود. و آن را به باقی می ماند که نوع داده های مشابه در طول تاریخ این برنامه است. در حال حاضر شما ممکن است به عنوان به زودی به عنوان وسوسه من این متغیر درجه ایجاد کرده اند و ارائه آن عدد صحیح از 100، در حال حاضر اگر من می خواهید امتحان کنید به الحاق یک رشته با عدد صحیح، ممکن است وسوسه هنوز هم استفاده از که اپراتور الحاق رشته مثل ما فقط چند خط قبل از انجام. اما متاسفانه، این خواهد شد در واقع نه کار، چرا که شما می اساسا انجام یک عملیات بر روی دو نوع مختلف. در حال حاضر این بسیار متفاوت از دیگر است زبان هایی مانند PHP که واقعا احمق loosey با مرتب کردن خود از انواع. آنها فقط دوست دارم، آره، هر چیز دیگری، برای من مهم نیست. فقط به من یک نوع را، و شاید من درست انجام دهد. در این مورد، سویفت است بسیار سخت در مورد انواع که شما با خرید و فروش. این اپراتور جمع و یا عملگر الحاق اساسا یک زن و شوهر گزینه های مختلف امکان پذیر است. شما می توانید جمع انجام با اعداد صحیح، و یا شما می توانید الحاق رشته انجام دهید، و شاید برخی از چیزهای دیگر است. اما در صورتی که اپراتور به رسمیت نمی شناسد آنچه که در دو طرف آن، و یا به جای ترکیبی از آن دو نوع است، چه آن را انتظار نیست، سپس آن را به علت شکست. بنابراین در این مورد، به چه معناست به یک رشته به علاوه یک عدد صحیح؟ خوب در زمینه این، ما احتمالا می خواهید برای انجام یک عملیات الحاق رشته. اما البته کامپیوتر که مرتب سازی بر اساس زمینه ندارد. و بنابراین ما نیاز به ارائه که اطلاعات اضافی اجازه دهید آن را دانم آنچه در آن این است که ما می خواهیم انجام. بنابراین به عبارت دیگر، این واقعیت است که سویفت به شدت تایپ معنی است که شما باید برای انجام یک کمی کار اضافی برای به دست آوردن آن را به کار راه که شما می خواهید. اما به عنوان یک نتیجه، آن را امن تر است. و هنگامی که شما به حساب آن دسته از انواع، همه چیز فقط رک و پوست کنده شروع به کار بسیار خوب است. بنابراین در این مورد، ما پس از آن انجام الحاق رشته توسط صریحا ریخته گری عدد صحیح را به یک رشته با بسته بندی آن در این سرمایه تابع S رشته، و سپس با استفاده الحاق رشته اپراتور برای تغییر متغیر label ما، و سپس آن را چاپ کنید. تا کنون خیلی خوب؟ همه حق است، اجازه دهید در حرکت. در حال حاضر انواع مختلفی از داده ها وجود دارد انواع که ما می توانیم در سویفت استفاده کنید. همانطور که شما برای تبدیل شدن به عادت کرده اند، ما می توانیم یک آرایه تغییرپذیر ایجاد کنید. و آن آرایه می تواند تنها شامل نوع تک. بنابراین در این مورد، ما قصد داریم برای ایجاد آرایه تغییرپذیر از اعداد صحیح، که ما نمرات پاسخ، و ما قادر خواهد بود به ذخیره است که در این براکت فرمت به عنوان شما عادت کرده ام در انواع زبان های دیگر. اما توجه کنید که در اینجا ما تعریف یک چند چیز است. نمرات variable-- تغییرپذیر است ما کلید واژه اجازه استفاده کنید. به طوری که معنی است که ما پس از آن می توانید تغییر دهید محتویات این آرایه. این آرایه از نوع int است، و ما می توانیم بگویم که بر اساس این براکت مربع است. در حال حاضر یکی از چیزهای خوبی که در مورد این که ما است دسترسی به بسیاری از اطلاعات اضافی در مورد آرایه فقط با استفاده از برخی از نماد نقطه ساده است. بنابراین برای مثال، grades.count فراهم می کند به ما تعداد آیتم هایی که در که وجود دارد آرایه، که ما پس از آن می تواند بسیار دسترسی به راحتی با استفاده از آن به سادگی نماد نقطه. اگر شما می خواهید برای اضافه کردن اضافی اقلام به این آرایه، شما می توانید سبک پی اچ پی نیست که در آن شما فقط به وضوح تعریف، در شاخص داده می شود، برخی از ارزش که شما می خواهید برای وارد کردن. در عوض، استفاده از الحاق روش در نوع آرایه به اضافه که در مورد، 95، به این لیست است. بنابراین در حال حاضر این آرایه به شرح زیر است contents-- 100، 0، 90، 85. و در حال حاضر ما به اضافه 95 تا آن نیز هست. راه های دیگر وجود دارد ما می توانیم چیزهای اضافه کنید. شما می توانید در واقع استفاده از یک اپراتور جمع، که به عنوان تفسیر عملیات الحاق آرایه. و سپس می توانید یکی دیگر از اضافه آرایه، که مطالب 70 و 80، به که آرایه. بنابراین در حال حاضر ما باید مطالب مندرج در این متغیر grades-- 100، 0، 90، 85، 95، 70، و 80. این فقط یک نحوی کمی خوب است شکر که سریع فراهم می کند به ما. بنابراین اگر ما می خواهیم به جمع نمرات، ما شاید هستید رفتن به می خواهم به تکرار بیش از هر آیتم در این حلقه. و ما لازم، در سویفت، مفهوم از یک حلقه for عنوان انتظار می رود. اما راه است که ما نشان می دهد طیف کمی متفاوت است. بنابراین در این مورد، به خلاصه همه چیز، ما برای ایجاد یک موقت متغیر مجموع به نام به منظور برای ما برای حفظ این تعداد. و متوجه برای ما ساخت و ساز حلقه در اینجا. شاخص در 0 ..