관련 NSSortDescriptor
을 생성하는 switch
문이 있습니다. NSSortDescriptors
중 일부는 사용자 정의 comparator
으로 block
을 사용하고 있습니다 (CMTimes
과 비교). 다음 코드는 정상적으로 작동하지만 NSSortDescriptors
과 CMTimes
을 더 추가하고 싶습니다. block
은 항상 동일하므로 block
을 보유하는 variable
을 만들면 지저분한 코드를 복사하여 붙여 넣을 필요가 없습니다. 나는 그것이 가능해야한다고 생각하지만 나는 그것이 작동하도록 할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 고맙습니다!NSSortDescriptors의 블록 - 목표 C
NSSortDescriptor *sortDescriptor;
switch (mode) {
case 1:
sortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @"startTime" ascending: YES comparator:^(id first, id second){
CMTime time1 = [first CMTimeValue];
CMTime time2 = [second CMTimeValue];
if (CMTIME_COMPARE_INLINE(time1, <, time2))
return NSOrderedAscending;
else if (CMTIME_COMPARE_INLINE(time1, >, time2))
return NSOrderedDescending;
else
return NSOrderedSame;
}];
break;
case 2:
sortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @"startTime" ascending: NO comparator:^(id first, id second){
CMTime time1 = [first CMTimeValue];
CMTime time2 = [second CMTimeValue];
if (CMTIME_COMPARE_INLINE(time1, <, time2))
return NSOrderedAscending;
else if (CMTIME_COMPARE_INLINE(time1, >, time2))
return NSOrderedDescending;
else
return NSOrderedSame;
}];
break;
case 3:
sortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @"info" ascending: YES];
break;
case 4:
sortDescriptor = [NSSortDescriptor sortDescriptorWithKey: @"info" ascending: NO];
break;
default:
break;
}
감사합니다. DHamrick. 그건 완벽하게 작동합니다. 나는 블록을 조금 더 잘 이해한다고 생각합니다 ... – Simple99