iOS: проблема с NSManagedObjectContext / NSFetchRequest / NSEntityDescription - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть сообщение об ошибке ' Завершение приложения из-за необработанного исключения' NSInvalidArgumentException ', причина:' - [__ NSArrayM insertObject: atIndex:]: объект не может быть нулем '

Проблема в fetchedObjects .

Это потому, что он пытается добавить значение, равное нулю, в NSArray. Чего я не понимаю, так это пустого значения.

Для справки: таблица - это имя таблицы моего sqlite, а метка - просто поле моей таблицы.

- (NSMutableArray*) getLabel:(NSString *)label fromTable:(NSString *)table 
{
    NSMutableArray * ret = [NSMutableArray new];
    NSError *error = nil;
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:table
                                              inManagedObjectContext:managedObjectContext];
    [fetchRequest setEntity:entity];
    NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

    Class theClass = NSClassFromString(table);
    id info = [[theClass alloc] initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext];

    for (info in fetchedObjects)
    {
        [ret addObject:[info valueForKey: label]];
    }
    return ret;
}

Хорошая инициализация:
enter image description here

Плохая инициализация:
enter image description here

У вас есть идеи? Заранее спасибо.

1 Ответ

0 голосов
/ 18 сентября 2018

Это распространенная ошибка. Я думаю, вы должны взглянуть на свою строку:

id info = [[theClass alloc] initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext];

Посмотрите здесь, если вы хотите получить больше информации: Использовать класс NSManagedObject без initWithEntity:?

Вы должны вставитьIntoManagedObjectContect: nil

...