今天的內容一樣是代辦清單,今天我們來將現有的代碼整理一下,以及某些細節調整。
現在,我們馬上開始!
這邊參考ref9來加入收鍵盤的功能
class EditViewController: UIViewController,
UITextFieldDelegate {
// ...以下略
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
由於我們在開發的過程中,會遺留一些無效的註解,以及沒有用的程式碼。而且有些程式碼也重複了。
現在,我們來小小整理一下程式碼。
override func viewDidLoad() {
super.viewDidLoad()
guard let content = todo?.content else { return }
taskTextField.text = content
}
將第四行與第五行的程式碼抽離成一個方法
整理後如下
override func viewDidLoad() {
super.viewDidLoad()
configurationUI()
}
private func configurationUI() {
guard let content = todo?.content else { return }
taskTextField.text = content
}
[ListViewController] 整理
[ListTableViewController] 整理
一樣先刪除無用註解
整理viewDidLoad()內的程式碼
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self,
selector:
#selector(self.receivedNotification(notif:)),
name: NSNotification.Name(rawValue:
"editNotification"), object: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
setNotificationCenter()
}
private func setNotificationCenter() {
NotificationCenter.default.addObserver(self,
selector:
#selector(self.receivedNotification(notif:)),
name: NSNotification.Name(rawValue:
"editNotification"), object: nil)
}
接者我們發現到,程式碼中,散落者讀取Realm Data的代碼,現在我們將統一整理到一個RealmHelper中
直接按下『Create』
接下來我們直接把讀取Realm的程式碼搬過來,並調整一下
import UIKit
import RealmSwift
class RealmHelper: NSObject {
class func loadToDoList() -> [ToDoList] {
let realm = try! Realm()
let result = Array(realm.objects(ToDoList.self).filter("status !=
'deleted'"))
return result
}
}
而原本讀取的地方,替換為
RealmHelper.loadToDoList()
class func addToDoList(todoList: ToDoList) {
let realm = try! Realm()
try! realm.write {
realm.add(todoList)
}
}
class func loadToDoListWithFilter(filter: String) -> [ToDoList] {
let realm = try! Realm()
let result = Array(realm.objects(ToDoList.self).filter(filter))
return result
}
// guard let realmTodo = realm.objects(ToDoList.self).filter("id ==
'\(id)' and status != 'deleted'").first else { return }
guard let realmTodo = RealmHelper.loadToDoListWithFilter(filter:
filter) .first else { return }
今天我們實作了TodoList的收鍵盤功能,也優化以及重構了原有的代碼,讓整體看起來乾淨,舒服一些。
今天是10/10國慶日,中華民國~~~~生日快樂
隱藏祕技:『ctrl + cmd + space』
發現似乎無法顯示emoji,就改用貼圖拉
今天的內容就到這邊,感謝讀者們的閱讀。
https://github.com/chiron-wang/IT30_11
深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
https://www.udemy.com/course/iphone-swift4/
iOS 12 App 開發快速入門與實戰(繁體中文)
https://www.udemy.com/course/ios-12-app/
心智圖軟體Xmind
https://www.xmind.net/
[Realm]
[Swift] Realm.io 資料庫介紹 - 其之一:初探CRUD
https://ithelp.ithome.com.tw/articles/10183329
Auto increment ID in Realm, Swift 3.0
https://stackoverflow.com/questions/39579025/auto-increment-id-in-realm-swift-3-0
Realm Studio
https://realm.io/docs/swift/latest/#realm-studio
[Notificationcenter]
客製化 NotificationCenter 讓你使用起來更簡單
https://www.appcoda.com.tw/notificationcenter/
Apple Developer NotificationCenter
https://developer.apple.com/documentation/foundation/notificationcenter