Fortifyを使ってcompactMap的なのを作ったら、便利なのではと思って書いてみた。
SafeMap
使う前
let paths = ["https://image.com", "", "あああ", "http://image.jp/"]
let medias = paths.compactMap({ (path) -> Media? in
guard let url = URL(string: $0) else { return nil }
return Media(url: url)
})
print(medias)
使うと
let paths = ["https://image.com", "", "あああ", "http://image.jp/"]
let medias = paths.safeMap({ Media(url: URL(string: $0)!) })
print(medias)
こんな感じでsafeMapオペレータ内であれば、強制アンラップに失敗すると自動でmapの対象から外してくれる。
問題点
ということで、debug executableをオフにしないと実行時にちゃんとデバッガーが拾ってしまうのでした…。
デバッガー殺しながら開発するわけにも行かないし、あんまり実用的じゃないな