2015-01-15 5 views
0

Я новичок в IOS и пытаюсь сделать учебник по основным данным. Следующий код компилируется, но затем сбой. Точка останова показывает ошибку ниже, но я не могу понять, что она означает или как ее исправить. Tutorial. Вот код ..ios/xcode: ошибка метаданных ядра в NSManagedObjectContext

- (void)viewDidLoad { 
     [super viewDidLoad]; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity =[NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:managedObjectContext]; 
    [fetchRequest setEntity:entity]; 
      NSError *error; 
      self.failedBankInfos = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
      self.title = @"Failed Banks"; 
    } 

Здесь ошибка:

managedObjectContext = (NSmanagedObjectContext *) nil 

Вот что консоль показывает.

2015-01-14 19:28:50.084 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.086 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.087 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.088 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.093 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Zip: 12345 
    2015-01-14 19:28:50.094 coredata-wend[39693:1857624] Name: Test Bank 
    2015-01-14 19:28:50.094 coredat 

a-wend[39693:1857624] Zip: 12345 
(lldb) 

Поблагодарили бы за любые предложения по устранению неисправностей.

ответ

2

Это не сообщение об ошибке (или это хотя бы не полное сообщение об ошибке). Но если это правильно, это почти понятно: managedObjectContext - это ноль, что означает, что ему не присвоено никакого значения. Когда вы пытаетесь найти описание сущности, вы передаете значение nil для второго аргумента.

Почему это не очевидно из кода, который вы опубликовали, но, скорее всего, вы никогда не придавали ему никакого значения. В какой-то момент вам нужно назначить NSManagedObjectContext этому свойству. Там, где вы это делаете, это зависит от структуры вашего приложения, но вероятное место в том, какой код создал этот контроллер.

+0

Я не совсем понимаю, что я имею в виду. Этот проект основан на основном приложении Apple. Связанный с этим связанный выше ретранслятор Ray Wenderlich помещает следующее в файл делегирования приложения: at-property (readonly, strong, nonatomic) NSManagedObjectContext * managedObjectContext; он синтезируется в .m-файле с помощью _managedObjectContext . Также в главном контроллере представления: at-property (неатомный, сильный) NSManagedObjectContext * managedObjectContext; Он синтезируется в файле .m с управляемым объектом ObjectContext no underscore. Это может быть проблема? – user1904273

+0

Похоже, что и ваш делегат приложения, и ваш контроллер вида имеют 'managedObjectContext'. Но заявить, что они существуют, недостаточно, вы должны также дать им значения. Скорее всего, где-то в вашем делете приложения вы должны установить 'managedObjectContext' контроллера представления, чтобы оно имело то же значение, что и в вашем делете приложения. –

+0

Этот метод находится в app delegate ...- (NSManagedObjectContext *) managedObjectContext { if (_managedObjectContext! = Nil) { return _managedObjectContext; } NSPsistentStoreCoordinator * coordinator = [self persistentStoreCoordinator]; если (! Координатор) { return nil; } _managedObjectContext = [[NSManagedObjectContext alloc] init]; [_managedObjectContext setPersistentStoreCoordinator: coordinator]; return _managedObjectContext; } Я не вижу, чтобы его вызывали. – user1904273

Смежные вопросы