一般在陣列排序都使用以下方式:
NSSortDescriptor *countSorter = [NSSortDescriptor sortDescriptorWithKey:@"count" ascending:YES];
[self.listData sortUsingDescriptors:[NSArray arrayWithObject:countSorter]];
[countSorter release];
但,發現如果 key 值是整數的話,就要加上 comparator 來判斷才可。
NSSortDescriptor *countSorter = [NSSortDescriptor sortDescriptorWithKey:@"count" ascending:YES comparator:^(id obj1, id obj2)
{
if([obj1 integerValue] > [obj2 integerValue])
{
return (NSComparisonResult)NSOrderedDescending;
}
if([obj1 integerValue] < [obj2 integerValue])
{
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
[self.listData sortUsingDescriptors:[NSArray arrayWithObject:countSorter]];
[countSorter release];
如果是判斷內容是 NSDate 的話,使用以下方式:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
self.listData = [[self.listData sortedArrayUsingDescriptors:sortDescriptors] mutableCopy];
沒有留言:
張貼留言