【发布时间】:2017-05-30 14:53:36
【问题描述】:
我的核心数据表是这样的:
我想收到每个发件人的最新消息。所以结果应该是这样的:
这是我的代码:
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"MyCoreDataObject" inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"MESSAGE <> ''"];
request.predicate = predicate;
NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"TIME" ascending:NO];
NSArray *sortDescriptors = @[sd1];
[request setSortDescriptors:sortDescriptors];
[request setEntity:entityDescription];
NSError *error;
NSArray *msgs = [moc executeFetchRequest:request error:&error];
我将获得所有排序的数据(最新消息优先)。 但是如何根据发件人获得唯一值?所以只有每个发件人的最新消息?
基本上我需要这个 SQL 的等价物:
SELECT message, sender, MAX(time) as maxTime FROM myTable GROUP BY sender;
【问题讨论】:
标签: ios objective-c core-data nspredicate