iOS:NSManagedObjectContext / NSFetchRequest / NSEntityDescription 有问题

iOS: Problem with the NSManagedObjectContext / NSFetchRequest / NSEntityDescription

我有一条错误消息 ' 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:' -[__NSArrayM insertObject:atIndex:]: 对象不能为 nil'

问题出在 fetchedObjects

这是因为它试图向 NSArray 添加一个 nil 值。我不明白的是为什么会有那个空值。

有关信息:table 是我的 sqlite table 的名称,标签只是我的 table.

的一个字段
- (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;
}

初始化好:

错误的初始化:

你有什么想法吗? 提前致谢。

这是一个常见的错误。我想你应该看看你的台词:

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

如果您想了解更多信息,请看这里:Use NSManagedObject class without initWithEntity:?

你应该insertIntoManagedObjectContect:nil