countForFetchRequest为空表返回1

我正在执行’countForFetchRequest’,它总是返回比我表中的记录数多1的计数。

NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:@"TESTDATA" inManagedObjectContext:self.managedObjectContext]]; NSError *error = nil; NSUInteger count = [self.managedObjectContext countForFetchRequest:request error:&error]; if(count == NSNotFound) { // Handle error } return count; 

当我的表为空时返回1。 如果我的表有3行,则返回4。

 sqlite> select count(*) from ZTESTDATA; 0 sqlite> 

关于我做错的任何想法?

计数总是准确的,但它既计算内存中的内容(尚未保存),也计算磁盘上的内容。

正如其他人所建议的那样,进行取指而不是计数并打印出Core Data找到的内容,您将找到答案。