45

私は新しいxcode 4.5を使用しています.View Controllerに次のコード行があります:

DiscoverCell* cell=[table dequeueReusableCellWithIdentifier:@"DiscoverCell"];
if(cell==nil){
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DiscoverCell" 
                                                 owner:self 
                                               options:nil];
    cell = [nib objectAtIndex:0];
} 

アプリを実行すると、例外「NSInternalInconsistencyException」がキャッチされずにアプリが終了します。理由:「NIB データが無効です。」LoadNib ラインで、それは何ですか? このxcodeはアップルのゴミですか?

4

8 に答える 8

71

これと同じ問題があり、ユーティリティの [ドキュメント検査] ペインで [自動レイアウトを使用] チェックボックスをオフにして修正しました。

于 2012-07-07T14:29:45.920 に答える
58

下の画像で強調表示されている [自動レイアウトを使用] のチェックを外します。Xcode 4.5 では、プロジェクトに追加する新しい nib ファイルに対して、デフォルトでこのプロパティが有効になります。自動レイアウトチェックボックスのチェックを外すと問題が解決しました

于 2012-10-11T08:14:54.467 に答える
8

私はちょうどこの問題を抱えていて、属性インスペクターでタイトルフィールドが属性に設定されているUIButtonまで追跡しました。これをプレーンに変更すると、問題が修正されました。私が正しく覚えていれば、Xcodeの最後のバージョンでこのボタンを追加しましたが、それでも問題が発生しました。

于 2012-07-03T05:29:31.760 に答える
6

私にとっては、Jason Coco によるコメントと tomgerhardt による回答の組み合わせでした。私のアプリは iOS5 をターゲットにしており、Xcode 4.5 にアップグレードし、新しい NIB を作成しました。デフォルトでは、これは iOS6 をターゲットにしており、クラッシュを引き起こしていました。NIB のファイル インスペクタ ウィンドウで、これを iOS5 に設定しました。

その後、Use Autolayout が iOS5 でサポートされていないことを示すコンパイラ エラーが発生し、ドキュメント インスペクタでそれをオンにすると、問題が修正されました。

于 2012-09-26T10:13:29.037 に答える
2

すべての.xibファイルの自動レイアウトを無効にした後も、エラーが発生しました。これは、.xibファイルのUILabelに[テキスト]->[属性]を使用したことが原因でした。

プレーンに設定した後、エラーはなくなりました。

于 2013-02-08T11:55:03.373 に答える
2

それで、これを理解しようとして約1時間後、私は問題を理解しました. それは実際に上で説明されていることです: .xib が、メイン アプリが作成されたものと同じターゲット バージョン (この場合、おそらく 6.0 未満) に設定されていることを確認し、このオプションの [自動レイアウトを使用する] のチェックを外します。特定の.xib。

シミュレーターで動作する理由は、シミュレーターが実際に iOS6 を実行しているためです。古い iOS のデバイスを使用しようとすると、このエラーが発生します。私の問題は、デフォルトでiOS 6を対象とし、「自動レイアウトを使用」がチェックされているカスタムTableViewCellを作成していたことです。これが私にとっての犯人でした。

願わくば、このエラーで私が経験した悲しみから誰かを救えることを願っています!

于 2012-10-04T02:11:37.593 に答える
0

"loadNibNamed:" の後の名前は nib ファイルの名前でなければなりません (画面左側のプロジェクト ナビゲーターで)、CellForRowAtIndexPath (静的 NSString ...) で最初から書き込む「セル識別子」をそこに書き込む人もいます。 .

この小さな欠点があなたの問題かもしれませんか?

于 2013-02-16T13:40:11.710 に答える