iOS:NSManagedObjectContext / NSFetchRequest / NSEntityDescription问题

问题描述 投票:-1回答:1

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

问题出在fetchedObjects上。

这是因为它尝试向NSArray添加nil值。我不明白的是,为什么有空值。

有关信息:表是我的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

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

ios objective-c nsmanagedobject nsmanagedobjectcontext nsfetchrequest
1个回答
1
投票

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

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

如果你想获得更多信息,请看这里:Use NSManagedObject class without initWithEntity:?

你应该insertIntoManagedObjectContect:nil

© www.soinside.com 2019 - 2024. All rights reserved.