我有一些要排序的 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;
.....
最佳答案
在 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;
}];
关于ios - Obj-C - 如何保护此排序数组免受空值影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812793/