2013-06-30 5 views
12

Ich habe NSCountResultType verwendet, um Entitäten in meinen CoreData-Kontexten zu zählen. Vor einiger Zeit bin ich auf countForFetchRequest:error: gestoßen, was das Gleiche mit nur einer anderen (besser lesbaren) Syntax zu tun scheint.Gibt es einen Unterschied zwischen NSCountResultType und CountForFetchRequest: Fehler: in Bezug auf die Leistung?

Gibt es einen Unterschied zwischen diesen beiden in Bezug auf Leistung, Speicherverwaltung oder andere Aspekte trotz der Syntax?

Antwort

18

Es scheint überhaupt keinen Unterschied zu geben (nur dass der eine NSUInteger zurückgibt und der andere einen NSArray zurückgibt, der einen NSNumber enthält).

Einstellen der Start Argument

 
-com.apple.CoreData.SQLDebug 3 

zeigt, dass beide

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

und

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

ausführen genau die gleiche SQLite-Anweisung

 
SELECT COUNT(DISTINCT t0.Z_PK) FROM ZEVENT t0 
Verwandte Themen