Sky*_*ler 1 sorting nsdate ios
我有一个数组数组.包含的数组的第一个元素都是NSDate对象.我想按顺序从最新到最少排序包含数组的数组.由于某种原因,下面的排序算法导致无限循环.谁能帮我吗?谢谢.
最佳... SL
//array is the array containing all of the other arrays(that have NSDates as their first elements)
//temp is the new array being added to the end of the array, to later be sorted into the correct position.
[array addObject:temp];
NSMutableArray *tempArray;
for (int i=0; i<[array count]; i++)
{
NSDate *session1, *session2;
session1 = [[array objectAtIndex:i] objectAtIndex:0];
session2 = [[array objectAtIndex:[array count]-1] objectAtIndex:0];
if([session1 compare:session2] == NSOrderedDescending)
{
tempArray = [array objectAtIndex:i];
[array insertObject:[array objectAtIndex:[array count]-1] atIndex:i];
[array insertObject:tempArray atIndex:[array count]-1];
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致无限循环,因为在每个步骤中,您都要向数组中插入两个以上的值.因此,您的阵列增长速度超过了遍历它的速度.我假设你打算交换这些值.
在任何情况下,更简单和更有效的排序是使用内置排序功能:
// NSArray *sortedArray, with the unsorted 'array' pulled from some other instance
sortedArray = [array sortedArrayUsingComparator:^(id a, id b) {
return [[b objectAtIndex:0] compare:[a objectAtIndex:0]];
}];
Run Code Online (Sandbox Code Playgroud)