我是iPhone的初学者,我得到了如下所示的运行时错误。当我在getColor方法"textView.textColor=[self getColor:appDelegate.pickcolor];"中传递对象时我收到错误
由于未捕获的异常"NSRangeException"而终止应用,原因:"-[__NSCFConstantString 子字符串与范围:]:范围或索引超出范围"
- (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(@"ntRed :%dn",red);
range.location = 2;
[[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&green];
//NSLog(@"ntgreen :%dn",green);
range.location = 4;
[[NSScanner scannerWithString:[hexColor substringWithRange:range]] scanHexInt:&blue];
//NSLog(@"ntblue :%dn",blue);
return [UIColor colorWithRed:(float)(red/255.0f) green:(float)(green/255.0f) blue:(float)(blue/255.0f) alpha:1.0f];
}
给出任何建议和解决方案
也许十六进制字符串不是 6 个字符或更多?
可以在方法的开头添加健全性检查以捕获该方案。
- (UIColor *) getColor: (NSString *) hexColor
{
if ([hexColor length] < 6)
return nil;
// ...
}