2009-08-26 6 views
2

ここでは私のコードです:CGFloatアレイヘルプ - iPhone開発

CGFloat components[8];//[8];// = { 0.6, 0.6, 0.6, 0.5, 0.4, 0.4, 0.4, 0.5 }; 
if ([appDelegate.graphType isEqualToString:@"response"]) 
{ 
    CGFloat components[8] = { 0.2, 0.2, 0.2, 0.5, 0.5, 0.5, 0.5, 0.5 }; 
} 
else 
{ 
    if ([appDelegate.graphType isEqualToString:@"uptime"]) 
    { 
     CGFloat components[8] = { 0.694, 0.855, 0.961, 0.5, 0.188, 0.588, 0.906, 0.5 }; 
    } 
    else 
    { 
     CGFloat components[8] = { 0.694, 0.855, 0.961, 0.5, 0.188, 0.588, 0.906, 0.5 }; 
    } 
} 

だから、基本的に、私は別のグラフの種類に基づいて異なるグラデーションを描きたいです。しかし、xCodeは、if/elseステートメントからのCGFloatコンポーネント[8]が使用されておらず、その値を無視していることを示しています。問題が何であるか

答えて

9

各if/elseブロックで新しいコンポーネント配列を宣言しています。これをしたくない場合は、既に宣言されているコンポーネント配列に値を代入したいだけです。このような

何か作業をする必要があります:それはこのように動作していない

CGFloat components[8]; 

const CGFloat components1[8] = { 0.2, 0.2, 0.2, 0.5, 0.5, 0.5, 0.5, 0.5 }; 
const CGGloat components2[8] = { 0.694, 0.855, 0.961, 0.5, 0.188, 0.588, 0.906, 0.5 }; 
const CGFloat components3[8] = { 0.694, 0.855, 0.961, 0.5, 0.188, 0.588, 0.906, 0.5 }; 

if ([appDelegate.graphType isEqualToString:@"response"]) 
{ 
    memcpy(components,components1, 8*sizeof(CGFloat)); 
} 
else 
{ 
    if ([appDelegate.graphType isEqualToString:@"uptime"]) 
    { 
      memcpy(components,components2, 8*sizeof(CGFloat)); 
    } 
    else 
    { 
      memcpy(components,components3, 8*sizeof(CGFloat)); 
    } 
} 
+0

、私は前にそれを試してみました。それはコンポーネント行のエラーを報告します – Mladen

+0

もちろん、そうではありませんでした。宣言以外の配列は初期化できません。 memcpyを使用するソースを編集しました。これはうまくいくかもしれません。 –

+0

これで動作します。ありがとう :) – Mladen