尝试在 Core Data 中做一个简单的 GROUP BY,但仍然没有成功。起点是这里(大约一年前的 Matt Connolly 的博客文章,并且也查看了所有内容。
我只是想按一个属性分组:
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