【问题标题】:Core data fetch request optimization with segment control使用段控制优化核心数据获取请求
【发布时间】:2012-02-06 23:50:43
【问题描述】:
我有一个包含 5 个项目的段控件,在选择每个项目时,数据会根据某些条件进行过滤,并显示不同的结果。段控制中的所有五个选项都使用相同的实体来获取数据。
目前我有一个 fetchresultcontroller,每当段控件中的值发生变化时,我都会从具有不同谓词的同一实体中获取数据,并使用新数据重新加载表。
我希望对此进行优化。我这样做是正确的还是正确的方法是什么?
对于已获取的数据,更改升序和降序排序顺序的最佳方法是什么。
感谢您的建议。
【问题讨论】:
标签:
iphone
ios
optimization
core-data
uisegmentedcontrol
【解决方案1】:
你能发布一些代码sn-ps吗?
如果您已经获取了一组 MangedObjct,您可以使用排序描述符重新排序 NSArray:sortedArrayUsingDescriptors
- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors
【解决方案2】:
如果您只获取少量的 NSManagedObjects,则可能不需要进行太多优化。 CoreData 及其相应的类(例如您正在使用的 FetchResultsController,它旨在与 UITableViews 一起工作得特别好)为您完成大部分繁重的工作。
就在升序和降序之间改变排序顺序的最佳方式而言;这是这样确定的:
NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"someEntityProperty" ascending:YES/NO];
如果您将升序设置为“是”,您将在您提供的键上让您的 NSManagedObjects 按从小到大的升序排序。如果您将其设置为 NO,您将让它们从最大到最小(降序)返回。