2013-08-05 2 views
0

여러 개의 UISwitches를 사용하고 있는데, 이상한 이유로 올바르게 설정할 수 없습니다.값에 따라 UISwitch가 제대로 설정되지 않았습니다.

나는 기본적으로 값의 기준에 따라 특정 시퀀스에서 정수 묶음 인 JSON 데이터를 가져오고 스위치를 켜기 또는 끄기로 설정하려고합니다. 다음은 관련 코드의 일부입니다.

- (void)fetchData 
{ 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     NSData* data = [NSData dataWithContentsOfURL: [NSURL URLWithString:@"http://10.101.10.101/get/channels"]]; 

     NSError* error; 

     LightingData = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
     idData = [LightingData valueForKey:@"level"]; 

     NSLog(@"Lighting Values: %@", [idData objectAtIndex:19]); 

     dispatch_async(dispatch_get_main_queue(), ^{ 

     }); 
    }); 

} 

- (void)dataCheck 
{ 
    int x = 100; 

    if ([idData objectAtIndex:19 == x]) 
    { 
     [fieldsOverheadStatus setOn:YES]; 
    } 
} 

dataCheck은 약 20 개의 스위치를 설정하는 동안 잠시 동안 계속됩니다.

모든 스위치가 기본적으로 "꺼짐"으로 설정되어 있지만 앱을 실행하면 모두 "켜짐"으로 표시됩니다.

dataCheck 메서드가 호출되는지 확인하기 위해 중단 점을 설정합니다. 보시다시피, 나는 objectAtIndex:19의 값이 무엇인지보고 로그인했으며 반환 된 값은 0 (null이 아님)입니다. idData의 내용을 확인했는데 모든 값을 올바르게 받았습니다.

내 스위치가 변경되지 않는 이유는 누구에게 말해 줄 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

더 이상 코드가 필요하면 알려주세요.

답변

2

idData의 색인 (19 == x)에서 false/NO 즉 0으로 개체를 확인하고 있습니다. 인덱스 0에있는 객체는 nil이 아니므로 항상 스위치를 설정합니다. 그 행은 아마 다음과 같아야합니다 :

if ([[idData objectAtIndex:19] intValue] == x) 
관련 문제