Welcome
我使用 Core Data 来存储数据。我需要这样一个方法,它只返回实体的最后 7 个元素。我的问题是我应该如何修改这段代码(它获取所有元素,但我只需要最后 7 个)
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Trip" inManagedObjectContext:managedObjectContext];
NSFetchRequest *request = [[ NSFetchRequest alloc] init];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"distance" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
NSError *error;
tripArray = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
最后定义? Core Data 内部没有顺序的概念。如果您指的是基于您的最远距离distance
属性,那么您可以执行以下操作:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Trip" inManagedObjectContext:managedObjectContext];
NSFetchRequest *request = [[ NSFetchRequest alloc] init];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"distance" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[request setSortDescriptors:sortDescriptors];
[request setFetchLimit:7];
[sortDescriptor release];
NSError *error;
NSArray *tripArray = [managedObjectContext executeFetchRequest:request error:&error];
请注意,添加-setFetchLimit:
将导致该请求仅返回 7 个结果。它将根据您的排序返回“第一个”7。因此,如果您想要最接近的,请反转ascending:
你的一部分。
-mutableCopy
打电话绝对没有意义-mutableCopy
on the NSArray
这是从返回的-executeFetchRequest: error:
。向其中添加对象NSArray
不会将它们添加到核心数据并从中删除它们NSArray
不会将它们从核心数据中删除。因此,它完全没有任何价值,只是浪费。
你还记得你在哪里看到的吗?我已经尝试追踪它有一段时间了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)