2013-02-14 87 views
0

我有一个类方法,应该采取一个对象并填充一些值。这正处于功能演示阶段,所以稍后会更好。现在我只是想这个工作。作用域问题:在if语句中无法访问double数组

在下面的代码中,将regionID整数成功传递给if语句。 rgb double数组不会将其放入if语句范围中。在初始化时设置的值可以一直到达PointPoint.color,而不会在if语句中设置。

下面的代码不会按原样编译。我想知道如何让rgb变量在if语句范围内可见。

(注:我试过,如果声明此清除错误中初始化变量的天真的解决方案,但并没有让新的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 2013-02-14 02:50:53

回答

2

这有与if语句无关。你可以使用花括号来设置一个数组的元素,只有在初始化的时候(就像你在做的那样,实际上是在代码的早些时候)。

+0

谢谢你,我一直在打那个45分钟。简单的问题,简单的答案。 StackOverflow让我尽快接受 – Potter 2013-02-14 02:53:08

+0

在搞定Objective-C之前了解C是个好主意。我始终建议您随时保留Kernighan和Ritchie的副本。我当然可以! – matt 2013-02-14 03:20:29