我有一些我要排序的Json输入数组。某些排序描述符可能具有空值。如何防止空值异常?感谢。
目前我所拥有的是:
//sort the group arrays
NSSortDescriptor *sortDescriptor1a;
NSSortDescriptor *sortDescriptor1b;
sortDescriptor1a = [[NSSortDescriptor alloc] initWithKey:@"Min" ascending:YES selector:@selector(caseInsensitiveCompare:)];
sortDescriptor1b = [[NSSortDescriptor alloc] initWithKey:@"Line" ascending:YES selector:@selector(caseInsensitiveCompare:)];
NSArray *sortDescriptors1 = [NSArray arrayWithObjects:sortDescriptor1a, sortDescriptor1b, nil];
NSArray *tempArray1 = [unsortedGroup1 sortedArrayUsingDescriptors:sortDescriptors1 ];
currentGroup1 = [tempArray1 mutableCopy];
NSSortDescriptor *sortDescriptor2a;
.....
答案 0 :(得分:1)
在nil
值的情况下,您希望排序行为是什么?以下内容将nil
值推送到数组的末尾。
NSArray *sortedGroup1 = [unsortedGroup1 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSComparisonResult result = NSOrderedSame;
if (obj1.Min && obj2.Min) {
result = [obj1.Min caseInsensitiveCompare:obj2.Min];
} else if (obj1.Min) {
result = NSOrderedDescending;
} else if (obj2.Min) {
result = NSOrderedAscending;
}
if (result == NSOrderedSame) {
if (obj1.Line && obj2.Line) {
result = [obj1.Line caseInsensitiveCompare:obj2.Line];
} else if (obj1.Line) {
result = NSOrderedDescending;
} else if (obj2.Line) {
result = NSOrderedAscending;
}
}
return result;
}];