UIMangedDocument上下文为零

时间:2013-06-13 11:45:25

标签: iphone ios objective-c

我正在尝试学习如何使用Core Data和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参数,搜索实体名称'Exercise''

我确实创建了一个具有“练习”实体的数据模型。从我已经完成的阅读中,它可能与不同线程与上下文交互的方式有关吗?但我不太确定,任何指导都会很棒!

1 个答案:

答案 0 :(得分:0)

  

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

只有3种可能性:

  1. 拼错实体名称,例如练习而不是练习。
  2. 拥有nil托管对象上下文
  3. 没有加载或错误的托管对象模型。
  4. 您的案例中的大多数概率都是第二个(可能是您的托管对象上下文为Nil)。