私はXcode 6 Beta 4にアップグレードしました、そして今私のアプリは継続的にメッセージでクラッシュします
Interface Builderファイルに不明なクラスXがあります。
XcodeがStoryboardでリンクしたカスタムクラスを見つけることができなかったためにクラッシュしましたが、Xcodeインターフェイスでそれらが正しくリンクされていることがわかりました。
私はすべてが正しくリンクされていることを確信しています。私の他の唯一の選択肢は、ストーリーボードファイル全体を削除し、それが何らかの理由で破損している可能性があるため、最初から始めることです。
編集:私はまた、私が掃除し、シミュレータをリセットし、ビルド段階をいじってみたことを追加したいと思います。
私が質問をタイプしていたので、私はこの問題を解決しました。私は自分の質問に答え、Xcode 6 Beta 4を使用しているときにこの問題に直面する可能性のある他の人のためにここに残しておくと考えました。
この問題を解決するには、ストーリーボードで各カスタムクラスオブジェクトを選択する必要があります(これにはカスタムビューが含まれます。カスタムView Controller自体も含まれます)。
次に、それらのオブジェクトを選択した状態で、アイデンティティインスペクタを開くと、「カスタムクラス」の下に「モジュール」オプションが表示されます。 Moduleテキストボックス内をクリックして、Enterキーを押します。
それでおしまい!私のすべてのカスタムオブジェクトの現在のモジュールは、Xcode 6 Beta 4では何らかの形で内部的に正しく設定されていなかったにちがいありません。
[モジュール]テキストボックス内でEnterキーを押しても機能しない場合は、右側の矢印を選択して現在のモジュールを手動で選択し、テキストボックスをクリアしてEnterキーを押します。クラステキストボックス内でEnterキーを押すこともできます(これは通常別の問題を解決するためです)。
これは、物事をより明確にするためのイメージです。
時々Xcodeは逃しましたcustomModule="AppName" customModuleProvider="target"
修正するには、ストーリーボードをソースコードとして開き、次の行を置き換えます。
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">
これに:
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">
私はSwiftクラスの名前を変更した後にこの問題を抱えていました。 @objcディレクティブを使用して解決しました:
@objc(ForumTopicListViewController) class ForumTopicListViewController
これは私のために働きました..
そのファイル(例えばViewController.m)が追加されているかどうか、コンパイルされたソースを確認してください。
これは6.0以上のXcodeで起こります。 SwiftプロジェクトでいくつかのViewControllerクラスの名前を変更した後に私に起こりました(しかし、それはObj-Cでも起こるでしょう)。インターフェイスビルダーを開き、クラスの名前が変更されたViewControllerのIdentity Inspectorに移動し、クラスを選択してEnterを押すだけです。これにより、名前を変更したクラスを選択したViewControllerに再割り当てし、クラス名を変更すると失われるモジュール値もリセットされます。
Xcode 8.1用にアップデートします(おそらく8.0もそうです):
Xcode 8.1がクラッシュしました。単純にそして厄介なことにクラッシュするだけで、何も印刷されません。私はそれがまさに同じことであることを知るために1時間そのファントムクラッシュを追いかけていました - IBの未割り当てクラス。いくつかのファントムクラッシュが発生した場合は、最初に割り当てられていないクラスのIBを確認してください。
時々あなたが提供しているコントローラーは現在のアプリケーションからそのターゲットメンバーシップを失います。その場合、 "Module"フィールドでenterを押しても何もしません。コントローラに移動して、ターゲットメンバーシップが現在のアプリに設定されていることを確認します。
私はChikabuZが提案したことと正反対のことをすることでそれを修正しました(それを指摘してくれてありがとう)。ストーリーボードファイルで、これを見つけます。
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">
そしてこれでこれを置き換えます。
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass" sceneMemberID="viewController">
SwiftコンパイラとXcode 6のバグを回避するのに何時間も費やしているとは思えない
Xcode 8 でこの問題に直面しました。それを解決するには、テキストエディタでストーリーボードを修正する必要がありました。
一般に、あなたのコントロールを調べ、コントロールエンティティからcustomModule
とcustomModuleProvider
を削除します。
私のためにトリックをしました。
あなたのクラスが正しい ターゲットメンバーシップ を持っているか確認してください。
プロジェクトからMain.storyboard
、LaunchScreen.xib
ファイル、およびデフォルトのViewController
クラスを削除したときに、Xcode 6.1でこの問題に直面しました。
Launch Screen File
からMain Interface
とInfo.plist
のエントリを削除して修正しました
私はこれのためにいたるところでグーグルしました。私のプロジェクトフォルダをデスクトップに移動するように依頼された1人の男に会うまで、答えはどれも私のために働きません。それは自動的に動作しました。どうやらあなたがたくさんのフォルダの中に深くフォルダを投影してもらうならば、XCODEは実際に壊れます。
これを解決するために、ストーリーボードファイルをソースコードとして開き、command-Fを使って未知のクラスを検索し、それに関連するカスタムクラスを削除しました。
これらのステップは私のために働きます。
1)派生データを消去します。
2).hファイルと.mファイルを削除します
3).hファイルと.mファイルをもう一度作成する
私の解決策(Xcode 8.1 Swift 3.0):
Interface Builderファイルで不明なクラス xxx 。
ソースコードとしてStoryBoardを開き、 xxx を検索します。値 xxx を含む属性を削除してください。ビルドして実行します。
私はこの問題を解決するために、すべてのViewコントローラとビューのIDインスペクタのカスタムクラスにモジュール名(ドロップリストには何も表示されません)を入力しました。
あなたはまたターゲットプロバイダーを示す必要があるかもしれません。この目的を達成するには、ストーリーボードをソースコードモードで開き、ViewControllerとViewの山括弧の両方に "customModuleProvider"属性を追加します。
@ gfrsが言ったことは正しいです、あなたはモジュールを設定する必要があります。しかし、私はかつて私のクラスがClass
ドロップダウンにリストされていないという問題に遭遇しました。最終的に私はSwiftファイルを削除し、Xcodeを再起動してファイルを再作成しました。最後にクラスがリストされ、ストーリーボードで使用することができました。
また、 この答え を見てください。これは、私が遭遇した「本当の」問題を解決するようです。
私の場合、Storyboard/xibで参照されている class には Target Membership setがありませんでした。
修正するには、そのクラスの.h
および.m
ファイルに他のクラスと同じターゲットメンバーシップを与えます。
ストーリーボードをSwiftプロジェクトからObjective-cプロジェクトに移植したとき、私は問題に直面しました。 vvkuznetsov's answer に気付きましたが、2つのプロジェクトは同じ識別子を使用していました。 I "Product - > Clean"をクリックして、Module and ClassテキストフィールドのEnterキーをタップします。問題は解決しました。
私はLauraが提案したことに沿ってこれを直しました、しかし私はファイルを作り直す必要はありませんでした。
XCode 4を使用して、プロジェクトナビゲータで、文句を言っているクラスを含む.mファイルを選択します。
[表示] - > [ユーティリティ] - > [ファイルインスペクタを表示]をクリックします(これにより、ファイルインスペクタが右側に表示され、その.mファイル情報が表示されます)。
Target Membershipセクションを開き、この.mファイルにターゲットが選択されていることを確認してください。
私のプロジェクトに.mファイルを追加したとき、なんらかの理由でデフォルトのターゲットに追加されなかったため、あなたが言及したエラーが発生しました。
私の解決策は、カスタムクラス定義から@objcを削除することでした。
私の問題はユーザーエラーでした。私は自分のストーリーボードとアイデンティティインスペクタのカスタムクラスセクションに汎用のUIViewを持っていましたが、誤ってUIViewからgibberishに名前を変更していました。
修正に要したのは、それをUIViewに戻すことだけでした。
解決策は私にとっては違いました。ターゲットのビルドフェーズでコンパイルされたソースにクラスの.mを追加する必要があります。
お役に立てれば!
新しいターゲットを追加し、[新規ファイル]ダイアログを使用して新しいクラスを作成した後にこの問題が発生しましたが、作成ダイアログで新しいターゲットと元のターゲットを誤って確認できなかったため、オブジェクトは自分に追加されただけです。元のターゲット解決策は、ソースファイルを削除し(参照を削除するだけ)、 'Add Files'を使用してそれらを追加し直し、今回は両方のターゲットをチェックすることでした。
私にしか効かなかったのは、実際にはxibファイルにモジュール名を追加することです...
そう、xibファイルは次のようになります。
mymodule.MyViewController.xib (Module being the name of the proyect, usually)
私の考えでは難しい解決策だが、それがAppleが私たちに今それをやらせることを望んでいる方法だろう。
この質問はベータ4に戻る3つの可能な回避策を示しています ...どうやらAppleは意図したとおりに動作すると言っているのでこの状況ではあまり役に立ちませんでした。
Xcode Version 6.1(6A1052d)でも同じ問題がありました。 App/Xcodeプロジェクトの名前を変更した場合、問題が発生すると思います。
私の解決策は手動でインターフェースビルダーにモジュール名を追加することでした。
未知のクラスファイルを選択し、ファイルインスペクタタブを開き、Target Membership
でターゲット名を確認してください。そこに行きます。
スイフト3 ソリューション。
これらはすべてうまくいきませんでした。
Module
をクリックしても機能しませんでした。これはついにうまくいった。
新しいディレクトリを作成して新しいプロジェクトを作成する その中に/。 Main.sotryboard以外のファイルを追加します。
前のプロジェクトからView Controllerをコピーして、新しいMain.storyboardに貼り付けます。
ほら!これはうまくいきます。
私の問題はpodfileフレームワーク(特に 'BWWalkthrough')に関連していました。上記の解決策のどれも私のためにうまくいきませんでした、そして私がどのように試みたとしても私はモジュールが私のアプリを指すことができませんでした。
私にとってうまくいったのは、そのライブラリをpodfileとして削除し、それを静的ライブラリとして私のプロジェクトに直接追加することでした。それ以降、私にとっては何もかもがっしりしたものでした。クラスのポッド実装で何が「壊れた」のか完全にはわからない。
私はPyObjC
ユーザーで、私はNSView
サブクラスをそれ自身のファイルに持っていました。私にとってこの問題を解決したのは、NSView
サブクラスをそれ自身のファイルから私のAppController.py
ファイルに移動することでした。これは、アプリケーションコントローラを含むファイルです。
私は同じ問題を抱えていましたが、同じ問題は解決していません。
プロジェクトフォルダが壊れていたので、自分のプロジェクトフォルダを別のフォルダ、たとえばデスクトップにコピーし、その後プロジェクトを開いてください。
それが開いたときあなたのインターフェースビルダープロジェクトに行き、あなたは彼があなたのスクリプトを認識するのを見るでしょう、そしてあなたが実際にあなたのスクリプトの名前をクリックしそしてエンターを押すと、u.
そしてそれは魅力のように働くでしょう! :D
私にとっては、Xcode 7 + Swift 2を使用しています
私のコードをチェックすることによってこの問題を解決しました、私は私のviewControllerにこの行を持っています:
self?.navigationController?.pushViewController(vc, animated: true)
それから、navigationControllerが詳細ページに接続されていないことに気付きました。そのため、カスタマイズされたIDを使用して新しいViewControllerをプッシュする場合は、それを確認してください。
プロジェクトディレクトリにすでに存在しているのと同じ名前のプロジェクトを作成したときに問題が発生しました(ただし、しばらく前に削除されました)。私はそこに私の解決策を書いた https://stackoverflow.com/a/27763697/1654692
何も 他にはなかったときにこれは私のために働いた。ターミナルのプロジェクトディレクトリから:
[~/Developer/MyProject] grep -rn ViewController * | grep -i xib
一致したファイルをXcodeのソースコードとして開き、ViewControllerのインスタンスを実際に必要なものに変更します。私の場合、ソースとして開く必要があるファイルはMain.storyboardで、ViewControllerのインスタンスをDetailViewControllerに変更しました。
私はXcodeとmain.storyboardから2つのファイルを削除しました。
私のクラスは@objc
でマークされていてストーリーボードではモジュールが見つからなかったために起こりました。 @objc
を削除すると問題が解決しました
「myapp」にファイルを追加しても、Xcode 6.3で同じ問題が発生しました。これは、「グループの作成」ではなく「フォルダ参照の作成」を選択したためです。これらのファイルを削除し、「グループの作成」オプションを使用して再度追加します。問題は解決しました。
XCode 10
が「デバッグを改良する」のをやめたとき、これは本当に悪かったです。
私の場合は、Storyboardを使ってUITableViewDelegateとUITableViewDataSourceを設定し、それらの必須メソッドを実装するのを忘れていました。
これらのメソッドを実装する前に、まずビューをテストしてからクラッシュさせたかっただけです。 XCode 9
はこれらのメソッドについて警告しますが、XCode 10
は本当に私のコードを遅くしてしまいました。
これが誰かに役立つことを願っています。
ありがとう
私の場合は、アプリをユニバーサルアプリとして設定しているので、xcodeは2つのストーリーボードを作成します。と問題を解決するためにiPad.appでアプリを実行しようとするだけでiPhoneのためだけにアプリを作る必要があり、素晴らしい作品。
私にとっては、ストーリーボードのカスタムクラス(.hファイルに対応)を参照していましたが、.mファイルに@implementationコマンドがありませんでした。
私のプロジェクトは "ä、ü、ö"で呼ばれたので私にはそれが起こった
プロジェクト名にスペースを使用しないでください。そうしないと、カスタムクラスは自分のクラスを見つけることができません。
私は春のクラスで遊んでいました。そして、このエラーは私に起こりました。グループを作成する代わりに、フォルダクラス全体をプロジェクトに移動するときに、フォルダを参照として使用したためです。だからこれは私の解決策だった、参照としてフォルダを使用しないで、グループを作成してください。
私は私の新しいビューベースのプロジェクトからすでに含まれているViewController.hとViewController.mファイルを削除し、ストーリーボードからこのクラスに関連するシーンを削除すると、Xcode 6でこのような問題に直面しました。したがって、[ウィンドウ] - > [プロジェクト] - > [あなたのプロジェクト]に移動して派生データを削除しようとすると、すべてうまくいきます。
私の場合、問題はメインストーリーボードを起動画面に設定したことが原因でした。ストーリーボードで参照されているすべてのカスタムView Controllerについて、アプリケーション起動時にコンソールエラー(クラッシュなし)が発生します。
私たちはXIBからカバーして絵をストーリーボードに送り出しました、そして私はまだ起動画面が再び動くようになることに戸惑っていませんでした。私がようやくカスタムView Controllerのない(許可されていない)ベアボーン起動ストーリーボードを作成するようになったとき、これらのコンソールエラーは現れなくなりました。
Mijの場合、ViewController.h/mはlibの中にあります。プロジェクトはまだビルドされていますが、Xcode 6.3以降、上記のエラーが実行時に表示されました。両方のファイルをプロジェクトに戻すことで問題は解決しました。