今天就要來建立一個 Hello World swift app 啦 XD 首先就是開 Xcode 然後開專案囉~~ 就看你要存去哪裡啦~ 再來就會進到專案本身: 我們就看右下角有個地方可以找到 Label 這個選項: 把他拉到 Storyboard 的任意位置就可以了~ 然後更改 label 的屬性: 先點一下 label 選取後,看右上角 有個地方可以更改它的顯示文字,我們將它改成 HelloWorld! 改完之後,按左上角的 Run! ,我們也可以選擇後面的 target 看是要跑在 i6 或是 i5 上, 按下 Run 後程式就會 deploy 到模擬器上面了! 這就是第一個 Hello World 啦! 完全不用寫程式哦 XDDDDD 不過還是要稍微了解一下運作原理啦~ 如果剛剛在編輯 storyboard 的時候,有發現那個 View 的左邊有一個奇怪的箭頭指向 View,那個箭頭的意思其實就是程式進入點的意思, storyboard 就是在描述程式的走向,像在說故事一樣,從某一頁按了什麼東西跳到哪一頁 其實我一直都沒有很習慣 storyboard 的拉法,還是比較習慣用程式建立物件,將想要的物件用程式擺(憑空想像XD),但是前面幾個比較屬於練習的小東西都還是會用拉的,比較好懂~ 我們剛剛建立的那一頁 Hello world 基本上就是在左邊的 ViewController 那我們試著使用程式來改變 HelloWorld 這個 label 的值吧! 我們首先使用分割視窗的模式 選擇左邊數來第二個按鈕

Continue reading

[Swift-d10] 延伸閱讀

今天算一算也來到第十天了, 前面講了 8 天的語法,其實會有些枯燥 不過有些語法又很有趣 我不懂 Objective-C, 如果想從 Objectiv-C 轉換到 Swift 的話,最好查查一些比較的文章 最好的文件就是官方文件了 以 UILabel 為例 官方網站會列出兩種不同寫法: // SWIFT var text: String? // OBJECTIVE-C @property(nonatomic, copy) NSString *text 如果要從 Swift 基本概念開始,當然是首推官方的 The Swift Programming Language 是英文苦手的話,強國人有 翻譯文件 這群人非常厲害,發表後沒幾天就翻譯完成了 不過因為技術用語還是以中國為主,因此建議英文優先,或是對照著看 前面幾天都基本介紹前半部而已,屬於一般學習程式語言的基本練習而已 後半部是更詳細的部分,有空的話還是可以多看看~ 另外,官方還出了一本 Using Swift with Cocoa ad Objective-C 就是在介紹如何使用 Swift 加上 Cocoa framework 開發 App 不過書的內容不多,算入門級,有興趣也可看看這本~ 接下來會開始用 Swift 寫簡單的界面 由於筆者從沒寫過 iOS app,因此也是會用大約十天的時間來簡單練習一些常用的 Cocoa Touch framework 的元件 順帶一提前面沒講到的,Objective-C 有個東西叫作 Catagory,在 Swift 裏是 extension

Continue reading

