Uitableview 核心数据返回1,即使获取的对象为零

Uitableview 核心数据返回1,即使获取的对象为零,uitableview,core-data,nsarray,nsfetchrequest,Uitableview,Core Data,Nsarray,Nsfetchrequest,我在我的应用程序中出现了一个奇怪的错误,我不明白为什么它会这样。如果实体中有0个以上的对象,它将显示正确的数量。如果实体中有0个对象,它将显示1,而不是0(即使它在另一个获取请求中工作正常) 注意:“cell.badgeString”并没有什么特别之处,它只是通过公开指示符显示实体中对象的计数 if (cell.tag == 0) { NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescrip

我在我的应用程序中出现了一个奇怪的错误,我不明白为什么它会这样。如果实体中有0个以上的对象,它将显示正确的数量。如果实体中有0个对象,它将显示1,而不是0(即使它在另一个获取请求中工作正常)

注意:“cell.badgeString”并没有什么特别之处,它只是通过公开指示符显示实体中对象的计数

if (cell.tag == 0)
{
    NSFetchRequest *request = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Uploads" inManagedObjectContext:self.managedObjectContext];

    [request setEntity:entity];

    [request setIncludesSubentities:NO];

    NSArray *results = [self.managedObjectContext executeFetchRequest:request error:nil];

    NSArray *resultString = [results valueForKey:@"url"];

    NSString *string = [resultString description];

    // I'm thinking it has something to do with this right here, maybe that is why it is displaying one instead of zero?
    NSArray *count = [string componentsSeparatedByString:@","];

    NSString *upload_amount = [[NSNumber numberWithInteger:count.count] stringValue];

    cell.badgeString = upload_amount;
}
我不能只做[self.managedContext countForFetchRequest],因为我有一组URL存储在核心数据中的字符串中,我必须首先将它们分开以获得正确的数量


谢谢您的帮助。

您的代码非常混乱,主要是因为您使用了奇怪的变量名。例如,
resultString
是一个
NSArray
。您调用的另一个数组
count
。数组的描述将以括号开始和结束,因此这肯定不是您想要的

如果没有结果,代码中会发生什么

NSArray *results = [self.managedObjectContext executeFetchRequest:request error:nil];
// results is () - an empty array

NSArray *resultString = [results valueForKey:@"url"];
// resultString is () - an empty array

NSString *string = [resultString description];
// string contains "()" or something like that

NSArray *count = [string componentsSeparatedByString:@","];
// count contains ( "()" ) - an array with one string
count.count
1
,其
stringValue
@“1”

要解决此问题,您可以检查
结果。首先计算
,如果结果为0,则做出相应的反应