web-dev-qa-db-ja.com

「ViewControllerという名前のクラスの情報が見つかりませんでした」

Xcode(4.6.3)の使用を開始して以来、このバグは私を夢中にさせてきました。 Storyboardアイテムをコードにリンクしようとすると、常にエラーが発生します。

ViewControllerという名前のクラスの情報が見つかりませんでした。

これは、カスタムクラスでも発生します。私は次のような方法を試しました:

  • デリゲートデータを削除します。
  • クラスの削除と再追加。
  • Xcodeを再起動します。
  • Xcodeを再インストールします。

クラスが何であるかに関係なく、Ctrlキーを押しながらドラッグしてプロジェクトの接続を作成することはできません。新しいテンプレートアプリケーションでも同じ問題が発生します。コードを手動で入力し、Ctrlキーを押しながらドラッグすると、正常に接続できますが、自動的に追加できません。私がこれまでインターネットで見つけることができたものは何も役に立ちませんでした。ポインタはありますか?

140
user2597451

私にとってこの問題を解決したのは、実際にプロジェクトからクラスを削除することでした。

手順:

  1. プロジェクトファイルエクスプローラー(左パネル)でクラスを見つけ、右クリック->削除
  2. 参照の削除(クラスを永久に失うため、ゴミ箱に移動しないでください)
  3. クラスを含むフォルダーを右クリック->ファイルを追加...
  4. ファイルシステムで削除したばかりのクラスを見つけます

これにより、Xcodeがクラスをストーリーボードにリンクするように強制されるようです。

注:私にとって、以下はnotでした:

  • Xcodeを閉じる
  • プロジェクトのクリーニング
  • ストーリーボードからクラス名を削除して再入力する

これはApple側のバグだと思う

267
Chris Harrison

まだ誰もがこれにイライラしている場合、物事を機能させるコツがあります。

私がやっていることは、クラスにアウトレットを手動で入力することです。例:@IBOutlet weak var someView: UIView!、そしてコードからをIBまたはストーリーボードのビューにドラッグします。この後、IB/Storyboardからクラスにドラッグして接続し、アシスタントエディターが「自動」などでクラスを認識します。

毎回動作します。

124
Andrew Robinson

私にとっては、右の列のターゲットメンバーシップからそれらを削除し、再び追加するのはトリックでした enter image description here

33
Ruud Visser

Xcodeは、VCがクラスファイルを参照しないために発生する場合があります。これに対する簡単な解決策は次のとおりです。

指定されたとおりに手動でプロパティを書き込みます。

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

これにより、空のリンク記号が作成されます@ IBOutletの前、アシスタントエディターでプロジェクトを開き、リンク記号をクリックします enter image description here そして、接続したいビューにドラッグします(TableViewで接続しました)。以上です。ハッピーコーディングをお楽しみください!!!

9
MRizwan33

次の手順がうまくいくことを願っています

1- Xcodeを閉じた後、プロジェクトを再度開く必要があります。

2-プロジェクトファイルのインデックス作成を待つ

3-動作するかどうかを確認する

4-それでも動作しない場合は、ステップ5に従ってください。

5-プロジェクトターゲットのクリーンアップとビルド

enter image description here

6
Amr Angry

2017年4月にXcode 8でこの問題が発生しました

コードを使用してアウトレットを作成し、コンパイルして修正しました。例えば:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

Xcodeが大好きになりました…

編集:Xcode 9でまだ起こっています

6
Jesus Rodriguez

私はすべてを試してみましたが、うまくいきませんでした。

  • Buildフォルダとプロジェクトをクリーンアップします。
  • プロジェクトを開く(ウィンドウ->プロジェクト)
  • リストでプロジェクトを見つけて、派生データを削除します
  • Xcodeを閉じる
  • コンピューターを再起動します(開いているウィンドウを再度開くことを選択せず​​に)
  • xcodeを実行する
  • 作業!

私のView Controllerはすべて認識されていなかったため、すべてのファイルを削除して追加し直すことは大きなプロジェクトなのでオプションではありませんでした。

5
gmogames

