Core Data で単純な GROUP BY を実行しようとしていますが、まだ成功していません。出発点はここでした(約1年前のMatt Connollyのブログ投稿で、 SO全体も見ました。
単一のプロパティでグループ化したいだけです。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:context];
NSAttributeDescription *chapterDesc = [request.entity.attributesByName objectForKey:@"chapter"];
[request setPropertiesToFetch:@[chapterDesc]];
[request setPropertiesToGroupBy:@[chapterDesc]];
[request setResultType:NSDictionaryResultType];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
// error handling
エラーは発生していませんが、結果はありません (nil)。-com.apple.CoreData.SQLDebugでデバッグすると、正しい SQL ステートメントが表示されます。(Core Data が SQL ではないことは知っていますが、ステートメントは正しいです...)。データベースにデータが存在することは確かです (単純に述語 = nilを設定すると、すべてのエントリが返されます)。
誰かが私の間違いが何か考えを持っていますか (または経験から知っていますか)?
アップデート
要求どおり、Document.h のデータ モデル:
@interface Document : NSManagedObject
@property (nonatomic, retain) NSNumber * chapter;
@property (nonatomic, retain) NSNumber * isDoctor;
@property (nonatomic, retain) NSNumber * section;
+ (Document *)createOrUpdateDocumentWithChapter:(NSNumber *)chapter section:(NSNumber *)section doctor:(BOOL)doctor inManagedObjectContext:(NSManagedObjectContext *)context;
+ (NSArray *)getDocumentsInManagedObjectContext:(NSManagedObjectContext *)context;
@end