0

NSPersistentDocuments を開いて、一度に 1 つずつ同じウィンドウにロードしたいと考えています。私はほとんどそこにいますが、いくつかのステップがありません。うまくいけば、誰かが私を助けることができます。

ハード ドライブにいくつかのドキュメントを保存しています。起動時に、私のアプリは無題の NSPersistentDocument を開き、別の NSWindowController を作成します。ボタンを押してハード ドライブからファイル 1 をロードすると、フィールドにデータが表示されますが、次の 2 つの点が間違っています。

1) データを変更してもドキュメントは汚れません
2) [保存] を選択すると、persistentstore が更新されます (ファイルを再度開くと変更が表示されるため、これはわかっています) が、次のエラーが表示されます: +entityForName: could not locate an NSManagedObjectModel forエンティティ名「本」

無題のドキュメントで最初に起動された WindowController にある私のコードは次のとおりです。このコードは完全ではありません。たとえば、新しいドキュメントを読み込む前に、processPendingChanges を実行して現在のドキュメントを保存する必要があることはわかっています。これは、このハードルを乗り越えるためのテスト コードです。

- (IBAction)newBookTwo:(id)sender {
 NSDocumentController *dc = [NSDocumentController sharedDocumentController];
 NSURL *url = [NSURL fileURLWithPath:[@"~/Desktop/File 2.binary" stringByExpandingTildeInPath]];

 NSError *error;
 MainWindowDocument *thisDoc = [dc openDocumentWithContentsOfURL:url display:NO error:&error];

 [self setDocument:thisDoc]; 
 [self setManagedObjectContext:[thisDoc managedObjectContext]];
}

ありがとう!

4

2 に答える 2

0

「Book」または「book」という名前のエンティティがあると仮定すると、2 番目の問題はタイプミス スワッピングのケースである可能性が高くなります。最初の問題を引き起こしている可能性のあるエンティティ グラフにもよります。

于 2010-04-30T17:49:24.993 に答える
0

そこにブレークポイントを入れて、モデルが nil かどうかを確認してください。

于 2010-05-01T00:53:39.987 に答える