2011-11-30 3 views
1

단추 상태 (isEnabled)를 NSUserDefaults에서 배열 상태 (비어 있음/비어 있지 않음)에 바인딩해야합니다.NSUserDefaults에서 배열 상태의 바인딩 단추 상태 (isEnabled)

빈 배열을 NO에 매핑하고 객체를 적어도 하나 이상 포함하는 배열을 YES로 매핑해야하는 NSValueTransformer가 필요할 수 있습니다.

이 가까운 정확한 것은 아니지만 :

[showEmptyFolders bind:@"enabled" toObject:[NSUserDefaults standardUserDefaults] withKeyPath:@"kPreferencesFolderArray" options:nil]; 

감사

넌 배열을 취하고 그것을 0이 아닌 요소가 계산했는지 여부 NO 또는 YES 반환 값 변환기를 만들 수

답변

3

. 이런 식으로 뭔가 :

@interface PositiveCountTransformer : NSValueTransformer 
@end 

@implementation PositiveCountTransformer 

+ (Class)transformedValueClass 
{ 
    return [NSNumber class]; 
} 

+ (BOOL)allowsReverseTransformation 
{ 
    return NO; 
} 

- (id)transformedValue:(id)value 
{ 
    NSInteger result; 
    if ([value isKindOfClass:[NSArray class]]) 
     result = [value count]; 
    else 
     result = 0; // Or however you want to handle it 

    return [NSNumber numberWithBool:(result > 0)]; 
} 

@end 
6

링크 [email protected] 키 패스에 바인딩 배열 컨트롤러와 결합 버튼의 Enabled와 배열입니다. 제로 카운트는 부울 NO으로 작동하고 0이 아닌 값은 YES으로 처리됩니다. (어레이 컨트롤러 없이도 작동 할 수 있습니다. 단지 시도하지 않았습니다.)

나는 반대 방향으로 필요한 경우 NSNegateBoolean 표준 변압기를 추가 할 수 있습니다.

관련 문제