私にとっては、以下がうまくいきました:

  1. 「クリーン」と「クリーンビルドフォルダー」を実行します(「クリーン」ビルドフォルダーコマンドを取得するには、[製品]メニューの[オプション]を押します)

  2. Xcodeを停止

  3. ターミナルで、派生データフォルダーに移動します。

    (/ Users // Library/Developer/Xcode/DerivedData)

プロジェクトの派生データディレクトリを削除します。

  1. 空気中の波の死んだ鶏

  2. Xcodeを開始

4
Joe149

私のために働いたのは、ボタンからコードに接続をドラッグする代わりに:

  1. 目的のストーリーボードアイテムをクリックします。
  2. 接続インスペクターを開く(右パネル)
  3. +円からコードの領域にドラッグします。そのようです: 

この方法でコードをリンクすると、それ以降は正常に機能しました。

3
Hayden Crabb

これまでのところ、いくつかの回答を組み合わせて行う必要がありました。

  1. ストーリーボードからカスタムクラス名を削除します。

(ストーリーボードのView Controllerの左上にある黄色のボタンをクリックします-> IDインスペクターに移動します(オプション+コマンド+ 3)->上部のカスタムクラス名を削除します)

  1. View Controllerファイルへの参照を削除します。

(ファイルを右クリック->削除->参照の削除)

  1. View Controllerファイルをプロジェクトに追加し直します。

(ファイルがあったフォルダを右クリック->「[プロジェクト]にファイルを追加」)

  1. カスタムクラス名をストーリーボードに追加し直します。
3
yndolok

人々が上記を試みても物事がまだ機能しない場合、私のために働いた奇妙なトリックは空白の塊にアウトレットを追加することでした。追加する行のすぐ上または下に他の行がない場合に機能します。奇妙なことですが、うまくいきました!

3
Elliot Goldman

製品>クリーン(コマンド-Shift-K)で修正されました!

2
Jangles

これは私のために働いた:

  1. ビルドフォルダーのクリーンアップ」を実行します
    (「option」キーを押したまま、「Product」メニューにアクセスしてアクセスします。
  2. Product」メニューから簡単な「Clean」(CMD-SHIFT-K)を実行します。
  3. ビルド Xcodeにファイルをコンパイルさせるプロジェクト。また、必要に応じてファイルのインデックスを作成します。

補足として、これが助けたかどうかはわかりませんが、上記の手順を実行する前に派生データも削除しました(Xcode設定>ロケーション)

2
programmer

これは、この問題を修正するために行った最も簡単な手順です。

  1. 私はプロジェクトをきれいにします
  2. View Controllerで新しいボタンをドラッグします。
  3. プロジェクトをビルドします。
  4. 新しくドラッグしたボタンをクラス(アウトレットまたはアクション)に接続します。
  5. 出来上がり!!!他のコンセントをクラスに再び接続できるようになりました!
2
user2480567

ターゲットにとどまる!

私はXibで新しいクラスを追加していましたが、この問題に気づき始めました。ここで答えを見て、どれがそれを変えたのかをよく見ました。

たまたま、ワークスペースに複数のターゲットがあり、頻繁にターゲットを切り替える必要があります。

新しいファイルを追加すると、Xcodeでインデックスの再作成が開始されます。しかし、間違ったターゲットを指している場合、インデックス付けは無意味である可能性が高く、接続するドラッグ中にXcodeはクラスを見つけることができません。

要するに

ステップ1。

Target Seledction

インデックス付けが意味をなすように、正しいターゲットセットがあることを確認してください。

2
Damo

これらの答えをすべて試しましたが、問題はXcodeがファイルのインデックスを作成できないことに関連していました。 Xcodeを終了してプロジェクトを再度開くことでこれを修正しました。もちろん、上記のすべての解決策を試した後、それを行いました:p

2
JohnVanDijk

プロジェクトをクリーンアップして再ビルドするだけです。

1

私のテスト経験として、Xcodeで関連付けられたクラスを削除し、ファイルを再度追加する場合、この問題が発生します。

1
inix

通常、これが発生したとき、クラスのコードをまだ保存していません。コードに飛び乗ってcmd + sを押すだけで、問題が正しい方法で修正されることがよくあります。

1
Delimiter

上記の手順はどれもうまくいきませんでしたが、問題を発見した可能性があります。少なくともそれは私のために働いたものであり、Xcodeのバグではありません。

アシスタントエディターで、viewControllerのコードがあるウィンドウの上部を確認します。右から3番目のオプションは「手動」と表示されますが、「自動」と表示されるはずです。これを変更すると、問題は解決しました!

1
John Nolan

全部試しました!

UIViewControllerのクラス名に「Test」という単語が含まれていないことを確認してください

バグレポートを提出しました。

1
Aaron Kreipe

「…という名前のクラスが見つかりませんでした」という同様の問題が発生していましたが、原因を突き止めるとその原因は愚かでした。項目からinterfaceにドラッグしていないことを確認してください-クラス自体にドラッグされていることを確認してください

1
Will Buffington

StoryBoardでViewControllerを選択し、右側のパネル/"Customer class"/"class"の現在の値を削除してから、コントロールクラスを再度追加し(タイプ: "SampleViewController" ...)、入力します。 ->それは私のために働く

1
tungnv

私にとって、カスタムクラスを指定したビューは、インターフェイスビルダーでコンパイルできませんでした。 @IBDesignableとマークされました。

@IBDesignableを削除してからアウトレットを追加し、@IBDesignableとしてマークすると、私の場合の問題は解決しました。

0
Nick DiZazzo

私の場合、Xcodeのインデックス作成プロセスの実行が停止したためです。 Macを再起動すると修正されました。

0
David Wood

問題の.mおよび.hファイルを作り直し、「ViewController」のような一般的な名前ではなく、元の名前を付けようとします。あなたがそのファイルにさせたいことの線に沿って何かを試してみて、View Controllerで終わる(すなわち、「PizzaDecoraterViewController」)

次に、それらのファイルに接続するViewControllerを選択します。必ず内部のオブジェクトではなく、ViewControllerを選択してください。一番下の黒いバー(「最初の応答者」アイコンと「終了」アイコンがあるもの)をクリックします。 ViewController全体の輪郭が青になります。次に、IDインスペクタの[カスタムクラス]セクションに移動すると、最初のフィールドにグレー表示された[UIViewController]が表示されます。そのフィールドに、接続する.hファイルまたは.mファイルの名前を入力します(PizzaDecoratorの入力を開始します。自動補完が少し実行されます)。次にEnterキーを押します。

アシスタントエディタを開くとき、ドラッグアンドドロップしようとしているファイルが実際に正しいファイルであることを確認してください。

上記のようにすべてを行った場合、それは動作するはずです。

0
CaptJak

私の場合、うまくいったのは(少し奇妙ですが、うまくいきました)次のとおりです。

データソース(たとえば、UITableViewDataSourceのようなViewControllerの拡張機能)を追加してみてください。 XcodeはViewControllerのリロードを試みます。次に、プロトコルのメソッドを作成し(最初はXcodeがメソッドをオートコンプリートしませんでしたが、手動で作成しました)、IBOutletsを追加し、最後にデータソースを削除しました。

例:

class TestViewController:UIViewController{
    // This viewController presents “Could not find any information for  class named ViewController”
}

extension TestViewController:UITableViewDataSource{
    //Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
}
0

大丈夫な人はほとんどすべてのトップの答えを見たが、誰も私のために働いた。

だから私のために働いたのは次のとおりです:

  1. XcodeプロジェクトからDerived Dataアドレスをコピーします。これは、次を使用して実行できます。

Xcode -> Preferences -> Location Tab -> Derived Data

  1. Close Xcode

  2. 次に、派生データの場所に移動して、そこからプロジェクトのフォルダーを削除します。

さあ、Xcodeを開いて出来上がり!

0
arqam

プロジェクトの派生データを削除してみてください

0
david.gol

プロジェクトフォルダーに移動し、派生データフォルダーを削除します

派生データが見つからない場合は、Finderに移動して

 ~/Library/Developer/XCode/DerivedData/"project"

(「プロジェクト」名をプロジェクト名に置き換えてください)

0
Sandu

@ChrisHarrisonの答えについてコメントしたように、これらのことはうまくいきませんでしたが、派生データを削除するには https://stackoverflow.com/a/16182672/1449799

0
Michael

私の場合、私は同じクラス名を持っていて、Xcodeは私がターゲットにしているものを認識できなかったので、クラスの名前を選択する際には注意してください。

0
andesta.erfan

閉じているかどうかをFinder Xcodeから確認します。

Xcodeを強制終了して再起動します。

製品>クリーン

0
erdikanik

ファイル(参照のみ)を削除し、ファイルを再度追加します。

0
jomafer

私はこれがほとんどの場合Xcodeが機能していることを知っていますが、私の場合は提案されたアクションのどれも問題を解決できず、プロジェクトの名前を変更しようとしたときに犯した間違いだと思うので、新しいプロジェクトを作成しましたすべてをインポートします。

これは最終的に修正されました。

0
CristianMoisei

Xcodeを再起動するだけで動作します。

これを試してください

rm -rf ~/Library/Caches/com.Apple.dt.Xcode
defaults delete com.Apple.dt.Xcode IDEIndexDisable
defaults write com.Apple.dt.Xcode IDEIndexEnable 1 
0
yousuke