countForFetchRequest为空表返回1

los*_*ion 3 core-data ios

我正在执行'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;
Run Code Online (Sandbox Code Playgroud)

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

sqlite> select count(*) from ZTESTDATA;
0
sqlite> 
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?

Mar*_*rra 6

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

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

  • 我认为fetchRequest.includesPendingChanges = false可以完成工作 (2认同)