編程零基礎如何學習 Swift?
教程
《The Swift Programming Language》:這是蘋果官方出版的Swift學習教材,可以免費下載到iBooks中閱讀。其中文版翻譯項目也在 Github 上火熱進行中,地址在這裡,同時也有相應的網站,地址在這裡:《The Swift Programming Language》中文版
《Swift Cheat Sheet and Quick Reference》:出自raywenderlich的一份Swift快速參考手冊,現在還比較簡單,但它正快速更新中。
《Swift Language Highlights: An Objective-C Developer』s Perspective》:文章比較了Swift和Objective-C語言的差異性。
《WWDC14 Session 402 》學習筆記:@糖炒小蝦_txx完成了三篇關於Swift的學習筆記,主要內容均來自WWDC14 Session 402的視頻。
《Swift 和Objective-C性能測試》:蘋果在WWDC視頻中只是簡單提到Swift在排序和加密演算法上比Objective-C快。本文對兩者的性能進行了更複雜的測試,文章中做的測試結果如下:循環100萬次,Objective-C比Swift快 29倍;變數增加1, Objective-C比Swift快 46倍。還有一些其它比較,大家可以自己看原文,所以真相是:Swift其實不一定比OC快。
《行走於 Swift 的世界中》:筆者和周圍朋友討論swift的技術細節,大家都覺得swift比想像中要複雜,onevcat的本文講述了不少swift的細節。從中你會看到,swift真的不簡單。
《Swift編程語言資料大合集》:來自CSDN整理的Swift學習合集資料。
《Swift 特刊》:來自碼農周刊的Swift學習合集資料。
- 《Swift編程入門》:來自百度閱讀的學習資料。
工具
下載腳本:該腳本是WWDC 2014 PDF 及session 視頻下載腳本。
開源項目WWDC的示例代碼:比起GitHub上的開源項目,官方的代碼更有參考價值。比如Session 406的代碼Lister就用一個Swift實現的包含OSX和iOS的Productivity App,還演示了各種Cocoa新功能。
FlappySwift:FlappySwift用swift重寫的一個開源Flappy Bird遊戲。
JokeClient-Swift:JokeClient-Swift是@YANGReal用swift寫了一個開源的糗事百科的客戶端,主要涉及網路請求,圖片載入、緩存、自定義UITableViewCell、delegate以及closure,內容介面基於糗事百科API。
swift-2048:一個用Swift實現的2048遊戲。
UIImageView-BetterFace-Swift:UIImageView-BetterFace-Swift是一個根據目標圖象中頭像的位置進行智能圖片裁剪的開源庫,該地址是其更新的Swift版本。
Easy-Cal-Swift:swift是類型安全(type safe) 的語言。但是,由於它有類型推斷(type inference)能力,所以當能推斷出類型時,你不必非要寫對應的類型。對於 字面量(literal value),整數會被推斷成Int,浮點數會被推斷成Double類型。但是,它並沒有定義整數和浮點之間的加法,本項目實現了一個常用的運算符重載,這樣就可以支持整數和浮點數做加法了。
HackerNews:用Swift實現的HackerNews客戶端。
來自:蘋果發布Swift編程語言
故事的版本有很多種,有人說比爾蓋茨曾經賤兮兮的問過喬布斯,是不是要把蘋果系統開放安裝給其他電腦機型,也就是讓其他品牌的計算機也能使用。喬布斯看不上,認為自己那麼高貴的系統怎麼能用在那些爛機器上,比爾蓋茨心裡暗爽,windows開放安裝給所有電腦,就這麼把蘋果虐了這麼多年,自己成了世界首富。
事情就是這麼的有意思,幾年過去了,在手機操作系統的戰場上,蘋果還是那個蘋果,安卓帶替了windows,蘋果依然高貴,安卓開源給任何機型。歷史會不會重演誰也不知道也無法預測,但蘋果做了新的嘗試,用四年時間開發了自己的編程語言,語言更加簡潔而強大,降低了開發者的門檻,使更多的開發者進入,更多高質量的手機應用也會被高效的呈現在我們面前。
接觸了swift近一個月,感覺甚爽。今年年初時一直有個很好的想法,所以怒學object-c決定一個月之內吃下,把這個想法實現出來,現在回想起來慘不忍睹,隨之這個想法也隨之被閑置。兩個月前蘋果發布了Swift,其他的特點沒咋注意,唯一就記住了「簡單」這倆字。所以不抱什麼希望的決定嘗試下,半個月過去了,三個自己做的app呈現在眼前。這是我用自己的體驗以一個真正零基礎的角度看待swift到底有有多簡單。
看了很多入門教程,一點也不接地氣,一上來就是代碼,一下沒了興趣。高級的沒啥資本說,只能一個零基礎開發者的角度向大家介紹一下怎樣入門。
首先,swift是一種編程語言,它只能編寫用在蘋果設備上的應用。其次,swift目前的官方編寫軟體叫xcode(目前能編寫swift的xcode的版本還處於測試階段,代碼提示還不夠完善),開發者們都是用xcode來編寫代碼,然後用自帶的iphone模擬器來在電腦上看編程的效果。
xcode只能在mac上安裝。網上有一些是用windows裝Xcode的方法,百度一下關鍵詞「黑蘋果」,在這不再贅述。所以說,理論上,只要你有一台電腦,就可以用swift語言來開發蘋果應用了。
現在你有一台電腦,安裝了xcode,怎樣入門呢。我最開始是看視頻,網上有幾家視頻教程網出了swift的入門教程,做得挺好。學了學有了一些基礎,從建一個工程開始慢慢的能跟著教程做出簡單的app了。但是僅限視頻里介紹的那些功能,離想做出自己想像的app還差的很遠。
下面就要用到工具啦,也就是大家常說的github(http://www.github.com),github是一家國外的網站,裡面有全世界的編程者在那裡分享自己的代碼,如果你有一個地方不會寫了,就可以複製這段代碼在Github里查找,看看大家都是怎麼寫的。比如說我想寫一個SKAction的方法, 但是不會寫,就可以在Github的搜索里查"SKAction",然後在左邊選擇swift,全世界人用swift寫SKAction的方式就出現在你眼前了。
下載代碼,在自己xcode里看看效果,如果好的話,複製過來再改改。但是使用github還是需要一定的英文基礎的,需要有一定適應的時間。如果英文不是特過關可以試試一個叫「Swift獵手」的網站(http://www.swiftkiller.com),全中文,代碼都是gif圖片,挺好用,就是代碼比較少。下載下來代碼的zip文件夾後,打開裡面的工程文件,然後運行就可以看效果啦。總結的來講,我學習swift的過程就是無限的去看別人的代碼怎麼寫,然後複製過來改成自己的,看得多了也就自然有一些感覺了,沒有什麼教程比自己的不斷嘗試讓自己進步的更快,要學會站在巨人的肩膀上前進,雖然swift剛剛被發布,高大的巨人少之又少。
嘗試過Swift之後,它的簡潔強大讓我我開始相信蘋果未來幾年的發展應該不賴,也許很多人都在糾結是不是要學這門新的語言,我沒基礎怎麼辦?我要不要放棄現在我使用的編程語言?swift會有發展么?我覺得大可不必,因為它足夠簡單,每天找點時間,當一個興趣,十天二十天,也許從現在開始,不久之後你就會擁有自己編寫的蘋果應用呢。
前一段時間有個新聞是Swift語言用了一個月的時間在七月份登上了編程語言排行榜的第十六並且還在迅猛增長。蘋果發布Swift的一個目標就是完全的代替原本的ios開發語言object-c,如今object-c在排行榜排名第三,可見學習swift的價值所在,所以swift發展大可不必擔心,抽寫空來或是全心全意的來學習,別再猶豫了。加油各位!我是剛剛爬了不到一個月的swift新手,原來有java的基礎,本來只想做一個簡單的app玩一玩的,所以我的心路歷程有點非主流:
0. 首先啊,得有強烈的動力去做一個app,那種你不做就覺得這輩子完了的那種。。。。
我是想做個逆天的todo list, 於是就去網上找了一些類似app的教程跟著學習做了 一遍:《 使用Swift開發iOS8 App實戰丨章節》 《 How To Make a Gesture-Driven To-Do List App Like Clear in Swift: Part 1/2 》對於設么都不懂的新手來說這種圖文並茂一步一步的教程是最好上手的了1. 興奮的跟著做完了,發現別人的app都不是自己想要的,就想要不隨便改改吧?
但是根本改不動啊。。。那些?!神馬的跟外星文一樣,所以只好老老實實的開始學swift的基本語法,這個時候肯定對swift的那些奇葩語法有很深的印象了,再學就比較有針對性了:1.1 簡單的swift語法 看這個: 《 玩兒轉Swift丨章節》
它的好處是: 對於已經有其他語言編程經驗的人來說,不羅嗦,講的明白我是建議都看下來,也就5個多小時,對於有編程經驗的來說,其實都不用跟著敲代碼,因為都是很簡單的片段,所以有點毅力的一天就能看下來1.2 高級點的swift語法:《Swift Language Tutorials》
generics, protocol, delegate神馬的,第一個裡面沒有講到,所以我找到了raywenderlich這個系列,我沒有全看,打算用到哪兒就看哪兒2. 這個時候發現學會了swift,依然手無縛雞之力啊~那些UITableView神馬的還是不懂啊。。。學SWIFT和學IOS開發完全是兩碼事好嘛,幸好raywenderlich有另一個系列iOS Tutorials,我現在還在這裡啃
估計看完了接下來就是繼續改我的app,如果可以做到相對滿意的效果,按照我懶人的本性,可能就此打住了
如果發現哪個特性必須要用到Cocoa框架神馬的,估計還會繼續研究Objective-C這個黑洞了。。。嗯,我會繼續更新我的學習進度的。。。
看官方文檔吧 iTunes - Books另 Apple Swift編程語言入門教程Swift編程入門《The Swift Programming Language》中文版
你最好有一台Mac,學習的時候最好XCode就在旁邊,可以隨時調試,否則沒有實際平台練習,再多資料都是零。再者你不一定有必要去買專門講Swift的書,最近的iOS或者OSX開發的書都完全可以滿足學習的需要,與Objective-C結合起來學對API的熟悉更快,搜比如iOS開發。
匯總一些swift學習資源,希望有所幫助:
一、網站:0、swift學習者資源分享
1、swift蘋果官網:Swift - Overview
2、Swiftist: Home - Swiftist 社區
3、swift中文指南
4、一起swift:Let"s Swift - 國內首發Swift中文教程
5、swiftv課堂:SwiftV課堂 - 中國最大的Swift視頻學習站
6、SwiftChina開發社區:SwiftChina-iOS專業開發社區 -
7、swift開發者門戶:Hello,Swift | Swift中文開發者社區門戶
8、swift中文社區:SwiftChina - Swift中國社區 http://swift.sh
9、swift開發者:Swift開發者-swift論壇|swift教程|swift社區|swift視頻教程
10、swift聯萌:Swift聯萌 | 你不是一個人在戰鬥!
11、雨燕社區:Swift技術交流與分享
12、中文博客:objc中國
13、sososwift:SoSoSwift
14、learnswift:Learn Swift
15、weheartswift:We ? Swift
二、教程
1、蘋果官方教程:https://itunes.apple.com/cn/book ... e/id881256329?mt=11
2、極客學院swift教程:Apple Swift編程語言開發基礎語法入門視頻教程
3、軟曼網swift教程:入門篇 - 軟曼網
4、swift語言編程資源大合集:3天200個開源項目,Swift編程語言資料大合集 | CODE
……
三、社區
1、swift學習者資源分享2、swift吧:swift吧_百度貼吧
3、swift語言吧:swift語言吧_百度貼吧
---持續更新的分割線---想來你是想學習swift來自己動手做個iOS app?其實對於初學者到底是swift還是objective-C也很值得討論。這個問題實在讓我很有回答的慾望。
2年以前我和同事一起打算做個iOS app,我做設計同事編程,怎奈此同事工作太忙,進展很慢,項目眼看著就要擱淺。
我不是個做事有頭沒尾的人,於是打算親自上陣,完全零基礎。但我就是想把這個app弄上線。於是我買了一台macbook pro retina,開始了編程之旅。
一個字,煩。其實不會就去學,也沒啥,但煩的是:
第一,有的教程十分系統,從變數講起,十分深入,從對象一直講到內存管理。對我這樣一個零基礎的門外漢,讓我立即暈頭轉向。加上我的目的是上線app,這樣系統的講解只是講知識點,和真正做一個app距離太遠。
第二,有的教程十分零碎,教你做一個小效果,但是他用到的一些技術,知識,很可能就是一個零基礎的門外漢所不理解,不具備的。所以極有可能完成不了最終的效果。
第三,資料魚龍混雜,針對什麼版本的都有,當時是iOS 4/5更新換代之際,各種一團亂麻
這裡推薦幾個還不錯的資料:
蘋果官方文檔,英文,對於開發的最權威幫助,面向最新版本
https://developer.apple.com/library/ios/navigation/
斯坦福大學的iOS開發課程,英文,iOS 8(目前最新版本iOS 9)
https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099
這個課程講師不可謂不專業,水平不可謂不高,有基礎也有一些小項目實踐,但是,針對我想做的app還是相差很遠。我並不指望有一個教程能教我如何做我想做出的app,畢竟每個人想法不一樣,又不可能為每個人定製一個教程。
後來,有了這樣一個教程,完全面向零基礎,教人如何做一個精緻小巧的app。麻雀雖小,但五臟俱全,做一個app需要的基礎知識一應俱全,包括頁面樣式,跳轉頁面,列表,輸入框,自定義按鈕,還不只是展示界面,還有存儲和讀取信息。雖然不是手把手教人如何實現自己的想法,但是這些基礎功能學會了,想做自己的東西,也就有了些思路了。
更可貴的是課程雖然面向零基礎,但是不光是對著案例教人如何實現,還講到了編程的一些原則和方法論,不是教人做一個簡單粗暴的豆腐渣工程,而是一個構架良好可以擴展的應用。
課程地址 原型課堂
為最新版 iOS10 設計了面向零基礎的編程課程,選擇了十分成熟和穩定的Objective-C,從一個很好的角度切入iOS編程,讓人學起來完全無壓力。
後續
還記得那天,我已經在家連吃了5天外賣終於解決所有問題把app提交審核。我想起了聽過的一句話:「我回望一生遇到的所有的瓶頸,都來自於我為自己設下的愚蠢的界限。」我是學設計的出身的,在一家小公司剛剛做了幾年交互設計師,覺得編程開發複雜高深,我有點畏難,但是我沒有止步,我走出了自己舒適的圈子,去挑戰自己沒做過的事情。
也許你想問這個app後來怎麼樣了。其實並沒有什麼很好的結果,這只是一個面向小眾需求的app,面向全球用戶下載,每天只有100多人下載,打開一次可能就不再訪問。無論從任何角度都是一個失敗的app。但開始學編程為我打開了一扇門。
我開始有意無意的留意起公司開發的Web app的html代碼,先從css看起,慢慢的我開始可以去調整公司項目開發過程中不符合我設計的按鈕樣式了,我在設計工作中開始有意識到哪些設計是容易實現的,哪些是比較難以實現的,所以我提交的設計都以更高的還原度得以最終出品。我開始不局限於交互設計,開始實踐視覺設計,思考產品,思考精益創業,夢想有一天做自己的產品。
斜杠青年,我也做老師
一年又一年,在剛剛為一家投資教育做了設計諮詢之後,積累了一些設計經驗的我開始有了分享的想法。2014年,我開始在douban發帖收集設計經驗分享的目標用戶,其中一位提到了在淘寶上購買了Axure視頻教程,他傳給我聽了一下,一聽之下什麼鬼,把Axure各種神棍的功能都介紹的清清楚楚,而實際的產品設計中根本不會用到這麼多,Axure本身只是一個工具而已啊。我想起了我自學iOS的痛苦經歷,為什麼不能去做一個真正「好」的課程呢?為什麼不用做產品的思路來設計課程呢?為什麼不能做一個基於短小精悍的案例介紹一些真正常用的功能,順帶介紹產品設計的思路和方法的課程呢?於是我飛速的設計了Axure的教學案例,不僅包含軟體操作,更內涵了設計思路,並錄製了6小時的教學視頻。後面怎麼辦?我打算做付費學習,不管收費多低也要付費,畢竟好的內容是值得用戶付費的。
那麼如何實現付費呢?是不是要做一個網站接入微信支付淘寶支付呢?我雖然學過了一次iOS開發,但是我還不會網站開發啊喂。而且最重要的一點,精益創業!我還沒有驗證我的教學視頻是不是能切中用戶需求,用戶是不是有意願付費啊,不能一次性做這麼大工程,3個月之後上線,然後無人問津不是很傷心?
於是我選擇了優酷視頻+淘寶店。淘寶店鋪不需要開發,只需要起個名字去申請開店就好,就叫原型課堂吧!優酷視頻怎麼玩呢?當年優酷視頻也提供一些最基本的視頻觀看許可權的管理功能,其中一種觀看許可權就是「只有我關注的人才能觀看」。這就好辦了~我在youku放幾個可以所有人觀看的試聽課程,然後引導用戶去淘寶店購買,淘寶店購買之後,我要求用戶註冊優酷,我再關注一下他,他就獲得了觀看的資格。無需複雜的開發技能,就可以走通整個用戶價值實現的流程,我開始了自己做「產品」驗證用戶需求的道路。
成果喜人,上線第一天就有人購買,第一個月的營收就有千餘。不僅有用戶感興趣,而且得到了付費用戶,也的到了用戶的好評。貼一個當年的視頻專輯
Axure RP 6.5視頻教程第1課 課程介紹和成果演示 組件 培訓 案例 產品經理 交互設計
在經歷了3個月的用戶驗證之後,我不斷調整了一些細節,更新了一些課程章節,也逐漸堅信在線學習這條路值得去做。下一步要做什麼?在線教育無疑最重要的就是內容,我把我的精力持續投入到了內容創作,但youku也並不是一個好的播放載體,經常會有播放的問題,經常會有用戶表示為什麼我付了錢還是會看到廣告?所以我選擇了外包開發。一方面是我的收入還足以負擔,另一方面更重要的則是每月都會有比較穩定的課程售賣收入,幾個月的營收就足以負擔外包開發的費用。
一個月之後,原型課堂的網站1.0終於上線。貼幾張當時的網站界面:
設計簡單有效,甚至沒有首頁的概念,進了網站就要登陸,主要是實現用戶可以在我的網站觀看的功能,可以對用戶的體驗完整的負責,用戶可以不再觀看廣告,可以專註在學習上了。網站使用某雲計算的服務,包括存儲和資料庫都是採用了雲的方式。雲計算的優勢在於按需付費,其實是很大程度上節省了開支。
在《Axure視頻教程之手機應用設計和表達》課程之後,又陸續創作了《Photoshop視頻教程之手機應用視覺設計和表達》以及《手機應用交互設計精髓》這兩門課程,獲得了更多的關注,也進一步驗證了需求。我又一次,想起了我學習iOS的痛苦經歷。
挑戰!技術類課程:《零基礎網站開發教程》
要說Axure這類軟體的課程,真的是多如牛毛。因為Axure軟體實在是簡單,像Word一樣簡單,毫無門檻可言,任何教書匠都可以來教。但要說技術類課程,多少有了些門檻,會編程的人本就不多,更何談敢開堂授課。另外一個角度是,正因為Axure軟體比較簡單,所以無論怎麼講無非是軟體操作,所以對於教學水平要求不高,基本怎麼講,用戶都能聽懂。但我心裡清楚,到了技術教程,絕對就不是這麼回事了。
還是先從簡單的挑戰開始,我首先打算試水網頁技術的教程。喂,可是原型課堂的網站都還是外包的啊!你到底行不行啊?2015年春節,我完全重寫了原型課堂的網站,包括前端和後端。在請教了無數前端大神的指點和審校之後,我用自己基於案例,循序漸進的教學方式,創作了《零基礎網站教程》,完全針對零基礎,教大家從下載編輯器開始做自己的網站,走一遍完整流程,直到購買域名,利用github的免費服務發布自己的個人站點。反饋良好。大家反應比一般一上來就講語法的課程強太多,對於一些比較複雜的概念也能比較容易理解。我更堅定了自己的信念。
挑戰!技術類課程:《零基礎iOS開發教程》
嗯,這篇回答是廣告來的。上面提到的課程就是我結合自己從一個零基礎的初學者一路走來的經驗寫就的iOS開發教程。其實這個想法貫穿了我做原型課堂的始終,我寫教案的筆也拿起放下、拿起放下了很多次。終於,時機成熟了。也是在厚著臉皮請教了無數iOS開發大牛之後,2015年8月,正式開始寫作。
寫作課程是個累人的活,iOS這個課程就是要加個「更」字。主要做了幾件事:
- 先期提綱的寫作
- 案例項目的設計和開發
- 正式的課程錄製
- 剪輯,修改和一系列收尾工作
說說最難的事情——就是入門課程的設計和寫作。其實iOS的開發是很有邏輯性的一件事,裡面的概念並不複雜——對象、方法、屬性,無非是這幾件。但如何用一個不枯燥的、有來由的方式將這個邏輯性思維講解出來就成了大問題。
我深知第一堂課樹立印象的重要性。我心目中一個理想的教學方式應該是自然而然的,由一個問題引發另一個問題,環環相扣、逐漸展開、娓娓道來。最終選擇了這樣的方式:
- 新建項目,發現項目運行一片空白
- 那麼為了給頁面增加背景顏色。所以寫下兩行代碼。寫在哪裡和為什麼寫在這個位置先略去不解釋,先講解代碼,從而自然的引出了對象,方法,屬性這些概念。
從開發一個app的實際出發(總要換個頁面背景顏色吧),穿插必須的基礎概念。同時因為有一個實際可以看得到的界面改變(從白色變成灰色),概念變得並不枯燥了。很多朋友反饋說,看了課程之後,覺得沒那麼難了!
之後再為頁面增加標題欄,再之後再增加新的頁面,因為不斷增加的新內容引發了新問題,也就不斷增加了新的教學內容,不僅是教大家實現app,也教大家如何用健康、可擴展的方式寫好代碼,也就是教大家程序設計思想的初步內容。
去做大家都不看好的事
在開始寫課程之前,所有認識的工程師對此都不看好。事實上整個過程確實非常痛苦艱難,在錄製了兩課之後,因為覺得之前的講解思路不夠明確,又推翻重新錄製了一遍。這個過程很痛苦、折磨,但我相信一切都很值得。
一直看到別人有用直播的形式,但我還不敢嘗試。因為我希望保證課程的過程盡善盡美。錄製課程的時候,每一段最多錄製10分鐘,更長會有口誤,口誤就要重新來過。每錄一段,都會重新聽一遍,講解是否簡單易懂,是否拆的夠細。所以整個iOS課程長達14小時,每一段都是10分鐘甚至更短,最後的剪輯工作也變得異常繁瑣。
雖然聽起來比直播費力許多,但是優點也很明顯:既保證了課程質量,又節省了時間、降低了成本,平價地將課程傳播給更多的用戶。
曾經得到一個反饋說「太啰嗦」,之後另一個反饋則說「說啰嗦的,麻煩看清標題是什麼, 零基礎好嗎?」。最近,我跟一位資深工程師討論我們的iOS課程,他看過課程之後表示驚奇,有很多零基礎用戶可能不懂、需要聽的東西,他之前都沒想到過,「居然這個也要講?」——事實上,正是這些被認為啰嗦,被忽略的內容,才讓大家的學習變的困難重重。這也是我努力開發課程的目的——「聽得懂、學得會、用得上」。
努力都沒白費,《零基礎iOS開發教程》是目前最受關注的移動開發課程之一。
最後說一句我很喜歡的話:
做自己的產品,才是產品精神的最好實踐。大家共勉。
希望原型課堂對你有幫助。
其實Swift個人感覺還是非常容易上手的,已經體會了一個多月。本人有點點編程基礎,現在自己想的遊戲已經初具規模了,要比我學過的其他語言都要通俗易懂,簡單的說,很好學。
其實學習資料就幾塊:
蘋果的官方教程:如果英文不是很熟練的話可以看國人翻譯過來的教程,但是看過感覺翻譯的不是很通俗,前後翻譯水平也不一樣,看過感覺雲里霧裡的。
一些網站上的視頻教程:資料很有限,如果想完成自己的想法遠遠不夠。比較推薦極客公園的教程,可以一步一步學。
看代碼:這也是我最常用的一種,平常都去Github,找一些與我想法類似的代碼下載下來研究,一點一點地看,時間長了也就熟悉了很多。如果英文不是特好可以去找找國內的一些分享代碼的網站看看,我比較常用的是swift獵手(www.swiftkiller.com)這個,有動態圖還可以查代碼,很方便:)
希望對你有所幫助!
我自己也是零基礎上手IOS。零基礎的開始學 最好不要看書。書上教講的是一些基本概念,和語法,難理解,不適合新手。
記住,作為一個零基礎,你學習的目標是能用swift做一個東西出來!不是記住一些概念和語法。
推薦一個比較科學的學習流程。
第一步:
如果完全沒有編寫過程序的人,先了解一些基本編程的語法。(有則直接進入第二步)把 variable, function, while loop, for loop, if else, class 這些基本概念簡單看一下。可以看這段java的視頻,講的很好懂。馬士兵JAVA教程 看完基礎語法部分(Java 的語法跟swift 很像 會很好理解)第二步:
跟著視頻,寫一個很簡單的應該。這非常有助於你理解swift的實際用法,而且上手非常快。第一個Swift應用一開始的時候不要嘗試去理解太多的概念,跟著視頻動手去做就好了。多做一段時間之後會發現這些概念自然就融會貫通了。像MVC,面向對象這些東西,我個人都是先明白了怎麼用,後來知道原來在課本裡面 對應著這個概念。第三步:
等你有能力做一個基本的應用之後,你對IOS就大概有了個概念。這個時候可以耐心的讀一讀Apple官方文檔,或者一些進階開發教程以下是一些是不同方向的延伸,按照難度排列。推薦按照流程學習。
UI:
1. 基本Storyboard 使用 (連線 UI分層)2. UIView 的基本結構 frame, bound, center3. 試下不同種類的view ,UIScrollView, UIImageView, UIButton, 這些做常見4. 熟悉 auto layout 和 Constrain動畫:
1. UIView.animate 最簡單的動畫2. CGAffineTransform3. CAAnimation4. OpenGL (這個屬於遊戲級別,慢慢來)數據管理:
1. NsuserDefault2. 本地文件緩存 plist file, 圖片文件等3. Core Data4. NSCache5. Sql 或者一些其它的資料庫網路: 推薦用現成的包。 Alamofire, AFNetworking首先,你需要一台mac(1w左右),當然你也可以再pc上用虛擬機或者黑蘋果。
其次,你需要了解一下基礎語言,比如面向過程的c(針對沒有編程語言基礎的人)然後,你需要一台iPhone(itouch)或ipad(1k-1w)接著,你需要註冊蘋果開發者賬號(99美刀),或者找到開發者這個圈子,大家用一個id很多人到這個時候已經放棄了。如果你完成了上面這些,而且還能保持較高的積極性,很好!接著學習英語,看英文文檔吧:Swift Programming Language中國開發者9天完成《Swift語言》中文版,效率真的很高,附上鏈接:
GitHub:numbbbbb/the-swift-programming-language-in-chinese · GitHub教程:《The Swift Programming Language》中文版最後,祝你成為一個優秀的ios開發者!作為一個Swift零基礎的人,感謝評論中各位的補充。我願意分享下我的3個月的整塊時間學習和寫出一本專著的經歷。
最早接觸的是objc。2015年,我也去看了下objc,第一感覺很不好:
1. 都是函數,C的函數和objc的函數創建和使用差別很大,並且混合在一起
2. objc函數帶著參數標籤的,函數長的受不了
3. 即使是第一步最小的app,也得了解設計模式,它一開始就出場,叫做delegate
所以我認為objc語言比較原始,沒有隨著大流和其他語言一起演進,暴得大名,其實不符。加上UIKit的封裝做的比較差。寫了個小app後,我隨即放棄。我後來也查了下,相當多人對objc的語法和UIKit的封裝並不滿意,但是也有人在分享以上兩者的優雅設計,人的思想,真的奇妙有趣,思路清奇的人總是有的,所幸的是,條條大路通羅馬,不必一根樹上弔死。
等到swift出來,2016年初感覺好多了,和主流的比較接近了。而且還有類似腳本的強大的對象字面量,這就令人欣喜了。當然坑依然還有的:
1. UIKit的庫函數名依然帶標籤,依然比較長,你可以感受下AppDelegate的第一個函數:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -&> Bool
2. 依然需要一開始就了解設計模式,首先還是delegate,MVC。滿篇的ViewController。這學習曲線夠狠。
我寫了一些筆記都在github上。也找了7-8本書,共同的感覺是太啰嗦,充斥者和當前要了解的東西不直接相關的內容,以及大量的和Storyboard相關操作的截圖。這些截圖讓我心煩。我好歹是一個程序員啊,寫代碼看代碼,跑代碼,不好嗎。看什麼圖,又不是學PS。然後忙著別的事兒,放下了。
2017年3月,我決定把這個事兒撿起來,我的做法是上來直接看Apple的開發者文檔。當然,難度肯定是有,畢竟這個東西是面向UIKit本身的,講究的是說明白本身,而且一貫的,官方文檔的例子都比較少。我看了這個文檔中的UIKit,Foundation部分,看了很多遍。看了當天就要筆記,筆記保證都是有一個自己編寫的可以跑得通的案例。這個案例必須一次粘貼到IDE內,然後就可以RUN。一個個控制項的做下來,並且發布在掘金上。確實看不懂,查了google和SO也沒有結果的,就列印出來,反反覆復的看。
這時候我覺得腦袋裡面已經都是知識了,必須得輸出了。
地址在此:TofJ 的個人主頁 - 掘金,不知不覺的,居然積累了40篇了。在掘金寫博客3月,騙了1500的關注呢。我一直秉承幾個原則:
1. 說什麼就集中說什麼,和當前要關心的無關的,不談
2. 代碼貼入IDE,覆蓋AppDelegate.swift,然後就可以RUN,保證能跑,不需要你在文章裡面七拼八湊的
3. 堅持用代碼,不用StoryBoard。用了SB,就直接進入截圖黨,操作員,一張圖細節太多,但是看過了,就毫無內容。我不反對使用SB做設計,但是極為反對使用SB來學習UIKit的UI設計
我然後又找了一個App,是開源的swift編寫的v2ex客戶端,Finb/V2ex-Swift。我翻了幾個app,覺得這個代碼寫的相對簡單,規整,訪問的論壇我也比較熟悉,於是決定從它這裡,再來一遍我的所學,印證下我的知識。這個app除了代碼比較清潔,結構簡單外,也有用了不少第三方的包。比如上拉下拉控制項,1password擴展,Keychain擴展,alamafire網路擴展等開發一個App幾乎必備的包,可以一併學習。
我在閱讀Finb/V2ex-Swift代碼中,也在按自己的想法做了一些重構:
1. 大意是提煉公共代碼,把代碼搬來搬去的放在更加合適的地方,封裝了簡單的基礎類,比如TableView,這個最常用的控制項的封裝。
2. 當然,我一直反對使用delegate,而是想要轉換它為Property-Method-Event的模式,所以封裝的底層當然還是delegate,高層就儘可能引入Event。
3. 在有些地方為了充分理解,可能需要抽取ViewController代碼到單獨的工程中來做驗證。這個做法,讓我吃了不少苦頭。就是說你抽了ViewController,隨即它的七大姑八大姨也跟著來,大家都是耦合在一起的。為了以後我做這個工作簡單,我使用消息機制,把所有的ViewController的全部打破,原來的互相耦合,全部通過一個中心類,通過消息發送和接收處理變成了單純的星型耦合。
我把我的工作放到了這裡。1000copy/fin 。這裡的代碼基於Finb的貢獻,感謝他的分享。這個代碼我希望它更好閱讀,也更好拆分,分而治之。
這期間,我稍加整理,發現真的夠一本書的量了,可以完整的說清楚技術,並且不廢話,沒有截圖,代碼可以直接跑,這就達成了我的目標。我發給了圖靈,一貫的輕車熟路,兩周後,發出電子版。
我的學習依然繼續。我希望為它做出一個框架,有了這個框架Swift就像C#一樣好用
先學會 Haskell 、 CPP 和 Objective C,然後 Swift 看看文檔,查一下 Stackoverflow 就能懂的。
這就是我從0基礎到學會 swift 的過程。謝邀。。。。這話說的
任何一個學c的人我相信都是從零基礎開始的我們最早學c的時候,老師光是給我們解釋一個賦值都解釋了一節課結果我們還是不太清楚為啥大家全是「相等」的編程這東西,多動手吧,光看一點不動手,誰也幫不了你http://ipeiwei.xyz/2014/12/13/Swift-Optionals-Tutorial/
最最重要的,你得有這個毅力和決心。
找藍翔
完全零基礎的話建議先去找本python入門的書了解下python,知道類似語言(swift很多特性和python類似)是什麼樣之後可以跟著蘋果的官方文檔來,新手看文檔難免會雲里霧裡。不過估計不久就會有相關swift教程出來,多搜搜多看看技術博客(建議直接谷歌搜英文博客),相信你會提高很快的。
我只推薦一個自用的http://www.swiftv.cn/
推薦個好東西,github 上面一個專門收集swift學習資料的好東西, https://github.com/ipader/SwiftGuide
吉他我買Taylor,語言就選swift試試吧
推薦閱讀:
※編寫大中型 ERP 系統軟體通常會用到哪些編程工具?
※作為程序員,你在 2015 年都有哪些進步、收穫與成長?
※怎麼才能挖到玩知乎的程序猿大牛?
※艦隊 Collection 的程序員究竟有多爛?
※作為一個剛剛入職Android開發的應屆生,該如何走向架構師?