發表文章

目前顯示的是有「Swift」標籤的文章

Apple Related Tutorial

Develop in Swift  Tutorials   App Dev  Tutorials Develop apps for Apple platforms

190328 iOS Swift UITextField 文字編輯偵測

首先,找到的是以下這篇 StackOverflow https://stackoverflow.com/questions/28394933/how-do-i-check-when-a-uitextfield-changes 才發現 Swift 版本不同,用法也不同,怪怪。 目前 Swift 的版本為 4.2,所以就參考 Swift 4 的部份吧。 但剛透過以下連結,查了公司 Mac 中的 Swift 版本,已經到 5.0 了。 https://stackoverflow.com/questions/31247229/which-version-of-swift-compiler-is-the-default-xcode-6-4 xcrun swift --version ————————————————————————————————— 在撰寫 addTarget 時,遇上了以下的問題 Argument of '#selector' refers to instance method 'xxx' that is not exposed to Objective-C Add '@objc' to expose this instance method to Objective-C 網路上查到以下這篇,當中有原文說明。 https://blog.csdn.net/KevinQueen/article/details/78286189 有兩種處理方式,一是在 func 前加上 @objc,另一個是在 class 上方加上 @objcMembers。

190327 iOS Swift 變數的 問號 與 驚嘆號

當變數宣告為 可能空 (這是我稱呼 Optional 的中文)如下 var name: String? 如果要存取 可能空 的變數,可使用驚嘆號(!)來 強制展開 (Forced Unwrapping)其值,如下 print( name! )  但要注意的是,當 強制展開 時,如果該 可能空 的變數真的為空(nil)時,就會出現執行時期錯誤(Runtime Error)。 ————————————————————————————————— 如要安全的讀取 可能空 的值,可使用 可能空綁定 (Optional Binding)如下 if let hasName = name {     print( hasName ) } // end If  用中文說明上面這段程式碼,「如果 name 有值,則指派給 hasName ,並執行大括弧內的程式碼」。 ————————————————————————————————— 另一個能安全存取 可能空 的值或呼叫 可能空 的方法之技術稱為 可能空連鎖 (Optional Chaining)如下。 name?.removeFirst( 1 ) 上面這行程式碼,當 name 為空時,該行程式碼就不會被執行。 ————————————————————————————————— 當變數在宣告時使用了驚嘆號,這樣的方式稱其為 隱性展開可能空 (Implicitly Unwrapped Optional);以這種方式宣告,是可以直接存取該變數的值。但還是可以使用 可能空綁定 與 可能空連鎖 。在 Outlet 的宣告最常使用此種方式。 var name: String! 這種宣告方式還是有其危險性。當存取到空(nil)的 隱性展開可能空 ,執行時期錯誤(Runtime Error)還是會發生。   PS. 最早我把 Optional 稱為 可為空,後來又認為 可能空 這個稱呼更有警告的意味;帶有在使用上要小心處理的意思。