如何获取核心数据数据库的最后记录?
我有一个核心数据实体被称为刚2场中的图像:如何获取核心数据数据库的最后记录?
imageName = NSString
timeStamp = NSNumber
我试图模拟一种栈后进先出法(在后进先出)。 插入一个新条目很简单,但是读取添加到实体的最后一个条目呢?
所有图像都添加有时间标记,通过使用
time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970];
的整数自1970年以来
使得等于的秒数获得如何检索的最后插入的记录核心数据(=有最大时间戳记录的记录)???
感谢
执行由timeStamp
取请求,排序的结果。
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:...];
// Results should be in descending order of timeStamp.
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timeStamp" ascending:NO];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSArray *results = [managedObjectContext executeFetchRequest:request error:NULL];
Entity *latestEntity = [results objectAtIndex:0];
您可能还需要限制使用NSFetchRequest
的setFetchLimit:
结果的数量。
我尝试过使用Chris Doble提到的方法,发现它非常慢,尤其是如果有很多记录需要拉动和检查timeStamp。如果你想加快速度,我现在在我的ManagedObject上设置一个名为isMostRecent的属性,我可能想要从中获取最新的属性。当要存储新记录时,只需抓取具有此属性设置为YES的最新记录并将其更改为NO,然后将正在存储的新记录设置为YES。下一次,我需要抢到最近的记录,我所要做的就是...
+ (Photo*)latestPhotoForMOC:(NSManagedObjectContext*)context {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:kCoreDataEntityNamePhoto
inManagedObjectContext:context];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isMostRecent == %@", [NSNumber numberWithBool:YES]];
[request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"isMostRecent" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy];
Photo* photo = nil;
if (mutableFetchResults && mutableFetchResults.count > 0) {
photo = [mutableFetchResults objectAtIndex:0];
}
return photo;
}
我发现这样会快得多。是的,它需要你多一点,以确保它被正确使用,并且你永远不会得到多于一条记录标记为isMostRecent,但对我来说这是最好的选择。
希望这可以帮助别人。
你可能忘记了索引你的时间戳字段。 – malhal 2015-01-17 20:26:27
ahhhhhhhhhhhhhhhh,简直太完美了!谢谢!!!!! – SpaceDog 2011-04-01 05:06:21