iOS:NSManagedObjectContext/NSFetchRequest/NSEntityDescription有问题

iOS:NSManagedObjectContext/NSFetchRequest/NSEntityDescription有问题,ios,objective-c,nsmanagedobject,nsmanagedobjectcontext,nsfetchrequest,Ios,Objective C,Nsmanagedobject,Nsmanagedobjectcontext,Nsfetchrequest,我收到一条错误消息'由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayM insertObject:atIndex:]:对象不能为零' 问题出在获取的对象上 这是因为它试图向NSArray添加一个为零的值。我不明白的是,为什么会有这个空值 仅供参考:表是我的sqlite表的名称,标签只是我的表的一个字段 - (NSMutableArray*) getLabel:(NSString *)label fromTable:(NSS

我收到一条错误消息'由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSArrayM insertObject:atIndex:]:对象不能为零'

问题出在获取的对象上

这是因为它试图向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;
}
良好的初始化:

初始化错误:

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

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

id info = [[theClass alloc] initWithEntity:entity insertIntoManagedObjectContext:managedObjectContext];
如果您想了解更多信息,请查看此处:


您应该插入insertIntoManagedObjectContect:nil

这并不奇怪,刚才分配的对象有空字段。在将对象添加到数组或字典之前,您应该始终检查对象是否为nil。没有足够的信息来理解[info valueForKey:label]为何为零。我们需要查看创建托管对象并将其存储在数据库中的代码片段。我们还需要知道“标签”的价值。@Cy-4AH我不明白,你是什么意思?@Dimitar08我知道我必须检查零,但我的问题不是避免零,而是解释它。我不想把灰尘藏在地毯下面。。。如果有帮助的话,我会在罚单中添加更多信息。仔细查看代码后,Cy-4AH是正确的。您的代码正在创建新的托管对象。在这一点上,对象上的任何字段都不会填充数据是有道理的。哦,非常感谢,我到处都找过了,而且非常简单!非常感谢,你保存了我的一周:D(正因为如此,它添加了一行又一行。非常奇怪的是,为了初始化变量,我需要使用insertIntoMAnagedObjectContext…,因为我尝试了简单的initWithEntity:初始化,但它不起作用)我想他只需要
for(FetchedObject中的id信息)
无任何
插入ManagedObjectContect