Iphone UIMangedDocument上下文为零

Iphone UIMangedDocument上下文为零,iphone,ios,objective-c,Iphone,Ios,Objective C,我正在努力学习如何使用核心数据和UIManagedDocuments。首先,我创建/打开文档: NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; url = [url URLByAppendingPathComponent:@"ProjectSSBDB"]; document = [[UIM

我正在努力学习如何使用核心数据和UIManagedDocuments。首先,我创建/打开文档:

NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    url = [url URLByAppendingPathComponent:@"ProjectSSBDB"];

document = [[UIManagedDocument alloc] initWithFileURL:url];

if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]]) 
{
     [document openWithCompletionHandler: ^(BOOL success) 
     {
         if (success) [ProjectSSViewController documentIsReady];
         if (!success) NSLog(@"Couldn't open document at %@", url);
      }];
 } 
 else 
 {
    [document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) 
            {
               NSLog(@"Returned %d", success);
               if (success) [ProjectSSViewController documentIsReady];
               if (!success) NSLog(@"Couldn't create document at %@", url);
             }];
 }    
然后,一旦成功创建并打开文档,我将执行以下操作:

 if (document.documentState == UIDocumentStateNormal) 
   {

            NSManagedObjectContext *context = [document managedObjectContext];

            Exercise *exercise = (Exercise *) [NSEntityDescription insertNewObjectForEntityForName:@"Exercise" inManagedObjectContext:context];
    }
这里的最后一行似乎给出了错误:“+entityForName:nil不是合法的NSManagedObjectContext参数搜索实体名称”练习

我确实创建了一个具有“练习”实体的数据模型。从我所做的阅读来看,这可能与不同线程与上下文交互的方式有关?但我不确定,任何指导都会很好

+entityForName:nil不是搜索实体名称“练习”的合法NSManagedObjectContext参数

只有3种可能性:

实体名称拼写错误,例如练习而非练习。 具有nil托管对象上下文 没有加载或加载了错误的托管对象模型。
在您的情况下,最有可能的情况是第二种情况可能是您的托管对象上下文为零。

您可以向我展示您的managedObjectContext方法吗?您解决了这个问题吗?如果是,则接受答案。managedObjectContext方法正是UIManagedDocument上属性的方法。如果我使用document.managedObjectContext,也会执行同样的操作。@rheotron:您是否尝试过从模拟器中删除应用程序,清理并重新构建?@rheotron:检查您的managedObjectContext是否返回NULL?是的,返回nil。我想他们是一样的。@rheotron:这就是问题本身。