2017年9月22日 星期五

關於Swfi4 使用到#selector的一些小修正

近期Apple已經釋放出正式版Xcode9雖然可以向下相容 Swift3.2
但我相信很多人會使用Swift4來進行編譯

跟以往有點不同的是這次因為有向下相容,所以原本專案是Swift3.2的話Xcode9並不會主動幫你升級成Swift4必須自己手動去調整。這邊就附上圖片給大家看一下

選擇你的prohect > targets > 專案名稱 > Build Settings > 收尋swift languae version去更改成swift4.0

好了以上是一點點的題外話,這邊主要是要說如果你在swift4中有使用#selector
在selector我們在swift3中會使用
#selector(funcName)這樣會無法像以往一樣做最簡單的方式 func xxxx(){ ... }
這樣系統會出現警告
這時不用擔心只要一個小動作,就是在func的前面加上@objc警告就會消失了唷!或是可以直接點選警告後按下Fix系統會自動幫你在該func前面帶入@objc

引述Swift3使用#selector指定的方法,只有當private時需要加上@objc,現在全部都要加上@objc


2017年9月17日 星期日

SWIFT3 簡易電子時鐘 Date & Timer 運用


基於好奇加上有點時間所以就做了很簡單的電子時鐘,功能沒什麼就無聊多做了時間擷取的Button記錄按下當下的時間。

然後這顆按鈕還可以發揮其他功能,譬如按下後將時間等資料回傳資料庫等等...這些就不多說了。

介面方面很簡當,我使用了4個UILabel跟1個UIButton,畫面請看最後的範例圖摟。

因為code其實不是很多加上小弟已經在code中註解了,這邊就直接附上code給大家參考

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var UserTimeLabel: UILabel!
    @IBOutlet weak var timerLabel: UILabel!
    
    var dateFormatter = DateFormatter()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        dateFormatter.dateStyle = .medium
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"//格式可以自定義例如可改成"yyyy/MM/dd-HH:mm:ss"
        //將時間轉換成字串(刻意多寫出來讓大家能夠清楚了解)
        let timeString = dateFormatter.string(from: Date(timeIntervalSinceNow: 0.0))
        timerLabel.text = timeString
        
        //時間的監聽(更新時間)
        Timer.scheduledTimer(timeInterval: 0.0, target: self, selector: #selector(ViewController.updateClock), userInfo: nil, repeats: true)
        
    }
    //更新時間
    func updateClock() {
        let now = Date()//獲取當前時間
        timerLabel.text = dateFormatter.string(from: now)
        
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func userBtn(_ sender: UIButton) {
        
        dateFormatter.dateStyle = .medium
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        UserTimeLabel.text = dateFormatter.string(from: Date(timeIntervalSinceNow: 0.0))
        
    }
    

}

以上code直接以模擬其執行出來的效果如下



希望能夠幫助到剛好有需要的朋友們^^