3

我正在执行一个“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> 

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

4

1 回答 1

6

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

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

于 2013-05-31T19:09:16.917 回答