2013-06-30 9 views
12

私はNSCountResultTypeを使用して、CoreDataコンテキストのエンティティを数えました。しばらく前に私はcountForFetchRequest:error:に遭遇しました。これは別の(より読みやすい)構文で同じことをするようです。NSCountResultTypeとcountForFetchRequestに違いがありますか?エラー:パフォーマンスの面では?

構文にもかかわらず、パフォーマンス、メモリ管理などの面で違いはありますか?

答えて

18

違いは全くありません(NSUIntegerを返し、NSArrayには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の文の実行することを明らかにし

 
SELECT COUNT(DISTINCT t0.Z_PK) FROM ZEVENT t0 
関連する問題