1

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
4

0 に答える 0