今天想來分享的是 Array Safe的問題
之前看了別人寫的專案,都會有個safe的後綴詞,然後我想都想不明白那到底是什麼
直到我看到了這篇
https://medium.com/@daoseng33/swift-array-%E5%AE%89%E5%85%A8%E5%8F%96%E5%80%BC-bf69641c2913
那就來分享一下這個東西
先看範例
// 這就是常見的data的safe取值方式
// 這代表什麼意思 -> 繼續往下看
data[safe: index]
extension Collection {
subscript (safe index: Index) -> Element? {
// 如果有該值就會回傳該值,如果沒有該值就回傳nil
return indices.contains(index) ? self[index] : nil
}
}
// 我們就可以這樣處理問題
// 假設我們在VM處理從API打回的資料 進行本地端的刪除動作
func removeItem(index: Int) {
if let haveData = data[safe: index] {
// 如果有資料的話就先刪除一波資料
data.remove(at: index)
} else {
// 如果沒有資料,可以讓資料Reload,讓data重新載入
reloadData?()
}
}
https://medium.com/@daoseng33/swift-array-%E5%AE%89%E5%85%A8%E5%8F%96%E5%80%BC-bf69641c2913
坑:
如果常常遇到Crash問題,那麼就可以加入防呆措施以免造成使用者方面的不愉快