teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

使用法を提示

2020/10/24 10:03

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -5,4 +5,50 @@
5
5
  他のクラスである、
6
6
  `ViewController`から呼び出すことはできるわけがないからです。
7
7
  `ErrorType`列挙型を他のクラスなどで使うならば、
8
- グローバルで定義・宣言しましょう。
8
+ グローバルで定義・宣言しましょう。
9
+
10
+ # コメントに対して
11
+ 使用の例示を出します。
12
+
13
+ ```swift
14
+ import Foundation
15
+ import UIKit
16
+
17
+ // ここで定義
18
+ enum ErrorType {
19
+ case failedLoadUrl
20
+ case failedFetchAPI
21
+
22
+ func title() -> String {
23
+ switch self {
24
+ case .failedLoadUrl:
25
+ return "Webページの取得に失敗しました"
26
+ case .failedFetchAPI:
27
+ return "タイトルの取得に失敗しました"
28
+ }
29
+ }
30
+
31
+ func message() -> String {
32
+ switch self {
33
+ case .failedLoadUrl:
34
+ return "もう一度やり直してください"
35
+ case .failedFetchAPI:
36
+ return "アプリを再起動し、もう一度やり直してください"
37
+ }
38
+ }
39
+ }
40
+
41
+ class Alert: UIAlertController {
42
+ // 引数では、ErrorTypeを入れさせる
43
+ static func show(errorType: ErrorType, viewController: UIViewController) {
44
+ // 処理では、errorType.title()、errorType.message()で、各文字列を取得できる
45
+ }
46
+ }
47
+ ```
48
+
49
+ ```swift
50
+ class ViewController: UIViewController {
51
+ // メソッドの引数で、ErroType自体を入れるので、ここではString文字列を入れる必要はない
52
+ Alert.show(errorType: .failedLoadUrl, viewController: self)
53
+ }
54
+ ```

1

語尾を修正

2020/10/24 10:03

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -3,6 +3,6 @@
3
3
  なぜなら、
4
4
  `Alert`クラスのメソッド内で宣言している列挙型なのに、
5
5
  他のクラスである、
6
- `ViewController`から呼び出すことはできるわけがありません
6
+ `ViewController`から呼び出すことはできるわけがないからです
7
7
  `ErrorType`列挙型を他のクラスなどで使うならば、
8
8
  グローバルで定義・宣言しましょう。