2010-02-09 4 views
1

많은 공간과 시간이 소요되는 switch 문을 단순화하려고합니다. 코드를 이해하면 이해할 수 있습니다. 그렇지 않다면 나중에 설명하겠습니다.switch 문 단순화 (Objective-C)

// When row is selected 
- (void)pickerView:(UIPickerView *)pickerTimer didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 

    switch (row) { 
     case 0: 
      NSLog(@"It obviously worked.0"); 
      break; 
     case 1: 
      NSLog(@"It obviously worked.1"); 
      break; 
     case 2: 
      NSLog(@"It obviously worked.2"); 
      break; 
     case 3: 
      NSLog(@"It obviously worked.3"); 
      break; 
     case 4: 
      NSLog(@"It obviously worked.4"); 
      break; 
     case 5: 
      NSLog(@"It obviously worked.5"); 
      break; 
     case 6: 
      NSLog(@"It obviously worked.6"); 
      break; 
     default: 
      NSLog(@"It did kindof work.NIL"); 
      break; 
    } 
} 

이것을 단순화하는 방법이 있습니까? 그냥 좋아해요,

NSLog(@"It did work! %@", row); 

기록을 위해 시도했지만 작동하지 않았습니다.

답변

8

정수의 형식 지정자는 %d - %@입니다. 개체를 지정합니다. NSInteger의 크기는 %d 지정자가 printf()에 대해 예상 할 수있는 크기가 아니므로 NSInteger를 printf()으로 전달할 때 NSInteger를 으로 전달해야합니다 (따라서 @"%d", (int)row으로 작성).

덧붙여서, 각 case 문에 대해 반복 할 필요는 없습니다. 휴식을 취하지 않으면 컨트롤이 다음 케이스로 넘어갑니다.

+0

하 석, 나는 그런이야 ... 공상 얻을 목적으로 바꿀 수 있습니다 noob .. 형식 지정자와 같은 것들에 대한 개요가 있습니까? 감사합니다 :) – Emil

+0

C printf에서 검색을 수행하면 % @이 나열되지 않지만 그 밖의 모든 것은 있습니다. –

+1

@Emil :이 링크에는 Core Foundation에서 지원되는 모든 형식 지정자가 들어 있습니다. http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265. – dreamlax

6

처럼 척 ... 당신이 할 수있는

NSLog(@"It did work! %d", row); 

을했다 ... 또는 당신은

NSLog(@"It did work! %@", [NSNumber numberWithInt:row]); 
관련 문제