【问题标题】:How do I load PersistentDocuments into the same window如何将持久文档加载到同一窗口中
【发布时间】:2010-04-30 16:53:02
【问题描述】:

我想打开 NSPersistentDocuments 并将它们一次加载到同一个窗口中。我快到了,但缺少一些步骤。希望有人可以帮助我。

我在硬盘上保存了一些文档。在启动时,我的应用程序会打开一个未命名的 NSPersistentDocument 并创建一个单独的 NSWindowController。当我按下按钮从硬盘驱动器加载文件 1 时,数据出现在字段中,但我可以看到有两件事是错误的:

1) 更改数据不会使文档变脏
2)选择保存更新持久存储(我知道这一点,因为当我再次打开文件时,我看到了更改)但我收到错误:+entityForName: could not locate an NSManagedObjectModel for entity name 'Book'

这是我的代码,它位于最初使用无标题文档启动的 WindowController 中。这段代码并不完美。例如,我知道我应该在加载新文档之前处理 PendingChanges 并保存当前文档。这是试图克服这个障碍的测试代码。

- (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]];
}

谢谢!

【问题讨论】:

    标签: cocoa core-data nsdocument


    【解决方案1】:

    假设您有一个名为“Book”或“book”的实体,那么第二个问题很可能是拼写错误。取决于可能触发您的第一个问题的实体图。

    【讨论】:

    • 文档保存后出现错误。我知道这一点,因为当我重新启动它时,变化就在那里。
    • 实际上,它可能会在文档保存时出现。 Core Data 偏向于保存数据。即使遇到错误,它也会保存一切。无论如何,第二个错误肯定是在实体图或调用实体图的某些代码中。
    【解决方案2】:

    在里面放一个断点,看看你的模型是否为零。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多