尝试在Core Data中执行简单的GROUP BY,但仍然没有成功。起点在这里(Matt Connolly's Blog post of about a year ago并且看起来也是如此。
我只是想通过一个属性进行分组:
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
我没有收到任何错误,但没有结果(无)。使用 -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