核心数据获取最新的对象以获取价值

时间:2014-08-27 16:40:31

标签: ios objective-c

我只需要获取核心数据模型中值的最新条目

表格结构: 时间戳,接收者,消息

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

感谢您的回复

1 个答案:

答案 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];
}

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