我有一个包含5个项目的分段控件,在选择每个项目时,数据会按某些条件进行过滤,并显示不同的结果 . 段控制中的所有五个选项都使用相同的实体来获取数据 .
目前我有一个fetchresult控制器,每当段控制中有值更改时,我从具有不同谓词的同一实体获取数据,并使用新数据重新加载表 .
我希望优化这一点 . 我是以正确的方式做到这一点还是以正确的方式做到了这一点?
另外,对于已经获取的数据,更改升序和降序之间的排序顺序的最佳方法是什么 .
谢谢你 .
你可以发布一些代码片段吗?
如果您已经获取了一组MangedObjcts,则可以使用Sort Descirptor对NSArray重新排序:sortedArrayUsingDescriptors
- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors
如果您只获取少量NSManagedObjects,则可能没有太多优化要做 . CoreData及其相应的类(例如您正在使用的FetchResultsController,旨在与UITableViews特别合作)为您完成大部分繁重工作 .
就改变升序和降序之间的排序顺序的最佳方式而言;这是通过以下方式确定的:
NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"someEntityProperty" ascending:YES/NO];
如果将“升序”设置为“是”,则会在您提供的键上将NSManagedObjects重新排序为最小升序到最大升序 . 如果将其设置为NO,则会将它们从最大到最小(降序)返回 .
2 回答
你可以发布一些代码片段吗?
如果您已经获取了一组MangedObjcts,则可以使用Sort Descirptor对NSArray重新排序:sortedArrayUsingDescriptors
如果您只获取少量NSManagedObjects,则可能没有太多优化要做 . CoreData及其相应的类(例如您正在使用的FetchResultsController,旨在与UITableViews特别合作)为您完成大部分繁重工作 .
就改变升序和降序之间的排序顺序的最佳方式而言;这是通过以下方式确定的:
如果将“升序”设置为“是”,则会在您提供的键上将NSManagedObjects重新排序为最小升序到最大升序 . 如果将其设置为NO,则会将它们从最大到最小(降序)返回 .