Web で回答を見つけようとして失敗しましたが、新しい質問があります。タスクは簡単です。コア データ ドキュメント ベースのアプリを作成したいのですが、いくつかのラベル オブジェクトの値を変更したいと考えています。インターフェイス ビルダーを使用すると、配列コントローラーやテーブルなどを使用してコア データ モデルを構築し、データを入力することができます。すべてコードを記述する必要はありません。ここまでは順調ですね。私のテスト例は、長さと幅の属性を持つボックス エンティティを使用してコア データ モデルを構築することです。領域を表示するラベル、つまり、幾何学的に困難な長さ*幅を表示したいと思います:)。
そのため、ブラウジングした後、NSWindowController サブクラスを作成し、それを使用して、テーブル内のボックスが選択されたときにラベルを更新する必要があると判断しました。これを試みましたが、失敗しました。ラベルをウィンドウ コントローラーに接続する前に、問題が発生しました。テンプレートのコメントに従って、これを Document.m に追加しました。
- (void)makeWindowControllers
{
NSLog(@"Adding custom Window Controller");
MyWindowController* myWindowController = [[MyWindowController alloc] init];
[self addWindowController:myWindowController];
}
また、これをテンプレート MyWindowController.m に追加しました。
- (id)init
{
self = [super initWithWindowNibName:@"MyWindowController"];
return self;
}
ウィンドウコントローラーには、テーブルやラベルなどを配置するインターフェイスビルダーからの独自のNIBファイルがあります。ファイルの所有者はMyWindowControllerに設定されています。多分他のことを忘れているでしょうが、それは私が今覚えていることです。
起動時にログ メッセージが表示されますが、ウィンドウが表示される前に、「このクラスはキー managedObjectContext のキー値コーディングに準拠していません」という例外が表示されます。ウィンドウ コントローラーがドキュメント クラスに適切に接続されていないと思いますか? 私のもう1つの考えは、配列コントローラーはドキュメントのペン先ではなく、ウィンドウコントローラーのペン先にあるということです。