2017-01-26 5 views
1

私はいくつかのプライベートCocoaPods(v.1.1.1)を使用しているSwift 2.3で作成された大規模なiOSプロジェクトに取り組んでいます。ポッドの1つ(Objective-Cで作成)にはEnums.hというファイルがあります。私のアプリ(スウィフト2.3)でSwift 3へのアップグレード時に宣言されていないタイプの使用

typedef NS_ENUM(NSInteger, MyEnum){ 
    MyEnumOne, 
    MyEnumTwo 
}; 

私は、このいずれかのように列挙型のために実装され、いくつかの拡張機能を持っています。このファイルには、例えば、このコードが含まれています。例:

extension MyEnum{ 
    func name()->String{ 
     return "some name" 
    } 
} 

これは明らかにケースの実際の例のほんの一部ですが、あなたはそのアイデアを得ています。

私は今、プロジェクトをSwift 3.0にバンプしようとしており、Xcode独自の変換を使用しています。私のコードは今やエラーで詰まっていますが、それは期待されていました。しかし、私はこのエラーを修正する方法がわかりません:

Xcodeは拡張ファイルの最初の行に赤いエラーがあり、Use of undeclared type 'MyEnum'と表示されるようになりました。私がCMD +でMyEnumという名前をクリックすると、私のcocoapodの列挙型に正確に宣言されています。なぜXcodeから宣言されていないのですか?これはSwift 2.3で完璧に動作しています。

Swiftバージョンを更新してポッドを更新しようとしたとき、podfileがuse_frameworks!と言っていないとCocoapodsが苦情を言ったので、これを追加しました。

編集: も、私の拡張子ファイル(今「宣言されていないタイプの使用が」言う)でname() -functionの内側に、私はself.を入力し始めるとselfがのインスタンスであることを示すオートコンプリート・ウィンドウを得ることができますMyEnum、それは私に使用できる正しい値、例えばrawValueを示しています。 Xcodeは明らかにEnumについて知っていますが、まだそれはUse of undeclared type 'MyEnum'と言います。

+0

どのバージョンのCocoaPodを使用していますか? – redent84

+0

@ redent84 1.1.1 – Sti

+0

Swiftファイルにenumを含むモジュールをインポートしていますか? – redent84

答えて

2

CocoaPods 1.0+を使用すると、フレームワークは動的フレームワークとしてコンパイルされ、使用するためにインポートする必要があります。

Swiftファイルにimportステートメントを追加してみてください。例えば、CocoaPodがMyModule命名されている場合:スウィフトで

:あなたの拡張子のファイルの先頭に

import MyModule 

またはObjective-Cの中

@import MyModule; 

+0

あなたのご意見も私に助けてください –

関連する問題