核心数据获取最新对象值
问题描述:
我需要在核心数据模型核心数据获取最新对象值
抓取只有一个值的最新条目表结构: 时间戳,接收器,消息
条目1:2014年1月1日, 123,你好
条目2:2014年2月1日,321,你好
条目3:2014年2月1日,123,hello1
条目4; 02.02.2014,321,你好1
我只需要得到接收器123和接收器321的最新条目。 你有什么想法或者我应该更改为sqlite吗?
感谢乌拉圭回合的答复
答
用于指定你想从接收器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];
}
希望这个答案可以帮助你。
阅读NSPredicates。 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html – Mike 2014-08-27 17:08:57