2012-05-02 18 views
-1

私はiPhoneの初心者ですが、以下に示すランタイムエラーが発生しました。 getColorメソッドでオブジェクトを渡すと "textView.textColor = [self getColor:appDelegate.pickcolor];"私は範囲外の実行時エラーを解決するにはどうすればいいですか?

がキャッチされない例外により 'NSRangeException' にアプリを終了エラーを取得し、理由: ' - [__ NSCFConstantString substringWithRange:]:範囲外の範囲またはインデックス'

- (UIColor *) getColor: (NSString *) hexColor 
{ 
    //NSLog(@"Calling Getcolor.."); 
    unsigned int red, green, blue; 
    NSRange range; 
    range.length = 2; 

    range.location = 0; 
    [[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&red]; 
    //NSLog(@"\n\tRed :%d\n",red); 
    range.location = 2; 
    [[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&green]; 
    //NSLog(@"\n\tgreen :%d\n",green); 
    range.location = 4; 
    [[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&blue]; 
    //NSLog(@"\n\tblue :%d\n",blue); 
    return [UIColor colorWithRed:(float)(red/255.0f) green:(float)(green/255.0f) blue:(float)(blue/255.0f) alpha:1.0f]; 
} 

はどんな提案を与え、ソリューション

+0

メソッドに渡すhexColor文字列が6文字以上であることは確かですか? – jonkroll

+0

文字列はどのように見えますか?あなたはそれをログに記録しようとしましたか、それともデバッガを調べてみましたか? –

答えて

2

多分、6桁の文字列は6文字以上ではないでしょうか?

メソッドの開始時に健全性チェックを追加して、そのシナリオをキャッチすることができます。

- (UIColor *) getColor: (NSString *) hexColor 
{ 
    if ([hexColor length] < 6) 
     return nil; 

    // ... 
} 
+0

wooow great私のエラーはあなたにそんなに感謝します。 – user1369211

関連する問題