2013-02-14 2 views
0

개체를 가져와 몇 개의 값을 채우는 클래스 메서드가 있습니다. 이것은 기능적 데모 단계에 있으므로 나중에 구현하는 것이 좋습니다. 지금 당장이 일을하고 싶습니다.범위 문제 : if 문에서 double 배열에 액세스 할 수 없습니다.

아래 코드에서 districtID 정수는 if 문에 성공적으로 전달됩니다. rgb double 배열은 if 문 범위로 만들지 않습니다. 초기화시 설정 한 값은 if 문 내부에서 설정하지 않고도 districtPoint.color로 끝납니다.

아래 코드는 그대로 컴파일되지 않습니다. if 문 범위 내에서 rgb 변수를 볼 수있는 방법을 알고 싶습니다.

(참고 :. 나는이 오류를 지우는 경우 문 내에서 변수를 초기화하는 순진 솔루션을 시도하지만, 경우 범위를 벗어난 새로운 RGB 변수를 허용하지 않습니다)이있다

// This method populates properties 
+(void)setContantPropertiesForID:(DistrictPoint *)districtPoint 
{ 
    int districtID = [districtPoint.districtID intValue]; 
    double rgb[3] = {0,0,0}; 

    if (districtID == 1) { 
     districtPoint.title = @"District 1"; 
     rgb = {1.0,0.0,0.0};     // error is expected expression 
    } else if (districtID == 2) { 
     districtPoint.title = @"District 1"; 
     rgb = {0.0,1.0,0.0}; 
    } else if (districtID == 3) { 
     districtPoint.title = @"District 1"; 
     rgb = {0.0,0.0,1.0}; 
    } else { 
     districtPoint.title = nil; 
     rgb = {1.0,1.0,1.0};     // error condition 
    } 

    districtPoint.color = [UIColor colorWithRed:rgb[0] green:rgb[1] blue:rgb[2] alpha:0.5]; 
} 
+2

이것은 Objective-C 질문이 아닙니다. 그것은 가변 범위 질문이 아닙니다. 그리고 iOS와는 아무런 관련이 없습니다. 그것은 간단한 C 언어 질문입니다. – matt

답변

2

if 문과 아무 관련이 없습니다. 중괄호 표기법을 사용하여 초기화 할 때만 배열의 요소를 설정할 수 있습니다 (실제로 코드의 앞 부분 에서처럼).

+0

고맙습니다. 저는 45 분 동안 저것과 싸우고 있습니다. 간단한 질문, 간단한 대답. StackOverflow가 나를 받아들이 자마자 받아 들일거야 – Potter

+0

Objective-C를 망치기 전에 C를 아는 것도 좋은 생각이다. 나는 항상 Kernighan과 Ritchie의 복사본을 항상 보관하는 것이 좋습니다. 나는 확실히한다! – matt

관련 문제