質問編集履歴

4

extensionがモジュールだとこの問題が起きるのかもしれない

2016/11/25 07:11

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,12 @@
3
3
  UIViewのextension内でネストされたenum(Visibility等)を宣言し
4
4
 
5
5
  そのenumのfuncを宣言し、宣言したfuncを呼び出そうとしたら、下記のエラーでビルドできずに困っています
6
+
7
+ extensionがモジュールだとこの問題が起きるのかもしれないです。
8
+
9
+ extensionの宣言自体をPodではなく
10
+
11
+ 例えばViewControllerのファイルに書くと、動きます。
6
12
 
7
13
 
8
14
 

3

エラーが起きないパターンを追加。UIView\.Visibility に staticFunc1, staticFunc2 を追加

2016/11/25 07:11

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,28 @@
48
48
 
49
49
  // a, b の違いは staticかどうか?
50
50
 
51
+
52
+
53
+ // エラーは起きない
54
+
55
+ UIView.Visibility.staticFunc1()
56
+
57
+ let enums = UIView.Visibility.staticFunc2()
58
+
59
+ // return enums.count
60
+
61
+
62
+
63
+ // エラー 返ってきた enumsのメソッドを使おうとすると駄目
64
+
65
+ UIView.Visibility.staticFunc1()
66
+
67
+ let enums = UIView.Visibility.staticFunc2()
68
+
69
+ return enums.count
70
+
71
+
72
+
51
73
  ```
52
74
 
53
75
 
@@ -65,6 +87,42 @@
65
87
  case Gone(Direction, to:Stick)
66
88
 
67
89
 
90
+
91
+ public static func staticFunc1() {
92
+
93
+ }
94
+
95
+
96
+
97
+ public static func staticFunc2() -> [Visibility] {
98
+
99
+ var enums: [Visibility] = [
100
+
101
+ .Visible,
102
+
103
+ .Invisible,
104
+
105
+ ]
106
+
107
+
108
+
109
+ for direction in Direction.enums {
110
+
111
+ for stick in Stick.enums {
112
+
113
+ enums.append(.Gone(direction, to: stick))
114
+
115
+ }
116
+
117
+ }
118
+
119
+
120
+
121
+ return enums
122
+
123
+ }
124
+
125
+
68
126
 
69
127
  public static var enums: [Visibility] {
70
128
 

2

呼び出せるfuncもある

2016/11/25 06:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,9 +32,21 @@
32
32
 
33
33
  ```Swift
34
34
 
35
- // enumsを呼び出すとビルドエラーになる
35
+ // a.enumsを呼び出すとビルドエラーになる
36
36
 
37
37
  UIView.Visibility.enums
38
+
39
+
40
+
41
+ // b.これは大丈夫みたいです
42
+
43
+ let visibility = UIView.Visibility.Visible
44
+
45
+ let str = visibility.stringValue()
46
+
47
+
48
+
49
+ // a, b の違いは staticかどうか?
38
50
 
39
51
  ```
40
52
 

1

コードを追加

2016/11/25 06:04

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -27,3 +27,89 @@
27
27
  プロジェクトはコレです。
28
28
 
29
29
  [https://github.com/MotokiMiyagi/UIViewVisibility/issues/2](https://github.com/MotokiMiyagi/UIViewVisibility/issues/2)
30
+
31
+
32
+
33
+ ```Swift
34
+
35
+ // enumsを呼び出すとビルドエラーになる
36
+
37
+ UIView.Visibility.enums
38
+
39
+ ```
40
+
41
+
42
+
43
+ ```Swift
44
+
45
+ public extension UIView {
46
+
47
+ enum Visibility: Equatable {
48
+
49
+ case Visible
50
+
51
+ case Invisible
52
+
53
+ case Gone(Direction, to:Stick)
54
+
55
+
56
+
57
+ public static var enums: [Visibility] {
58
+
59
+ get {
60
+
61
+ var enums: [Visibility] = [
62
+
63
+ .Visible,
64
+
65
+ .Invisible,
66
+
67
+ ]
68
+
69
+
70
+
71
+ for direction in Direction.enums {
72
+
73
+ for stick in Stick.enums {
74
+
75
+ enums.append(.Gone(direction, to: stick))
76
+
77
+ }
78
+
79
+ }
80
+
81
+
82
+
83
+ return enums
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ public func stringValue() -> String {
92
+
93
+ switch self {
94
+
95
+ case .Visible:
96
+
97
+ return "Visible"
98
+
99
+ case .Invisible:
100
+
101
+ return "Invisible"
102
+
103
+ case .Gone(let direction, let stick):
104
+
105
+ return "Gone(\(direction.stringValue()), \(stick.stringValue()))"
106
+
107
+ }
108
+
109
+ }
110
+
111
+ }
112
+
113
+ }
114
+
115
+ ```