[MÜZİK OYUN] DAN AMRMENDARIZ: Herkes, CS50 seminer hoş geldiniz, Swift ile iOS App Geliştirme. Dan Armendariz değilim, ve ben bir hoca değilim Burada Harvard'da bilgisayar bilimleri. Ve bir sonraki saat olacak kadar şeyler bir kasırga turu Bu konu hakkında biz sığabilecek kadar. Ben kaynak kodunun tüm yayınlayacağız Eğer çevrimiçi bugün göreceksiniz. Biz mümkün olmayabilir aslında her şeyin üzerinde gitmek Ben olduğumu olduğumu Bu saatte gösteren. Ama en azından umarım aracılığıyla Kaynak kodunun yorumlar, Eğer anlamaya çalışalım mümkün olacak neler Tam bu şeyler için oluyor biz oldukça alamadım söyledi. Genel yapı aşağıdaki gibi bugünün konuşma olacak. Biz bazı temel yapıyor dışarı başlayacağız Swift dili ile sözdizimi, daha gelişmiş bazı girecek Swift dilinin sözdizimi. Çünkü dilin Gerçekten modern ve öyle yüksek düzeyde bir yeri vardır özellikleri, biz değil şeyler , CS50 boyunca C görülen veya hatta bazı diğer diller Başladığımız ettik gibi PHP CS50 kullanarak, bu yüzden denemek zorunda gidiyorum Ayrıca bazı konuları tanıtmak yüksek seviyeli diller ile ilgili Eğer CS50 derinlemesine bakın olmayabilir, ancak daha sonra göreceksiniz bilgisayar bilimi dersleri. Yani bu olacak sıkıca paketlenmiş saat. Ve beni çekinmeyin Eğer herhangi bir sorunuz varsa biliyorum. Eğer ilgileniyorsanız Yani geliştirme yaparken Swift ile, ya da gerçekten Herhangi bir iOS uygulaması geliştirme, gereksinimleri bir çift vardır. Her şeyden önce, kullandığınız gerekir Mac, örnekler çalışan Bugün kullanıyor olacak ki, OS nispeten yeni bir versiyon Bu durumda X. Ben X 10.5 koşuyorum. İstersen 10.11 çalıştırıyor olabilir. Ama her şey için gidiyoruz Daha sonra Xcode 7 ve ilgili görmek, hangi son sürümü var Swift 2.0 Swift, evi. Bu aslında bir güzel önemli bir ayrım. Sözdizimi bir sürü vardır Oldukça önemli ölçüde değişmiştir Swift 1,0 bazı durumlarda, Geçen yıl yayımlanan, hangi Swift 2.0, hangi Sadece bu sonbaharda ortaya çıktı. Yani biz Swift 2.0 göstermek için gidiyoruz. Bir çok şey olduğunu Online arama Ek almak için çalışıyoruz bir çok şey hakkında bilgi, açıkça isteyebilirsiniz Swift 2 arama yerine sadece düz eski Swift daha yapmak için Eğer sözdizimi doğru olsun emin olun. Aslında, bu doğrudur. Gelişme hızlı bir miktar var Swift dilinde oluyor Apple piyasaya sürdü beri, sanırım Ne bir yıldan biraz fazla bir oldu şimdi. Ve her şey değişti dramatik o zaman. Ve böylece hüsrana olmayın varsa, etrafta ararken nasıl gerçekleştirmek için Swift veya konular için bazı örnek kodu kullanarak bir şey ya da bir şey değil mi bu aslında Swift 2.0 üzerinde çalışmak. Emin olun aradığınız özellikle bu sürümü için Farklı etkilerini en aza indirmek için denemek için sürümleri ve şeylerin o sıralar. Ben sadece bazı şeyleri işaret çalışacağım eski sürümleri için farklı olduğunu. Ama dikkat etmek bir şey. Muhtemelen olacak büyük baş ağrısı biri Eğer Swift ile olacak bulgu olduğunu , hatta sadece eski kod örneği Bir kaç ay, kullanmaya çalışıyor sizin daha modern projede. Ve bu sadece basitçe çalışmaz. Sen derleyici hataları alıyorsanız, sözdizimi hatalar, çılgınca şeyler her türlü. Dolayısıyla, sadece sabırlı olun Bu ve umarım olacak çok güzel bir deneyim Swift genel klasmanda ile. Şimdi join-- aslında can ve umarım biz aslında hala bu year-- var CS 50 'Apple App geliştirme ekibi, hangi Eğer herhangi bir uygulama yüklemek için izin verecek hangi iOS cihazlarda oluşturun. Yani bu adresten eğer bir göz atın Bunu yaparken ilgilendi. Yani sadece bir çift Swift kendisi hakkında şeyler. Bu derlenmiş bir dildir. Ama bazı göreceksiniz Kullandığımız özellikleri Bu biraz da kullanılmak üzere izin Bir yol da yorumlanır gibi. Sözdizimi bir sürü ödünç C'den esaslı oluyor ve C ile yazılmış Ve böylece biz göreceksiniz paketler bir yeri vardır Mevcut bilgisinden C biz Swift liman olabilir ki. Ancak işler vardır C dan çok farklı hale Bu çok güçlü yazılır. Otomatik bellek yönetimi var. Sen zorunda değiliz malloc veya serbest hiçbir yerinde kullanın. Bu genellik için tasarlanmıştır. Yani diğer bir deyişle, onu kullanabilirsiniz Apple Watch bağlamlarda her türlü, iPhone tüm yol OS X ve kadar Hatta bazı sunucular, hatta bazı betik. Ama biz görürsünüz komut dosyası için destek oldukça orada henüz gibidir diğer dillerde bulunmaktadır. Yani büyük olasılıkla kullanarak olacak Bu özel geliştirme Mac veya iPhone üzerinde. Ve modern özellikleri bir yeri vardır. Ve bu bir çok şey şeyler olduğunu Biz bugün ele denemek için gidiyoruz ama aynı zamanda bizim konular açıkçası, Biz tüm dersler ayırabilirim. Aslında olarak, CS 51, sunulan sonraki dönem, Bu konularla ilgili bir çok duruluyor aşağıda tarif edilmiştir. Yani bütün bir dönem geçirebilirsiniz Bunları anlamak. Ama biz denemek için gidiyoruz onları geçmek için en azından yeterli sen misin ne anlayabilir Eğer baktığınızda oluyor Bir Swift programında ve yolunuzu kesmek mümkün Nihai proje için içinden. En iyi yollarından biri Şimdi yapabilirsiniz Bu konuda ek bilgi almak Sadece Apple'ın aracılığıyla açıkçası Swift ile ilgili belgelere sağladı. API'leri bir sürü var mevcut olduğu. Ve bu sizin için iyi bir ana üs olduğunu Belirli şeylere bakmak için o sen iOS karıştığı bir API ile yapmak istiyorum. Için kamera kullanmak istiyorsanız, örnek, sen burada arıyorum başlamadan edebilirsiniz ve aynı zamanda Google ve Stack kullanın Normalde yaptığınız gibi taşma. Bu konuda herhangi bir sorunuz Biz sağ atlamak önce? Pekala. Hadi devam edelim. Bunun için ilk önce, ben bir örnek dosya sayısı. Ve ben adım denemek için gidiyorum nispeten hızlı bir şekilde aralarında. Bu Swift için Hello World dosyasıdır. Çok basit. Yol daha fazla yorum var gerçek kod vardır daha vardır. Gerçek kod olan dikkat hat 14 çok alt. Bu baskı diyor. Ve sonra bir işlev çağrısı. Biz ona bir içine geçiyoruz Dize Merhaba CS50 çağırdı. Hiçbir noktalı virgül var dikkat edin. Hiçbir int main var dikkat edin. Hiçbiri var Biz C. vardı cruft Bu şekilde Swift kullanırken, Sadece bir metin dosyasında yazılı olduğu ve sonra, benim bilgisayarda depolanan Ben derlemek ve çalıştırabilirsiniz. Ben burada dikkat edin CS50 IDE kullanarak değil. Bu ben varsayar çalışan ve ben OS X üzerinde olduğumu, ve ben Xcode zaten yüklü olduğunu Bunun için sırayla bu makinede Aslında işleve. Ama bu sadece normal bir metin dosyası biz o zaman derleme ve düzenleme yapabilirsiniz. Yani bu aslında nasıl çalıştığını görelim. Ne derlemek istiyorsanız? swiftc 1.swift. Bir an ya da iki sonra, şimdi var olduğunu göreceksiniz 1 adlı bir dosya içine bu derlenmiş. Ve şimdi bizim CS50 baskılı var, yerine bizim Hello World uygulaması. Olarak başka bir şey fark iyi ki varsayılan olarak Biz giriş yoktu / n yeni bir satır yazdırmak için. Varsayılan olarak, baskı fonksiyonu ile Swift sizin için yeni bir çizgi yazdırır. İsteğe bağlı ek iletebilirsiniz Parametre bunu değil bunu söylemek için. Ama bu konuda daha fazla bilgi için Google. Varsayılan olarak, baskı hattı yapacağız. Pekala, devam edelim sonra bazı başka şeyler. Peki biz aslında değişkenleri tanımlayabilirsiniz? Biz kullanan var yapabilir iki yöntemden biri. Ve ben istediğim bir söylemek İlk hakkında bu let tanımıdır. Ve bu önemli etkin bir nedeni ne yapıyoruz, bir sabiti tanımlayan olduğunu. Biz bir değişken oluşturmak için gidiyoruz, ya da daha doğrusu sürekli olarak adlandırılan isim, Bazı verilerinin-- kendisine temin Bu durumda, dize Dan. Ancak bu let kullanılarak Anahtar kelime, biz diyorsun Bu variable-- o ya Yine adı constant-- adı hiç değişmedi olacak. Bu boyunca değişmez olacak Bu programın süresi ya da bütün bağlamda süresi o değişken mevcuttur. Bu o zaman gerçekten önemli değil mi bazı veriler var programınızda değişecek, ve çeşitli örnekler göreceksiniz Biz kullanmak istediğinizde hakkında Diğer sözdizimi karşı let, Eğer izin kullanmak o önemli Mümkün bu bildirimlerin çünkü o dili değişmiş olacak değil, ve aslında gerçekleştirebilirsiniz optimizasyonlar bir sürü hızını artırmak ve Programınızın güvenliği. Ve emniyet, ben izin vermeyeceğim demek çılgın hataları ile bu kazasında Biz olabileceğini C. görmeye alışık Sonra dize enterpolasyon kullanabilirsiniz Bir dize içinde bu saklanması. Yani biz bu görebilirsiniz Baskı hattı, merhaba yazdırmak, ve daha sonra eğik açık parens kullanılarak ve sonra benim değişkenin adı, bu durumda sabit olarak, parantez kapatın. Ben esasen o atıyorum Bu değişken olarak adlandırılan ismin içeriği dize içinde ve sonra Orada sonucu yazdırmak. Bu dosyaya başka bir değişiklik var ki ben çok üstünde, olması, Bir shebang çizgi koymak temelde sadece belirtir Ben kullanmak istiyorum Swift tercüman, hangi Artık zorunda olduğu anlamına gelir Bu özel programı derlemek. Ben sadece kendi komut gibi çalıştırabilirsiniz. Ancak bunun arkasında, bu durumda, bir sahneler derlenmiş ve daha sonra varlık yürütülüyor. Bizim için sadece görünmez. Pekala, devam edelim. Yani hile biraz var sadece daha önce oldu. Sana bu ben gösterdi Bir sabit tanımlayabiliriz. Ve bunu yapmak için bazı verileri sağlayabilir. Ancak bu durumda, ben yapmadım fark Aslında veri türünü belirtmek öyle ki. Ve çünkü var derleyici, Swift can sadece tabanlı veri türünü anlaması Ben içine koymak verilere. O bu değerlendirme olduğunu bildiği için Değişken burada, bu veriler doğru Burada, bu bir dize olduğunu biliyor. Ve böylece bu sabit adı bu nedenle hem de bir dize olacak. Ama biz de açık olabilir var türü hakkında biz kullanmak için gidiyoruz sabitler veya değişkenler Bu sözdizimini kullanarak instead-- adı kolon Dize eşittir let Bu durumda biz demektir Dan, sabit olarak adlandırılan adını tanımlamak için gidiyor. Bu tip String olacak. Ve değer Dan olacak. Şimdi başka bir yol olduğunu Biz variables-- oluşturabilir bu değiştirilebilir değişkenler olan biz, aslında, giderek demektir bazen kendi içeriğini değiştirmek için bağlamda süresindeki bu değişken biz defined-- olduğu var anahtar sözcüğünü kullanın yerine edelim. Fakat yine de, varsayılan olarak, sürece biliyorsun bu verileri işlemek gerektiğini, için izin kullanmayı deneyin performans iyileştirmeleri. Bu durumda, o zaman can veri türünü belirlemek biz içeride olmasını beklediklerini etiket olarak adlandırılan bu yeni değişken. Bir dize olacak. Ve biz o birleştirmek için gidiyoruz İki dizeleri birlikte dize merhaba, ve dize ile temsil Değişken, ya da daha doğrusu sabit ismi. Yani bu güzel çünkü biraz o biz gibi PHP olduğunu çok kolay dize birleştirme var. Biz otomatik gerekmez bellek yönetimi her türlü kullanımı boyutunu artırmak ve yapılacak Orada komik şeyler herhangi bir tür. Biz aslında beklediğiniz gibi çalışır. Pekala, bu konuda herhangi bir sorunuz var mı? Şimdi diğer nedeni biz yeteneğine sahip ihtiyacınız Ne tanımlamak mümkün Veri değişkenlerin türü bazen biz değil çünkü değişkenlerini başlatmak istiyor bazı verilerle tanım noktası. Bu durumda Yani, diyelim ki Ben girilmesi başlamak istiyorum Bir sınıf defterine bazı notlar. Peki biliyorum biri olduğunu Ben olmak istiyorum değişkenler Bir kesilebilir notu olacak. Ve biz de biliyoruz biz o bir tamsayı olmak istiyorum. Ama belki biz henüz yok Bu sınıf kullanılabilir olması. Swift, sen var veri türünü tanımlar bir ile ilişkilidir Değişken veya sabit let aslında can önce Bu değişken kullanabilirsiniz. O kesinlikle yazılı olduğundan, Bir tür ilişkilendirmek zorunda Bu değişkenler ile. Ben düzgün değil ettik, bu durumda Yani Bazı değeri ile ilk başlatıldı, Sonra ben Swift anlatmak için gerekenleri Ben veri türü olmasını bekliyoruz. Ve kalması için gidiyor Aynı veri türü Bu programın tarih boyunca. Şimdi en kısa sürede cazip olabilir Ben bu notu değişken yarattık ve bir mesafede eğer ben şimdi 100 tamsayı, bitiştirmek için denemek istiyorum Bu tamsayı bir dize, Hala kullanmak için cazip olabilir bu dize birleştirme operatörü gibi biz sadece birkaç satır önce yaptım. Ama ne yazık ki, Bu aslında olmaz Eğer, çünkü çalışmak esasen performans iki farklı bir çalışma. Şimdi bu diğerinden çok farklı gerçekten PHP gibi diller türlerinin kendi tür loosey goosey. Onlar sadece, evet, gibi konum neyse, umurumda değil. Bana bir tür verin ve belki doğru olanı yapacağım. Bu durumda, çabuk görür türleri hakkında son derece sıkı sizinle ilgileniyor. Bu toplama operatörü veya birleştirme operatörü esasen bir çift var farklı olası seçenekler. Sen toplamı yapabilirsiniz tamsayılar, veya sizinle dize birleştirme yapmak ve olabilir belki bazı başka şeyler de. Ama bu operatör kabul etmezse bunun her iki yanı üzerinde ne, ya da bu kombinasyonu oldukça İki tip, o bekliyor ne değildir, o zaman bir arızaya neden olacak. Bu durumda Peki, bu ne anlama geliyor bir dize artı bir tamsayı var? Peki bağlamında Bu, muhtemelen istiyoruz bir dize birleştirme işlemini yapmak. Ama tabii bilgisayar bağlamda bu tür yoktur. Ve böylece biz sağlamanız gerekir Bu ek bilgi onu ne bildirmek için Yapmak istediğimiz olmasıdır. Diğer bir deyişle, aslında Yani Swift kesinlikle yazılı olduğu Eğer bir yapmak zorunda anlamına gelir ek iş biraz bunu çalıştırmak için almak için sen-cekti istemek yolu. Ancak sonuç olarak, bu daha güvenlidir. Ve bir kez almak bu tür hesap içine şeyler sadece açıkçası başlangıç Oldukça iyi çalışmak. Bu durumda, biz o zaman olur Yani dize birleştirme gerçekleştirmek açıkça döküm Bir dize tamsayı Bu onu sararak Sermaye S Dize işlevini, ve sonra Dize bitiştirmesi kullanılarak Operatör, bizim etiket değişkeni değiştirmek için ve sonra çıktı. Şimdiye kadar, çok iyi? Pekala, geçelim. Şimdi veri çeşitli vardır Biz Swift kullanabileceğiniz türleri. Eğer alışmış gibi, Biz kesilebilir dizi oluşturabilirsiniz. Ve bu dizi sadece can Tek bir türü içerir. Yani bu durumda, biz oluşturmak için gidiyoruz tamsayılar bir değişken diziler, hangi Biz notları arayacak ve biz mümkün olacak Bu kare aralığındaki o saklamak için senin gibi biçim alışık büyüdüğümüz Diğer dillerde çeşitli için. Ama biz konum burada fark birkaç şey tanımlayan. notları bir değişken olduğunu variable-- Biz let anahtar sözcüğünü kullanın. Anlamına Yani biz o zaman değiştirebilirsiniz Bu dizinin içeriği. Bu tip Array Int olduğunu ve biz bunu söyleyebilirim Burada bu köşeli parantez dayalı. Güzel şeyler şimdi bir Bu konuda biz ise bir sürü erişimi ek bilgi dizi hakkında sadece kullanma Bazı basit nokta notasyonu. Yani, örneğin, grades.count bize sağlar Bu mevcut öğe sayısı biz sonra oldukça erişebilirsiniz dizi, basitçe bu nokta gösterimi kullanılarak. Ek eklemek istiyorsanız Bu diziye öğeler, PHP stili yapamaz burada sadece açıkça tanımlamak, Belirli bir dizindeki bazı değer Eklemek istediğiniz söyledi. Bunun yerine, ekleme, kullanımı Dizi türü yöntem Bu listeye, bu madde, 95 eklenecek. Yani şimdi bu dizi aşağıdaki vardır 100, 0, 90, 85 contents--. Ve şimdi biz ekli ettik Bu 95 de. Başka yolları da vardır Bir şeyleri ekleyebilirsiniz. Aslında kullanabilirsiniz Bir toplama operatörü, bu olarak yorumlanacaktır Bir dizi ekleme işlemi. Ve sonra başka ekleyebilirsiniz içerikleri 70 ve 80 olan dizi, Bu diziye. Yani şimdi var Bu değişkende içeriği 100, 0, 90, 85, 95, 70, ve 80 grades--. Bu sadece güzel bir söz dizimi olan Swift bize sağlayan şeker. Biz toplamak istiyorsanız Yani sınıflarda, belki sen yineleme istediğiniz olacak Bu döngü her öğenin üzerinde. Ve biz Swift, kavramı, var a döngüsü için beklediğiniz gibi. Ama biz işaret yolu Bir aralık biraz farklıdır. Bu durumda, Yani Her şeyi Özetle, biz olacak Geçici oluşturmak için gidiyor Bizim için sırayla değişken olarak adlandırılan toplamı Bu sayımı korumak için. Ve bizim için uyarı Burada döngü yapımı. 0 ayında endekste için ..