NSCountResultType和countForFetchRequest之间是否有区别:错误:在性能方面?

Car*_*ten 13 core-data objective-c ios

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

尽管有语法,这两者在性能,内存管理或其他方面是否有任何区别?

Mar*_*n R 22

似乎没有任何区别(只有一个返回一个NSUInteger而另一个返回NSArray包含一个NSNumber).

设置启动参数

-com.apple.CoreData.SQLDebug 3

揭示了两者

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
NSUInteger count = [context countForFetchRequest:request error:NULL];
Run Code Online (Sandbox Code Playgroud)

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Event"];
[request setResultType:NSCountResultType];
NSArray *result = [context executeFetchRequest:request error:NULL];
Run Code Online (Sandbox Code Playgroud)

执行完全相同的SQLite语句

SELECT COUNT( DISTINCT t0.Z_PK) FROM ZEVENT t0