2013-06-13 3 views
1

Я пытаюсь узнать, как использовать Core Data и UIManagedDocuments. Сначала я создать/открыть документ:UIMangedDocument Context is nil

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: ноль не является юридическим параметр NSManagedObjectContext ищет имя объекта„Упражнение“»

Я определенно создал модель данных, которая имеет «сущность физических упражнений». Из чтения, которое я сделал, это может быть связано с тем, как различные потоки взаимодействуют с контекстом? Но я не уверен, любое руководство будет замечательным!

+0

Можете ли вы показать мне свой метод «managedObjectContext»? – Bhavin

+0

Вы решили эту проблему? Если да, то Примите ответ. – Bhavin

ответ

0

+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Exercise'

Есть только 3 Возможности:

  1. с опечатками имя сущности, например, Упражнения вместо упражнений.
  2. Наличие нулевого контекста управляемого объекта
  3. Неверная или неправильная модель управляемых объектов загружена.

Большая часть вероятности в вашем случае - 2-й (может быть, ваш контекст управляемого объекта - Nil).

+0

Метод 'managedObjectContext' - это только одно свойство для' UIManagedDocument'. Также делает то же самое, если я делаю 'document.managedObjectContext'. – samturner

+0

@rheotron: Вы пробовали * удалять приложение из симулятора *, * clean * и * Re-build *? – Bhavin

+0

Yep - как раз тогда, не повезло – samturner