Playground - Class, Struct 再來就是要提重點的東西了! class 和 struct 是用來建構整個程式重要的東西 兩者的差異在於:class 可以繼承其他 class,但是 struct 無法繼承 以下是宣告方式 class SomeClass { //... } struct SomeStruct { //... } 注意,Swift 的 class 和 struct 命名慣例是大寫命名風格 UpperCamelCase 而屬性和方法則是 lowerCamelCase 例如 increaseCount, addTwoInts 舉個例子: struct Resolution { var width = 0 var height = 0 } class CustomLabel { var resolution = Resolution() var isLabel = true var name: String? } 實體化,就可以改變其中的值了 var someResolution = Resolution() var someLabel = CustomLabel() someResolution.

Continue reading

Playground - Enumerations 通常會使用來定義一組相關的值 也是很方便的東西 列舉語法 enum SomeEnumeration { // enumeration definition goes here } 比方說,車子 enum Car { case toyota case benz case BMW } 也可以這樣寫 enum Car { case toyota, benz, BMW } 使用: var car = Car.benz 和 Switch 的搭配 enum Car { case Toyota, Benz, BMW } var car = Car.Benz switch car { case .Toyota: println("Toyota") case .Benz: println("Benz") case .BMW: println("BMW") } Associated Values 以 Barcode 來舉例子

Continue reading

閉包表達式語法: { (parameters) -> returnType in statements } 舉個例子: func multiple(value: Int, multiple: Int -> Int) -> Int { return multiple(value) } multiple(3, { (value) -> Int in value * 3 }) 在 multiple function 中需要傳入一個 function 在這邊我們並沒有另外定義,而是直接使用閉包的方式傳入一個 function 這個閉包就符合了上面的定義 根據上下文判斷型別 (Inferring type from context) 承上一個例子,我們可以寫得更簡潔一點 multiple(3, { value in value * 3 }) 這是因為 Swift 會根據兩邊的定義來判斷型別,因此可以寫得更簡潔一些 參數名稱縮寫, 運算子函式 直接看例子 func biggerThan0(value: Int, isBigger: Int -> Bool) -> Bool { return isBigger(value) } biggerThan0(-1, { $0 > 0 } ) 尾隨閉包 (trailing closures) 通常如果閉包太長的話,可以把閉包接在括號後面:

Continue reading

Playground - function 來看看 Swift 各種 function 的寫法吧! Swift 使用 func 當作宣告的保留字 GOLANG 的 fu…. XD 寫 Swift 的 function 會很開心 基本的 func say() { println("Hello!") } 有一個回傳值的 func say() -> String { return "Hello!" } 有多個回傳值的!!! (就是回傳 Tuple) func say() -> (String, Int) { let greeting = "hello" let times = 5 return (greeting, times) } say() 有參數的 func say(g: String) { println(g) } say("Hello") 多個參數

Continue reading

Array 宣告 // var VARIABLE_NAME: [TYPE] = ..... var fruits: [String] = ["apple", "banana"] var nums: [Int] = [1, 2] // 或是讓 Swift 自行判斷類型: var fruits = ["apple", "banana"] var nums = [1, 2] // 初始化: var cars = [String]() ps. Beta 版時的寫法是 var fruits: String[] 現在已經變成了 var fruits: [String] 操作 // 判斷該陣列是否有值,回傳 true 或 false fruits.isEmpty // 增加元素 fruits.append("watermelon") fruits += ["lemon"] // 取值 fruits[0] fruits[0...2] // 刪除值 - 將 apple 移除,banana 會自動補上 fruits.

Continue reading

Playground - Optional, ! and ? 今天要來探討 Optional 型別,我認為這塊是初學 Swift 常遇到的問題 大家搞不懂 “!” “?” 到底在幹什麼,所以今天就來了解一下 在 Swift 中,所有的資料型別都不能賦予 nil 也就是以下這件事是不成立的: var x: String = "test" x = nil 所以在 Swift 底下,就要使用 Optional 來處理值可能不存在的情況 當一個變數 x 被宣告成 Optional 型別時,該變數就會有兩個情況: 1. 有值,等於 x 2. 沒有值 要宣告一個變數可能為 nil 時的方式是使用問號 ‘?‘: // 此時 x = "yaya" var x: String? = "yaya" // 此時 x 沒有值 x = nil 拿以下程式在 Playground 執行看看:

Continue reading

變數與常數 定義一個變數: var obj: String = "" var 是保留字,宣告 obj 是一個變數名稱,冒號後面接資料形態 以此例子來說,宣告了一個字串變數叫做 obj,並且初始化為 “” 空字串 let obj: String = "" let 同樣是用來宣告一個變數,但是宣告此變數後,該變數的值無法被改變, 無法被改變的數值其實正正的名字就叫做常數 以上面的例子來說, 若我們多做一件事: let obj: String = "" obj = "test" 若我們試圖去更改 obj,讓 obj 從空字串變成 “test” 時, Xcode 就會報錯,不能更改該值 再來是宣告的變型,其實宣告時不一定要給資料形態, Swift 會自動從後面的值來判斷 x 可能是什麼資料形態, 只是由於筆者的習慣,會儘量在後面加上該變數的資料型別 var x = "test" 一行內宣告多值: var x = 0.0, y = 0.0, z = 0.0 我們就可以在 Playground 裡面試著宣告一些變數看看,並且使用昨天的輸出函式來輸出變數:

Continue reading

[Swift-d1] - 介紹

Swift 是 2014 年由蘋果公司在其開發者大會 WWDC 上所發佈的程式語言 The Swift Programming Language 一書中提到: Swift 用來撰寫 iOS 及 Mac OSX 的程式。 Swift 吸收了 C 和 Objective-C 的優點,使其在設計更具彈性、容易,且撰寫時有更多樂趣。 Swift 是基於成熟而且倍受喜愛的 Cocoa 和 Cocoa Touch framework,意即 Swift 可以直接使用這些現有的框架 Swift 兼具編譯語言的性能,以及直譯式語言的特性。 ** 什麼是 Cocoa/Cocoa Touch framework: Cocoa framework 是 Apple 爲 Mac OSX 所建立的環境,用來開發 OSX 的程式, 而 Cocoa Touch framework 則是建立於 Cocoa framework 之上,用來開發 iOS 作業系統程式, 此兩種 framework 皆遵循 MVC 軟體架構,開發時必須遵循此架構。

Continue reading

Author's picture

kerkerj

Cat lover <3

Backend Engineer

Taiwan