13

我曾经用来NSCountResultType计算我的 CoreData 上下文中的实体。不久前,我遇到了countForFetchRequest:error:它似乎只用另一种(更易读的)语法做同样的事情。

尽管有语法,这两者在性能、内存管理或其他方面有什么区别吗?

4

1 回答 1

23

似乎根本没有区别(只有一个返回 an NSUInteger,另一个返回NSArray包含 an NSNumber)。

设置启动参数

-com.apple.CoreData.SQLDebug 3

表明两者

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
NSUInteger count = [context countForFetchRequest:request error:NULL];

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
[request setResultType:NSCountResultType];
NSArray *result = [context executeFetchRequest:request error:NULL];

执行完全相同的 SQLite 语句

从 ZEVENT t0 中选择计数(DISTINCT t0.Z_PK)
于 2013-06-30T09:15:50.507 回答