核心数据获取最新对象值

问题描述:

我需要在核心数据模型核心数据获取最新对象值

抓取只有一个值的最新条目表结构: 时间戳,接收器,消息

条目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吗?

感谢乌拉圭回合的答复

+0

阅读NSPredicates。 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/Reference/NSPredicate.html – Mike 2014-08-27 17:08:57

用于指定你想从接收器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]; 
} 

希望这个答案可以帮助你。