小明學iOS 發表在 痞客邦 留言(0) 人氣()

在Xcode 中不管是 iPhone 或 iPad 模擬器都不能使用照相機功能,

如果一定得要在撰寫程式時加上使用照相機的功能,

最好在 UIImagePickerControllerSourceType.Camera 這行之前加上一個 if 判斷, 如

if UIImagePickerController.isSourceTypeAvailable(.Camera) {

// Camera 可以正常使用時

} else {

print("Camera is not available.")

}


如果不加上這個 if 判斷, 在模擬器中按到 Camera 功能時, 

程式就會 crashed. 

文章標籤

小明學iOS 發表在 痞客邦 留言(0) 人氣()

在 Swift 2.0 以前使用的 do while  在 Swift2 改成 repeat while, 如下:

var counter = 1

本來是

do { 

println(counter)

counter++

}

現在 Swift2 則是

repeat {

print(counter)

counter++

}

文章標籤

小明學iOS 發表在 痞客邦 留言(0) 人氣()

在一般的程式語言中, Bool 通常只是型態(type), 經由判斷式如 if 等產生true 或 false.

而在 Swift 則可以用Bool() 直接判斷並得到 true 或 false.

ex:

let sample = 4

let a = Bool(sample%4)   // 結果 a 是 false, 因為沒餘數.

or 

let a = Bool(sample%2)    //結果 a 也是 false.

or 

let a = Bool(sample%1)    // 結果 a 也是 false.

or

let a = Bool(sample%0)    // error.

or

let a = Bool(sample%3)  // 得到 a 是 true, 因為有餘數, 所以是 true. 除了1,2,4 外應該其他 a 都是 true 了.

文章標籤

小明學iOS 發表在 痞客邦 留言(0) 人氣()

在Swift 2.0 之前的版本, print 有 print() 跟 println() 兩個函式, 跟 Java 的用法差不多.

然而在 Swift2 則拿掉了 println(), 而用 print() 取代了 println(), 如下:

那麼若要使用原本 print() 的不換行功能呢?


文章標籤

小明學iOS 發表在 痞客邦 留言(0) 人氣()

在 iOS9 中出現一個奇怪的現象(目前還不知道為何這樣設計?), 

就是 UITextField.text 的變數改成一定要用 let 宣告而不能用 var 宣告.

如: 

@IBOutlet  var  nameField:  UITextField!

let  enteredValue = nameField.text

再來,

在UITextField 輸入時會有鍵盤出現,

如果在程式中加入: nameField.resignFirstResponder() 的話,

鍵盤在觸發事件發生時(譬如@IBAction)會從螢幕上收起來, 消失!

沒加 resignFirstResponder() 的話,

則鍵盤會一直停留在螢幕上不會消失.


文章標籤

小明學iOS 發表在 痞客邦 留言(0) 人氣()

剛開始接觸 iOS8 的時候, 以為只要學會 Swift 程式語言就好了, K了蔡明志的“學會Swift程式設計的18堂課"(下圖), 覺得Swift 真的非常非常簡單, 跟Python 差不多簡單易學.

swiftbook      

但一打開Xcode 6.3 要開始寫個 App, 發現只會 Swift 根本還不夠, 有一堆 View 要去了解, 還有 View 跟 View Controller 跟 Delegate 的觀念要釐清, 更有一堆 Framework 跟 APIs 需要去細細研讀. 霎時覺得寫個 iOS App 確實比 Android App 難了一些, 因為 Android 使用的是幾乎每個學資訊相關都會學到的 Java, 所以對 Java 相關的 Resource 也比較熟悉! 

於是乎, 在網路上找找大家都是怎麼學習 iOS App 開發的? 發現很多人都是買本書然後照書上依樣畫葫蘆, 日子一久, 再回來看原先看不懂的架構或技術名詞或應用, 就會懂了!

這對我來說, 真不是好的學習方法, 怎麼程式設計在上個世紀大談系統化之後, 下一個世紀還是無法系統化的學習呢?

東找西找, 終於給我發現了一本書寫得比較系統化, 學習起來又快又好理解!

就是這本(我買二手書便宜很多):

ios8book  

這本是翻譯書, 但翻得真的很讚, 當然原作者循序漸進的教學安排更是不得不豎起大拇指!

如果你沒錢買書或英文不錯, 其實可以直接去 http://www.Appcoda.com 看原作者寫的部落格則更好!

 

小明學iOS 發表在 痞客邦 留言(0) 人氣()

幾個開發 iOS App 時一定要參考的網站:

 

1. http://www.raywenderlich.com

2. http://stackoverflow.com

3. https://github.com

4. https://www.parse.com

5. http://web.stanford.edu/class/cs193p/cgi-bin/drupal/

6. http://www.appcoda.com/ios-programming-course/

7. http://codewithchris.com

8. http://appadvice.com/appnn

 

小明學iOS 發表在 痞客邦 留言(0) 人氣()

小明今天在看Stanford University 的 iOS 教學影片...2015年版的CS193P,

居然是 iOS8, 講Swift 的, 好快喔! 真感謝那位老師.

邊看邊做, 按表操課! 執行時結果居然出現了有兩個 issues(如下圖):

errormessage1

點進去一看, 錯誤訊息是"_main", referenced from: implicit entry/start for main executable (如下圖):

errormessage2

到 Stackoverflow.com, 試了幾個Answer再執行一次, 結果還是一樣 2 errors.

不得不上 Apple Developer 網站查看!原來 Swift 說是沒有 main,

但事實上是有的, 只是被隱藏到 AppDelegate.swift 去了(如下圖):

AppDelegate

 

我剛剛不小心連 AppDelegate.swift 也刪掉了, 導致出現runtime 找不到 main entry 點可以進入.

加回去吧!從別的project 抓一個 AppleDelegate.swift 加回去吧!   該檔案主要內容如下:

 

AppDelegateContent    

看到了嗎?就是那個@UIApplicationMain, 那個就是 main entry 啦!

再執行一次, 成功了, 圓圓跑出來了. 如下圖:

螢幕快照 2015-07-25 下午8.49.39  

轉90度一下, 沒問題, 照樣轉!

螢幕快照 2015-07-25 下午8.51.25

小明學iOS 發表在 痞客邦 留言(0) 人氣()