###ビルドエラーで困っています
UIViewのextension内でネストされたenum(Visibility等)を宣言し
そのenumのfuncを宣言し、宣言したfuncを呼び出そうとしたら、下記のエラーでビルドできずに困っています
extensionがモジュールだとこの問題が起きるのかもしれないです。
extensionの宣言自体をPodではなく
例えばViewControllerのファイルに書くと、動きます。
Undefined symbols for architecture i386: "type metadata for (extension in UIViewVisibility):__ObjC.UIView.Visibility", referenced from: UIViewVisibility_Example.ViewController.pickerView (__ObjC.UIPickerView, numberOfRowsInComponent : Swift.Int) -> Swift.Int in ViewController.o UIViewVisibility_Example.ViewController.pickerView (__ObjC.UIPickerView, titleForRow : Swift.Int, forComponent : Swift.Int) -> Swift.String? in ViewController.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
プロジェクトはコレです。
https://github.com/MotokiMiyagi/UIViewVisibility/issues/2
Swift
1// a.enumsを呼び出すとビルドエラーになる 2UIView.Visibility.enums 3 4// b.これは大丈夫みたいです 5let visibility = UIView.Visibility.Visible 6let str = visibility.stringValue() 7 8// a, b の違いは staticかどうか? 9 10// エラーは起きない 11UIView.Visibility.staticFunc1() 12let enums = UIView.Visibility.staticFunc2() 13// return enums.count 14 15// エラー 返ってきた enumsのメソッドを使おうとすると駄目 16UIView.Visibility.staticFunc1() 17let enums = UIView.Visibility.staticFunc2() 18return enums.count 19
Swift
1public extension UIView { 2 enum Visibility: Equatable { 3 case Visible 4 case Invisible 5 case Gone(Direction, to:Stick) 6 7 public static func staticFunc1() { 8 } 9 10 public static func staticFunc2() -> [Visibility] { 11 var enums: [Visibility] = [ 12 .Visible, 13 .Invisible, 14 ] 15 16 for direction in Direction.enums { 17 for stick in Stick.enums { 18 enums.append(.Gone(direction, to: stick)) 19 } 20 } 21 22 return enums 23 } 24 25 public static var enums: [Visibility] { 26 get { 27 var enums: [Visibility] = [ 28 .Visible, 29 .Invisible, 30 ] 31 32 for direction in Direction.enums { 33 for stick in Stick.enums { 34 enums.append(.Gone(direction, to: stick)) 35 } 36 } 37 38 return enums 39 } 40 } 41 42 public func stringValue() -> String { 43 switch self { 44 case .Visible: 45 return "Visible" 46 case .Invisible: 47 return "Invisible" 48 case .Gone(let direction, let stick): 49 return "Gone(\(direction.stringValue()), \(stick.stringValue()))" 50 } 51 } 52 } 53}
あなたの回答
tips
プレビュー