IOS setValue:속성 이름 에 따라 속성 설정

IOS setValue 는 자바 의 반사 메커니즘 과 유사 하 다.
이 방법 을 사용 하면 속성 이름 에 따라 속성 을 설정 합 니 다.이 방법 은 일정한 규칙 에 따라 명 명 된 속성 이 대량으로 있 을 때 특히 유용 하 다.
예 를 들 어,어떤 종 류 는 각 열 을 대표 하 는 배열 이 있 습 니 다.이름 형식 은@"column%dArray"입 니 다.1 @property (strong, nonatomic) NSArray *column1Array; 2 @property (strong, nonatomic) NSArray *column2Array; 3 @property (strong, nonatomic) NSArray *column3Array; 4 @property (strong, nonatomic) NSArray *column4Array; 5 @property (strong, nonatomic) NSArray *column5Array;
만약 하나하나 속성 에 값 을 부여 한다 면,대량의 중복 코드 를 써 야 한다.
setValue 방법 을 이용 하여 하나의 순환 에서 이 속성 을 설정 할 수 있 습 니 다.1 for   ( int   i=1; i<=5; i++) { 2      UIImageView *appleView = [[UIImageView alloc] initWithImage:apple]; 3      UIImageView *barView = [[UIImageView alloc] initWithImage:bar]; 4      UIImageView *cherryView = [[UIImageView alloc] initWithImage:cherry]; 5      UIImageView *lemonView = [[UIImageView alloc] initWithImage:lemon]; 6      UIImageView *sevenView = [[UIImageView alloc] initWithImage:seven]; 7      NSArray *imageViewArray = [[NSArray alloc] initWithObjects:appleView,barView,cherryView,lemonView,sevenView, nil]; 8      NSString *fieldName = [[NSString alloc] initWithFormat:@ "column%dArray" ,i]; 9      NSLog(@ "set value for key:%@" ,fieldName); 10      [self setValue:imageViewArray forKey:fieldName]; 11 }
마찬가지 로 속성 을 읽 을 때 현재 조건 에 따라 속성 이름 을 생 성하 고 속성 이름 으로 속성 을 읽 을 수 있 습 니 다.1 - (UIView *) pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 2 { 3      NSString *arrayName = [[NSString alloc] initWithFormat:@ "column%dArray" ,component+1]; 4      NSArray *array = [self valueForKey:arrayName]; 5 6      return   [array objectAtIndex:row]; 7 }

좋은 웹페이지 즐겨찾기