2016-01-28 7 views
-1

Пожалуйста, проверьте ниже часть кода и помочь мне решить предупреждение ..Несовместимые типы указателей, относящие «UIColor» от NSString

theGraphSubDataObj2.subDataColor = [self hexStringFromColor:[clrDic valueForKey:key]] ; 

    - (NSString *)hexStringFromColor:(UIColor *)color { 
    const CGFloat *components = CGColorGetComponents(color.CGColor); 

    CGFloat r = components[0]; 
    CGFloat g = components[1]; 
    CGFloat b = components[2]; 

    return [NSString stringWithFormat:@"#%02lX%02lX%02lX", 
      lroundf(r * 255), 
      lroundf(g * 255), 
      lroundf(b * 255)]; 
} 
+2

В догадке, 'subDataColor' хочет UIColor не строку, так что вам не нужен вызов' hexStringFromColor' – Paulw11

+1

Дон» t бесполезно использовать 'valueForKey:' для получения значения из словаря. Используйте 'objectForKey:', если у вас нет конкретной необходимости использовать KVC. – rmaddy

+0

И поскольку все и их собака неправильно используют valueForKey, не могли бы вы рассказать нам, кто сказал вам использовать valueForKey? Так что, может быть, эту бессмыслицу можно искоренить раз и навсегда? Разве не clearDic [key] намного приятнее? – gnasher729

ответ

1

Просто измените строку ниже кода

theGraphSubDataObj2.subDataColor = [clrDic objectForKey:key] ; 

As [clrDic valueForKey:key] возвращает UIColor и subDataColor объекта также UIColor, который мы можем назначить.

Вы назначаете NSString ([self hexStringFromColor:[clrDic valueForKey:key]]) в UIColor (subDataColor из Object)

+0

Исправьте этот ответ, чтобы он использовал 'objectForKey:' вместо неправильного использования 'valueForKey:'. – rmaddy

Смежные вопросы