2016年8月29日 星期一

Xcode & Swift 技巧紀錄小筆記

MVC 架構
M:modol      背後運算 (後台)
V :view           UI部分     (前端)
C :controller 連結前後端

Xcode 技巧
ctrl + I 自動排版


網友寫得不錯的 Swift  gitbook 筆記

https://hugolu.gitbooks.io/learn-swift/content/Basic/Types.html


# currentTitle API文件 Declaration  範例
var currentTitle: String? { get }
let (不可變動的常數) 
var (可變動的變數)
currentTitle 變數名稱
String 變數型別
?(暫時認知是 問號是因為要設定值 驚嘆號是因為要取值)


#  型別的宣告可省略(會自動判斷型別 但也可以清楚宣告而不省 )  好矛盾呀~~
let name:String = “Swift ” —-> “Swift ”
let name = “Swift ” —-> “Swift ”
以上兩行結果一樣
var email = “” (swift自動判斷為String)


# 當初看哈佛iOS9教學視頻 做的一個計算機練習

print("touch  \(digit digit")
印出來是 "touch  Optional("5")  digit "  
\(digit)   \()   反斜線括號內的變數大部分可以自動轉型成String  


private int a=1; //實例變量 Instance Variables


哈佛大叔小筆記

第一堂
Stanford - Developing iOS 9 Apps with Swift - 1. Course Overview and iOS9 introduction

#1_2016.09.30
因為第一個參數也就是sender的這個參數名稱不要寫(雖然很奇怪但是就是這樣?!),所以要改成,而後面的otherArgument: 的Int 改成要傳的參數“5”
self.touchDigit(sender: UIButton, otherArgument: Int)
self.touchDigit(someButton, otherArgument: 5)



#2_2016.10.03 Optional
Optional 像是型別的一種像是 Int  bool 一樣  翻成中文是可選型別的意思

class ViewController: UIViewController {
    @IBAction func touchDigit(sender: UIButton ){
        let digit = sender.currentTitle
        print("touch  \(digit)  digit")
    }
}
《The Sw­ift Pr­ogramm­ing La­nguage­》正體中文版 寫到Optional
https://tommy60703.gitbooks.io/swift-language-traditional-chinese/content/chapter2/01_The_Basics.html#optionals
來看一個範例。Swift 的String型別有一個叫做toInt的方法,作用是將一個String值轉換成一個Int值。然而,並不是所有的字串都可以轉換成一個整數。字串"123"可以被轉換成數字123,但是字串"hello, world"不行。
下面的範例使用toInt方法來嘗試將一個String轉換成Int
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber 被推測為型別 "Int?", 也就是 "optional Int"
因為toInt方法可能會失敗,所以它回傳一個optional Int,而不是一個Int。一個 optional Int被寫作Int?而不是Int。問號暗示包含的值是 optional 型別,也就是說可能包含Int值也可能不包含值。(不能包含其他任何值比如Bool值或者String值。只能是Int或者什麼都沒有。)

if 語句以及強制解析

你可以使用if語句透過對比nil的方式來判斷一個 optional 是否包含值。使用「等於」運算子(==)或是「不等於」運算子(!=)來執行這樣的比較。
如果一個 optional 有值,就會被認為是「不等於」nil
if convertedNumber != nil {
    println("convertedNumber contains some integer value.")
}
// 輸出 "convertedNumber contains some integer value."

當你確定 optional 確實包含值之後,你可以在 optional 的名字後面加一個感嘆號(!)來獲取值。這個驚嘆號表示「我知道這個 optional 有值,請使用它。」這被稱為 optional 值的強制解析(forced unwrapping)



@IBOutlet weak var display: UILabel!
@IBOutlet weak var display: UILabel?
哈佛大叔說 驚嘆號 和 問號 都表示 optional



#3_2016.10.04 
let digit = sender.currentTitle!
加了!後 在API文件中是個值
沒有API文件中寫的String後面帶有"?" 


console 比較
let digit = sender.currentTitle
原本在console是
touch  Optional("8")  digit

touch  Optional("0")  digit

let digit = sender.currentTitle!
console變成
touch  5  digit

touch  2  digit



#4_2016.10.19
display.text = String(M_PI)// 強制轉型成String

第二堂

Stanford - Developing iOS 9 Apps with Swift - 2. Applying MVC

#5_2016.10.21
因為寫計算機功能 常用到背後運算 double 和 顯示前端的 string 轉換
所以乾脆用這方法 一次解決
// double turn display string 
    var displayValue: Double{
        get{
            return Double(display.text!)!
        }
        set{
            display.text = String(newValue)
        }

    }





#6_2016.10.30
IF 和 LET並用的情況,要不然基本上在switf 裡面,if 是要一個bool,比方說 if score > 50{…}
參考網址
http://appsgaga.com/swift-%E5%AD%B8%E7%BF%92%E7%AD%86%E8%A8%98-if-%E5%92%8C-let%E4%B8%A6%E7%94%A8%E7%9A%84%E6%83%85%E6%B3%81/

if let thisScore = score{
...
}


沒有留言:

張貼留言