佚名通过本文主要向大家介绍了关于感情的问题,感情问题在线咨询,怎样处理感情问题,感情出了问题怎么办,感情问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于感情问题 关于排序的问题
描述:
解决方案1:
描述:
有这样的需求 我需要从数据库里取出的model两个为一组放到array里作为dataSource给tableView使用
现在的算法那是这样的
- (NSMutableArray *)getAllSelectedTopicModleFormRealm {
RLMResults<DICDiscoverSelectedTopic *> *savedTopics = [DICDiscoverSelectedTopic allObjectsInRealm:_realm];
NSMutableArray *array = [NSMutableArray array];
NSMutableArray *arrayTemp = [NSMutableArray array];
for (int i = 0; i < savedTopics.count; i++) {
DICDiscoverSelectedTopic *Topic = [savedTopics objectAtIndex:i];
if (i % 2 == 0 || i == 0) {
[arrayTemp addObject:Topic];
} else {
[arrayTemp addObject:Topic];
[array addObject:arrayTemp.copy];
[arrayTemp removeAllObjects];
}
}
return array;
}
但是现在有个新的需求要根据topic.order (int型)来进行排序
这个值大的放到最前面 小的放到后面 然后还要按照这个顺序来把model两个为一组放到arrayTemp里 并且最后要统一放到array里
求改进这个方法!
解决方案1:
最后用了个很笨很笨的方法 希望能得到优化
- (NSMutableArray *)getAllSelectedTopicModleFormRealm {
RLMResults<DICDiscoverSelectedTopic *> *savedTopics = [DICDiscoverSelectedTopic allObjectsInRealm:_realm];
NSMutableArray *arrayFinalWithOrderAndCode = [NSMutableArray array];
NSMutableArray *arrayToSaveOrder = [NSMutableArray array];
NSMutableDictionary *dicWithTopic = [NSMutableDictionary dictionary];
NSMutableArray *arrayWithOrder = [NSMutableArray array];
NSMutableArray *arrayTemp = [NSMutableArray array];
for (int i = 0; i < savedTopics.count; i++) {
DICDiscoverSelectedTopic *topic = [savedTopics objectAtIndex:i];
[arrayToSaveOrder addObject:[NSString stringWithFormat:@"%d", topic.topOrder]];
[dicWithTopic setValue:topic forKey:[NSString stringWithFormat:@"%d", topic.topOrder]];
}
/* 进行排序 */
NSMutableArray *sortedArray = [arrayToSaveOrder sortedArrayUsingSelector:@selector(compare:)].mutableCopy;
/* 因为是升序所以要改为降序或者逆转数组 */
for (int i = 0; i< sortedArray.count/2.0; i++) {
[sortedArray exchangeObjectAtIndex:i withObjectAtIndex:sortedArray.count - 1 - i];
}
/* 得到排序后的数组 */
for (int i = 0 ; i < sortedArray.count; i++) {
NSString *order = [sortedArray objectAtIndex:i];
DICDiscoverSelectedTopic *orderModel = [dicWithTopic objectForKey:order];
[arrayWithOrder addObject:orderModel];
}
/* 将数组两个一组进行处理 */
for (int i = 0; i < savedTopics.count; i++) {
DICDiscoverSelectedTopic *topic = [savedTopics objectAtIndex:i];
if (i % 2 == 0 || i == 0) {
[arrayTemp addObject:topic];
} else {
[arrayTemp addObject:topic];
[arrayFinalWithOrderAndCode addObject:arrayTemp.copy];
[arrayTemp removeAllObjects];
}
}
return arrayFinalWithOrderAndCode;
}