Objective c NSArray from NSString of values vs NSArray of NSStrings

Objective c NSArray from NSString of values vs NSArray of NSStrings,objective-c,Objective C,考虑这段简单的演示代码,它旨在提供一种为UIButtons创建颜色渐变数组的简单方法: NSString *gradientString=@"#b62f5a, #b32755, #b01f4f, #ad1449, #aa0444"; NSArray *gradientArray = [gradientString componentsSeparatedByString:@","]; NSArray *newGradientArray= [NSArray arrayWi

考虑这段简单的演示代码,它旨在提供一种为UIButtons创建颜色渐变数组的简单方法:

    NSString *gradientString=@"#b62f5a, #b32755, #b01f4f, #ad1449, #aa0444";
    NSArray *gradientArray = [gradientString componentsSeparatedByString:@","];

    NSArray *newGradientArray=  [NSArray arrayWithObjects: @"#b62f5a", @"#b32755", @"#b01f4f", @"#ad1449", @"#aa0444", nil]; // works

    NSMutableArray *final=[NSMutableArray array];
    for(id cstr in newGradientArray){
        [final addObject:(id)[[self colorFromHexString:cstr] CGColor]];
    }
    [final addObject:[NSNull null]];

    btn.titleLabel.textColor=[UIColor whiteColor];
    // Set the button Background Color
    CAGradientLayer *btnGradient = [CAGradientLayer layer];
    btnGradient.frame = btn.bounds;
    btnGradient.colors = final;
    btnGradient.opacity=0.9f;
// etc, etc button code below
如上所示,使用:

    for(id cstr in newGradientArray)
这是正确的。对以下内容做一个小改动:

    for(id cstr in gradientArray)
不起作用

作为参考,这是colorFromHexString:

- (UIColor *)colorFromHexString:(NSString *)hexString {
    unsigned rgbValue = 0;
    hexString=hexString.uppercaseString;
    NSScanner *scanner = [NSScanner scannerWithString:hexString];
    [scanner setScanLocation:1]; // bypass '#' character
    [scanner scanHexInt:&rgbValue];
    return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
}

问题在于前两行

NSString *gradientString=@"#b62f5a, #b32755, #b01f4f, #ad1449, #aa0444";
NSArray *gradientArray = [gradientString componentsSeparatedByString:@","];
梯度阵列包含:
[@“#b62f5a”、@“#b32755”、@“#b01f4f”、@“#ad1449”、@“#aa0444”]

删除
@“#b62f5a、#b32755、#b01f4f、#ad1449、#aa0444”中的所有空格
,它应该可以正常工作


编辑:或根据rmaddy的建议,将分隔符更改为
@“,”

,或将分隔符更改为
@“,”