[MUSIC PLAYING] DAN AMRMENDARIZ: Semua orang, selamat datang ke seminar CS50, iOS App Pembangunan dengan Swift. Aku Dan Armendariz, dan aku pembimbing yang ilmu komputer di Harvard. Dan satu jam berikutnya akan menjadi tur angin puyuh sebanyak barang tentang topik ini seperti yang kita bisa cocok. Saya akan posting semua kode sumber Anda akan melihat hari ini online. Kita mungkin tidak dapat benar-benar pergi atas segala sesuatu bahwa aku bahwa aku menunjukkan Anda pada saat ini. Tapi setidaknya mudah-mudahan melalui komentar-komentar dari kode sumber, Anda akan dapat mencoba untuk mencari tahu apa yang sebenarnya terjadi untuk hal-hal bahwa kita tidak cukup sampai ke. Secara keseluruhan, struktur bicara hari ini akan sebagai berikut. Kami akan mulai melakukan beberapa dasar sintaks dengan bahasa Swift, pergi ke beberapa lebih maju sintaks dari bahasa Swift. Karena bahasa benar-benar modern dan memiliki banyak tingkat tinggi fitur, hal-hal yang kita tidak terlihat di C seluruh CS50, atau bahkan beberapa bahasa lainnya bahwa kita sudah mulai menggunakan di CS50 seperti PHP, jadi saya akan harus mencoba untuk memperkenalkan juga beberapa topik yang terkait dengan bahasa tingkat tinggi Anda mungkin tidak melihat secara mendalam dalam CS50, tetapi Anda akan melihat nanti kelas ilmu komputer. Jadi itu akan menjadi erat dikemas jam. Dan jangan ragu untuk membiarkan saya tahu jika Anda memiliki pertanyaan. Jadi jika Anda tertarik dalam melakukan pengembangan dengan Swift, atau benar-benar setiap pengembangan aplikasi iOS, ada beberapa persyaratan. Pertama-tama, Anda harus menggunakan Mac, berjalan di contoh bahwa kita akan menggunakan hari ini, versi yang relatif baru OS X. Dalam hal ini, saya sedang menjalankan X 10.5. Anda dapat berjalan 10.11 jika Anda ingin. Tapi segala sesuatu yang Anda akan lihat adalah melibatkan Xcode 7 dan kemudian, yang memiliki versi terbaru Swift, yang merupakan Swift 2.0. Ini sebenarnya cukup perbedaan penting. Banyak sintaks memiliki berubah cukup signifikan dalam beberapa kasus dari Swift 1.0, yang dirilis tahun lalu, untuk Swift 2.0, yang baru saja keluar musim gugur ini. Jadi kita akan menunjukkan Swift 2.0. Banyak hal-hal yang Anda mencari secara online ketika Anda mencoba untuk mendapatkan tambahan informasi tentang berbagai hal, Anda mungkin ingin secara eksplisit mencari Swift 2 daripada Swift sekadar tua untuk membuat Pastikan bahwa Anda mendapatkan sintaks yang benar. Bahkan, ini umumnya benar. Ada sejumlah cepat pembangunan terjadi dalam bahasa Swift sejak Apple merilis itu, saya pikir apa, sudah sedikit lebih dari satu tahun sekarang. Dan hal yang telah berubah dramatis pada waktu itu. Dan jadi jangan frustrasi jika, ketika Anda mencari di sekitar untuk topik tentang Swift atau bagaimana untuk mencapai sesuatu yang menggunakan beberapa contoh kode atau sesuatu yang tidak benar-benar bekerja pada Swift 2.0. Pastikan Anda mencari khusus untuk versi yang mencoba untuk meminimalkan efek yang berbeda versi dan orang-orang macam hal. Saya akan mencoba untuk menunjukkan hanya beberapa hal yang berbeda dengan versi yang lebih tua. Tapi itu sesuatu yang harus diperhatikan. Itu mungkin akan menjadi salah satu sakit kepala terbesar bahwa Anda akan memiliki dengan Swift adalah menemukan contoh kode yang lebih tua, bahkan hanya oleh beberapa bulan, mencoba untuk menggunakan dalam proyek modern Anda lebih. Dan itu hanya cukup tidak bekerja. Anda mendapatkan kesalahan kompilator, sintaks kesalahan, segala macam hal gila. Jadi hanya bersabar dengan itu, dan mudah-mudahan Anda akan memiliki pengalaman yang cukup bagus dengan keseluruhan Swift. Sekarang Anda dapat benar-benar join-- dan saya berharap kita sebenarnya masih memiliki ini year-- ini CS 50 Apple app tim pengembangan, yang akan memungkinkan Anda untuk menginstal aplikasi apapun yang Anda buat pada perangkat iOS Anda. Jadi kita lihat URL ini jika Anda tertarik untuk melakukan itu. Jadi hanya beberapa hal tentang Swift sendiri. Ini adalah bahasa yang dikompilasi. Tapi Anda akan melihat bahwa beberapa fitur yang kita gunakan memungkinkan untuk digunakan juga dalam sedikit seperti ditafsirkan cara juga. Banyak sintaks yang dipinjam dari C. Ini didasarkan dan ditulis dalam C. Dan jadi kita akan melihat bahwa ada banyak takeaways dari pengetahuan yang ada dari C yang kita dapat port untuk Swift. Tapi ada hal-hal yang membuatnya sangat berbeda dari C. Hal ini sangat sangat diketik. Ada manajemen memori otomatis. Anda tidak akan harus menggunakan malloc atau di mana saja gratis. Ini dirancang untuk umum. Jadi dengan kata lain, Anda dapat menggunakannya dalam segala macam konteks, dari Apple Perhiasan untuk iPhone semua jalan sampai ke OS X, dan bahkan beberapa server, bahkan beberapa scripting. Tapi kita akan melihat bahwa dukungan untuk scripting tidak cukup ada belum seperti itu dalam bahasa lain. Jadi kemungkinan besar Anda akan menggunakan ini secara eksklusif untuk pembangunan di Mac atau iPhone Anda. Dan memiliki banyak fitur modern. Dan banyak hal-hal ini hal-hal yang kita akan mencoba untuk mengatasi hari ini, tetapi juga topik kita yang terus terang, kita bisa mencurahkan seluruh program. Bahkan, CS 51, yang merupakan ditawarkan semester berikutnya, berfokus banyak tentang topik ini yang dijelaskan di bawah ini. Sehingga Anda dapat menghabiskan seluruh semester memahami hal-hal ini. Tapi kami akan mencoba untuk mendapatkan melalui mereka setidaknya cukup bahwa Anda dapat memahami apa terjadi ketika Anda melihat di program Swift dan dapat hack cara Anda melalui itu untuk tugas akhir. Sekarang salah satu cara terbaik yang dapat Anda mendapatkan informasi tambahan tentang ini terus terang saja melalui Apple disediakan dokumentasi untuk Swift. Ada banyak API yang tersedia. Dan ini adalah dasar rumah yang baik untuk Anda untuk mencari, hal-hal tertentu yang Anda ingin melakukan dengan API melibatkan iOS. Jika Anda ingin menggunakan kamera untuk Misalnya, Anda dapat mulai mencari di sini, dan juga menggunakan Google dan Stack Melimpah seperti biasa. Pertanyaan ini sebelum kita melompat ke kanan? Baiklah. Mari kita lanjutkan. Jadi pertama, saya memiliki jumlah contoh file. Dan aku akan mencoba untuk melangkah melalui mereka relatif cepat. Ini adalah file Hello World untuk Swift. Ini sangat sederhana. Ada cara yang lebih komentar daripada ada kode aktual. Perhatikan kode aktual di bagian paling bawah pada baris 14. Dikatakan cetak. Dan maka itu panggilan fungsi. Kami melewati ke dalamnya string disebut Hello CS50. Perhatikan bahwa tidak ada titik koma. Perhatikan bahwa tidak ada int main. Ada tidak ada yang cruft yang kita miliki dengan C. Ketika kita menggunakan Swift dengan cara ini, yang hanya ditulis dalam sebuah file teks dan disimpan di komputer saya, maka Saya dapat mengkompilasi dan menjalankannya. Perhatikan bahwa di sini aku tidak menggunakan IDE CS50. Ini mengasumsikan bahwa saya berjalan dan bahwa aku pada OS X, dan bahwa saya telah Xcode sudah terinstal pada mesin ini agar ini untuk benar-benar berfungsi. Tapi ini hanya sebuah file teks biasa bahwa kita kemudian dapat mengkompilasi dan mengedit. Jadi mari kita lihat bagaimana ini benar-benar bekerja. Bagaimana jika saya ingin melakukan kompilasi? 1.swift swiftc. Setelah beberapa saat, itu akan melihat bahwa kita memiliki sekarang disusun ini ke file bernama 1. Dan sekarang kami telah dicetak CS50 kami, Aplikasi Hello World kita bukan. Perhatikan satu hal lain baik adalah bahwa secara default, kita tidak perlu masukan a / n untuk mencetak baris baru. Secara default, fungsi cetak dalam Swift akan mencetak baris baru untuk Anda. Anda dapat melewati tambahan opsional parameter untuk menceritakannya untuk tidak melakukannya. Tapi Google untuk informasi lebih lanjut tentang itu. Secara default, ia akan melakukan garis cetak. Baiklah, jadi mari kita lanjutkan kemudian ke hal-hal lain. Jadi bagaimana kita bisa benar-benar mendefinisikan variabel? Kita bisa melakukan itu menggunakan salah satu dari dua metode. Dan salah satu yang saya ingin memberitahu Anda tentang pertama adalah definisi membiarkan ini. Dan ini penting karena secara efektif apa yang kita lakukan adalah mendefinisikan konstan. Kita akan membuat sebuah variabel, atau lebih tepatnya disebut nama konstan, menyediakan untuk itu beberapa data-- di hal ini, string Dan. Tapi dengan menggunakan membiarkan ini kata kunci, kita katakan bahwa ini variable-- atau lagi constant-- disebut Nama tidak akan pernah berubah. Ini akan menjadi berubah sepanjang durasi program ini atau seluruh durasi konteks bahwa variabel yang tersedia. Ini benar-benar penting bahwa ketika Anda memiliki beberapa data yang tidak akan mengubah dalam program Anda, dan Anda akan melihat berbagai contoh tentang ketika kita ingin menggunakan biarkan versus sintaks lainnya, penting bahwa Anda menggunakan membiarkan sedapat mungkin karena notifikasi ini bahasa bahwa itu adalah tidak akan berubah, dan itu benar-benar dapat melakukan banyak optimasi untuk meningkatkan kecepatan dan keamanan program Anda. Dan oleh keamanan, maksud saya tidak membiarkan itu kecelakaan dengan kesalahan gila bahwa kita mungkin terbiasa melihat di C. Maka kita bisa menggunakan interpolasi string untuk merangkum ini dalam string. Jadi kita bisa melihat dalam hal ini garis cetak, mencetak halo, dan kemudian menggunakan backslash parens terbuka, dan kemudian nama variabel saya, dalam hal ini konstan, menutup kurung. Saya pada dasarnya kemudian menempatkan isi dari variabel disebut nama ini dalam string dan kemudian mencetak hasilnya ada. Ada satu perubahan lain ke file ini yang yang saya miliki, di bagian paling atas, dimasukkan ke dalam garis peristiwa, yang pada dasarnya hanya menentukan yang saya ingin menggunakan Interpreter Swift, yang berarti bahwa saya tidak lagi harus mengkompilasi program khusus ini. Aku hanya bisa menjalankannya seperti script sendiri. Tapi ini, dalam hal ini, di belakang adegan yang disusun dan kemudian yang dijalankan. Itu hanya terlihat oleh kita. Baiklah, jadi mari kita lanjutkan. Jadi ada sedikit tipu yang baru saja terjadi sebelumnya. Saya menunjukkan bahwa saya bisa mendefinisikan konstan. Dan saya bisa memberikan beberapa data untuk melakukannya. Tapi dalam kasus ini, perhatikan bahwa saya tidak sebenarnya menentukan jenis data bahwa itu adalah. Dan itu karena compiler, Swift bisa menyimpulkan jenis data hanya berdasarkan pada data yang saya dimasukkan ke dalamnya. Karena ia tahu bahwa dengan mengevaluasi ini variabel di sini, ini data yang benar di sini, ia tahu bahwa itu adalah sebuah string. Dan nama konstan ini karena itu akan menjadi string juga. Tapi kita juga bisa eksplisit tentang jenis yang kita akan gunakan untuk konstanta atau variabel dengan menggunakan sintaks ini instead-- biarkan String nama usus sama Dan, yang dalam hal ini berarti kita akan menentukan disebut nama konstan. Ini akan menjadi tipe String. Dan nilai akan menjadi Dan. Sekarang cara lain yang kita dapat membuat variables-- dan ini adalah variabel bisa berubah, yang berarti bahwa kita, pada kenyataannya, akan untuk mengubah isinya kadang-kadang dalam durasi konteks bahwa variabel yang defined-- kami menggunakan kata kunci var bukannya membiarkan. Tapi sekali lagi, secara default, kecuali Anda tahu Anda perlu memanipulasi data itu, mencoba untuk menggunakan membiarkan untuk peningkatan kinerja. Dalam hal ini, saya kemudian bisa tentukan jenis data yang kita harapkan menjadi bagian dalam variabel baru yang disebut label. Ini akan menjadi string. Dan kita akan kemudian menyatukan dua string bersama-sama, string halo, dan string diwakili oleh variabel, atau lebih tepatnya nama konstan. Jadi ini bagus karena ini agak PHP seperti di kita itu memiliki sangat mudah penggabungan string. Kami tidak harus secara otomatis menggunakan apapun manajemen memori untuk meningkatkan ukuran dan melakukan apapun hal-hal lucu di sana. Ini bekerja seperti yang kita benar-benar harapkan. Baiklah, pertanyaan tentang hal ini? Sekarang alasan lain yang kita perlu Anda memiliki kemampuan untuk dapat menentukan apa jenis variabel data karena kadang-kadang kita tidak ingin menginisialisasi variabel dengan beberapa data di titik definisi. Jadi dalam hal ini, katakanlah bahwa saya ingin memulai memasukkan beberapa nilai menjadi sebuah buku kelas. Yah aku tahu bahwa salah satu variabel yang saya ingin menjadi akan menjadi kelas bisa berubah. Dan kita juga tahu bahwa kita ingin menjadi integer. Tapi mungkin kita belum memiliki kelas yang tersedia. Dalam Swift, Anda harus mendefinisikan jenis data yang berhubungan dengan variabel atau biarkan konstan sebelum Anda benar-benar bisa menggunakan variabel itu. Karena itu sangat diketik, Anda harus mengasosiasikan tipe dengan variabel-variabel ini. Jadi dalam hal ini, jika saya sudah tidak benar diinisialisasi pertama dengan beberapa nilai, maka saya perlu memberitahu Swift apa Saya berharap tipe data menjadi. Dan itu akan tetap jenis data yang sama sepanjang sejarah program ini. Sekarang Anda mungkin tergoda sesegera Saya telah menciptakan variabel kelas ini dan asalkan sebuah integer 100, sekarang jika saya ingin mencoba untuk menggabungkan string dengan bilangan bulat itu, mungkin akan tergoda untuk masih menggunakan bahwa operator penggabungan string seperti yang kita lakukan hanya beberapa baris sebelumnya. Tapi sayangnya, ini akan benar-benar tidak bekerja, karena Anda dasarnya melakukan operasi pada dua jenis yang berbeda. Sekarang ini sangat berbeda dari yang lain bahasa seperti PHP yang benar-benar bodoh loosey dengan semacam mereka jenis. Mereka hanya suka, ya, apapun, aku tidak peduli. Beri aku satu jenis, dan mungkin aku akan melakukan hal yang benar. Dalam hal ini, Swift adalah sangat ketat tentang jenis bahwa Anda berurusan dengan. Operator penjumlahan ini atau operator Rangkaian memiliki dasarnya beberapa mungkin pilihan yang berbeda. Anda dapat melakukan penjumlahan dengan bilangan bulat, atau Anda dapat melakukan penggabungan string, dan mungkin beberapa hal lain juga. Tetapi jika operator yang tidak mengakui apa yang ada di kedua sisi itu, atau lebih tepatnya kombinasi dari mereka dua jenis, tidak apa itu mengharapkan, maka itu akan menyebabkan kegagalan. Jadi dalam hal ini, apa artinya untuk memiliki string ditambah integer? Nah dalam konteks ini, kita mungkin ingin untuk melakukan operasi string concatenation. Tapi tentu saja komputer tidak memiliki semacam konteks. Dan jadi kita perlu memberikan bahwa informasi tambahan untuk membiarkannya tahu apa itu adalah yang ingin kita lakukan. Jadi dengan kata lain, fakta bahwa Swift sangat diketik berarti Anda harus melakukan sedikit pekerjaan tambahan untuk mendapatkannya untuk mengoperasikan cara yang Anda inginkan. Tapi sebagai hasilnya, lebih aman. Dan sekali Anda telah mengambil memperhitungkan jenis-jenis, hal hanya terus terang mulai bekerja dengan baik. Jadi dalam hal ini, kita kemudian akan melakukan penggabungan string dengan secara eksplisit pengecoran integer ke string dengan membungkusnya dalam modal S String fungsi, dan kemudian menggunakan penggabungan string operator untuk memodifikasi variabel label kami, dan kemudian mencetaknya. Sejauh ini bagus? Baiklah, mari kita lanjutkan. Sekarang ada berbagai data jenis yang bisa kita gunakan di Swift. Seperti yang telah Anda menjadi terbiasa, kita bisa membuat array bisa berubah. Dan array hanya dapat berisi jenis tunggal. Jadi dalam hal ini, kita akan membuat sebuah array bisa berubah bilangan bulat, yang kita akan memanggil nilai, dan kita akan dapat untuk menyimpan bahwa dalam braket persegi ini Format seperti yang Anda sudah dewasa terbiasa dalam berbagai bahasa lain. Tapi perhatikan bahwa di sini kami mendefinisikan beberapa hal. nilai adalah variable-- bisa berubah kita tidak menggunakan let kata kunci. Jadi itu berarti kita dapat memodifikasi isi array ini. Ini adalah tipe Array Int, dan kita bisa mengatakan bahwa berdasarkan ini kurung di sini. Sekarang salah satu hal yang menyenangkan tentang ini adalah bahwa kita memiliki akses ke banyak informasi tambahan tentang array hanya menggunakan beberapa titik sederhana notasi. Jadi misalnya, grades.count memberikan kepada kami jumlah item yang ada dalam array, yang kemudian kita dapat mengakses cukup mudah hanya menggunakan yang notasi titik. Jika Anda ingin menambahkan tambahan item untuk array ini, Anda tidak dapat melakukan gaya PHP di mana Anda hanya secara eksplisit mendefinisikan, pada indeks tertentu, beberapa nilai Anda ingin menyisipkan. Sebaliknya, gunakan append yang metode dalam tipe array untuk menambahkan item, 95, untuk daftar ini. Jadi sekarang array ini memiliki berikut contents-- 100, 0, 90, 85. Dan sekarang kita sudah ditambahkan 95 itu juga. Ada cara lain kita dapat menambahkan hal-hal. Anda benar-benar dapat menggunakan operator penjumlahan, yang akan ditafsirkan sebagai operasi array yang append. Dan Anda kemudian dapat menambahkan lain array, yang isinya adalah 70 dan 80, array itu. Jadi sekarang kita memiliki isi variabel ini grades-- 100, 0, 90, 85, 95, 70, dan 80. Ini hanya sintaksis kecil yang menyenangkan gula yang Swift memberikan kepada kami. Jadi jika kita ingin menjumlahkan nilai, kami mungkin akan ingin beralih atas setiap item dalam lingkaran ini. Dan kita miliki, di Swift, gagasan dari untuk loop seperti yang Anda harapkan. Tapi cara yang kami mengindikasikan rentang sedikit berbeda. Jadi dalam hal ini, untuk Singkatnya segala sesuatu, kita akan akan membuat sementara variabel yang disebut sum agar kita untuk mempertahankan jumlah ini. Dan perhatikan untuk kami lingkaran konstruksi di sini. Untuk indeks 0 ..