Open1
【SwiftUI】@unknown defaultでfatalErrorせずログを落とす

@unknown default
を書いていないと、Swift 6ではエラーになる。
将来未知のenumケースが追加されたときには気づけるようにしておきたい && アプリをクラッシュさせたくない。
AsyncImage
内では必ずView
を返す必要があり、単純にprint
だけでは済ませられない。
そのため、EmptyView
を表示しておき、onAppear
で警告ログを出す形にした。
今回はLoggerまでは使わず、まずは雑にprint
で対応しておく。
AsyncImage(url: repo.owner.imageURL) { phase in
switch phase {
case .empty:
ProgressView()
.frame(height: imageHeight)
case .success(let image):
image
.resizable()
.scaledToFit()
.frame(height: imageHeight)
case .failure:
Image(systemName: "person.crop.circle.fill")
.resizable()
.scaledToFit()
.frame(height: imageHeight)
@unknown default:
EmptyView()
.onAppear {
print("[⚠️ Warning] [RepoDetailView] Unexpected AsyncImage.Phase received: \(phase)")
}
}
}