我只需要获取核心数据模型中值的最新条目
表格结构: 时间戳,接收者,消息
条目1:01.01.2014,123,你好
条目2:02.01.2014,321,你好
条目3:01.02.2014,123,hello1
第4条; 02.02.2014,321,hello1
我只需要获得接收器123和接收器321的最新条目。 你有任何想法或我应该改为sqlite吗?
感谢您的回复
答案 0 :(得分:0)
要指定您希望来自接收方123或接收方321的条目,您需要使用NSPredicate
。
接下来,对于最新的条目,这可能有点棘手。假设,对于一个日期条目,您只能输入一个条目,您可以依赖于最后一个日期条目对应于您的最新记录的事实。但是如果有可能存在与一个日期相对应的多个条目,那么我建议您创建一个额外的列,称为序列号。原因是Core Data无法按插入顺序获取数据。此外,最好在表中保留一些不属于数据的主键。现在,要获取最小/最大的条目,您必须使用NSSortDescriptor
。
我附上示例代码。
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"myEntityName"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"receiver == %d", receiverValue];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"serialNo" ascending:NO];
[fetchRequest setSortDescriptors:@[sortDescriptor]];
NSArray *results = [context executeFetchRequest:fetchRequest error:nil];
if ([results count] > 0) {
MyManagedObject *object = [results firstObject];
}
希望这个答案可以帮到你。