前提・実現したいこと
ViewControllerとは別に新たにAlertファイルを作成し、そこに用途に応じてtitleとmessageを場合わけをしたものと、Alertの定義文を記述します。
アラートを表示させたいViewControllerや他のファイルでenumで分岐したアラート文を呼び出します。
発生している問題・エラーメッセージ
まだまだ、型についての知識が浅く、型があっていないからでしょうか以下のようなエラーが表示されます。
Instance member 'message' cannot be used on type 'Alert.ErrorType'; did you mean to use a value of this type instead?
該当のソースコード
Alert
1import Foundation 2import UIKit 3 4class Alert: UIAlertController { 5 enum ErrorType: String { 6 case failedLoadUrl 7 case failedFetchAPI 8 9 func title() -> String { 10 switch self { 11 case .failedLoadUrl: 12 return "Webページの取得に失敗しました" 13 case .failedFetchAPI: 14 return "タイトルの取得に失敗しました" 15 } 16 } 17 18 func message() -> String { 19 switch self { 20 case .failedLoadUrl: 21 return "もう一度やり直してください" 22 case .failedFetchAPI: 23 return "アプリを再起動し、もう一度やり直してください" 24 } 25 } 26 } 27 28 static func show(viewController: UIViewController) { 29 let alert: UIAlertController = UIAlertController(title: ErrorType.title(), message: ErrorType.message(), preferredStyle: .alert) 30 viewController.present(alert, animated: true, completion: nil) 31 let actionCancel = UIAlertAction(title: "OK", style: .cancel) { 32 action in print("Pushed CANCEL!") 33 } 34 alert.addAction(actionCancel) 35 } 36}
ViewController
1 Alert.show(title: .failedFetchAPI, message: .failedFetchAPI, viewController: self)
試したこと
型をStringに統一するため調べてみましたがいまいちこれといった解決にいたりませんでした。
enumからfilterを使う方法は調べました。
補足情報(FW/ツールのバージョンなど)
少し説明が不十分かもしれませんがご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー