J'ai une méthode de classe censée prendre un objet et remplir quelques valeurs en place. C'est au stade de la démonstration fonctionnelle, donc la mise en œuvre sera meilleure plus tard. En ce moment je voudrais juste que cela fonctionne.Portée Problème: double matrice non accessible dans l'instruction if
Dans le code ci-dessous, l'entierID districtID est transmis avec succès aux instructions if. Le double tableau rgb ne le place pas dans la portée de l'instruction if. Les valeurs définies lors de l'initialisation font tout le chemin jusqu'au districtPoint.color sans être définies dans l'instruction if.
Le code ci-dessous ne sera pas compilé tel quel. Je voudrais savoir comment obtenir la variable rgb à être visible dans la portée de l'instruction if.
(note: J'ai essayé la solution naïve d'initialisation des variables à l'intérieur de l'instruction if Ceci efface l'erreur, mais ne laissez pas les nouvelles variables rgb de la si la portée.)
// 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];
}
Ceci n'est pas une question Objective-C. Ce n'est pas une question à portée variable. Et cela n'a rien à voir avec iOS non plus. C'est une simple question de langage C. – matt