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

質問編集履歴

4

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

2016/11/25 07:11

投稿

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

3

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

2016/11/25 07:11

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -23,6 +23,17 @@
23
23
  let str = visibility.stringValue()
24
24
 
25
25
  // a, b の違いは staticかどうか?
26
+
27
+ // エラーは起きない
28
+ UIView.Visibility.staticFunc1()
29
+ let enums = UIView.Visibility.staticFunc2()
30
+ // return enums.count
31
+
32
+ // エラー 返ってきた enumsのメソッドを使おうとすると駄目
33
+ UIView.Visibility.staticFunc1()
34
+ let enums = UIView.Visibility.staticFunc2()
35
+ return enums.count
36
+
26
37
  ```
27
38
 
28
39
  ```Swift
@@ -32,6 +43,24 @@
32
43
  case Invisible
33
44
  case Gone(Direction, to:Stick)
34
45
 
46
+ public static func staticFunc1() {
47
+ }
48
+
49
+ public static func staticFunc2() -> [Visibility] {
50
+ var enums: [Visibility] = [
51
+ .Visible,
52
+ .Invisible,
53
+ ]
54
+
55
+ for direction in Direction.enums {
56
+ for stick in Stick.enums {
57
+ enums.append(.Gone(direction, to: stick))
58
+ }
59
+ }
60
+
61
+ return enums
62
+ }
63
+
35
64
  public static var enums: [Visibility] {
36
65
  get {
37
66
  var enums: [Visibility] = [

2

呼び出せるfuncもある

2016/11/25 06:12

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -15,8 +15,14 @@
15
15
  [https://github.com/MotokiMiyagi/UIViewVisibility/issues/2](https://github.com/MotokiMiyagi/UIViewVisibility/issues/2)
16
16
 
17
17
  ```Swift
18
- // enumsを呼び出すとビルドエラーになる
18
+ // a.enumsを呼び出すとビルドエラーになる
19
19
  UIView.Visibility.enums
20
+
21
+ // b.これは大丈夫みたいです
22
+ let visibility = UIView.Visibility.Visible
23
+ let str = visibility.stringValue()
24
+
25
+ // a, b の違いは staticかどうか?
20
26
  ```
21
27
 
22
28
  ```Swift

1

コードを追加

2016/11/25 06:04

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -12,4 +12,47 @@
12
12
  ```
13
13
 
14
14
  プロジェクトはコレです。
15
- [https://github.com/MotokiMiyagi/UIViewVisibility/issues/2](https://github.com/MotokiMiyagi/UIViewVisibility/issues/2)
15
+ [https://github.com/MotokiMiyagi/UIViewVisibility/issues/2](https://github.com/MotokiMiyagi/UIViewVisibility/issues/2)
16
+
17
+ ```Swift
18
+ // enumsを呼び出すとビルドエラーになる
19
+ UIView.Visibility.enums
20
+ ```
21
+
22
+ ```Swift
23
+ public extension UIView {
24
+ enum Visibility: Equatable {
25
+ case Visible
26
+ case Invisible
27
+ case Gone(Direction, to:Stick)
28
+
29
+ public static var enums: [Visibility] {
30
+ get {
31
+ var enums: [Visibility] = [
32
+ .Visible,
33
+ .Invisible,
34
+ ]
35
+
36
+ for direction in Direction.enums {
37
+ for stick in Stick.enums {
38
+ enums.append(.Gone(direction, to: stick))
39
+ }
40
+ }
41
+
42
+ return enums
43
+ }
44
+ }
45
+
46
+ public func stringValue() -> String {
47
+ switch self {
48
+ case .Visible:
49
+ return "Visible"
50
+ case .Invisible:
51
+ return "Invisible"
52
+ case .Gone(let direction, let stick):
53
+ return "Gone(\(direction.stringValue()), \(stick.stringValue()))"
54
+ }
55
+ }
56
+ }
57
+ }
58
+ ```