Новичок!мое приложение ломается в операторе if: NSCFString stringValue]: нераспознанный селектор, отправленный экземпляру - PullRequest
2 голосов
/ 06 февраля 2011

Я слежу за классом Stanford CS193P и пытаюсь выполнить задание 2. Теперь я часами смотрел на одно и то же сообщение об ошибке:

-[NSCFString stringValue]: unrecognized selector sent to instance 0x4b373e0,

при попытке бесконечного пересмотра кода

Этот метод работает следующим образом:

+ (double)evaluateExpression:(id)anExpression
          usingVariableValues:(NSDictionary *)variables;          
{   
    CalculatorBrain *evalBrain =[[CalculatorBrain alloc]init];
    for (id element in anExpression) {
        if([element isKindOfClass:[NSString class]]) {
        NSString *elementFirst=[element substringToIndex:1];
            if ([elementFirst isEqual:@"v"]) 
            {
                NSString *varLookUp = [element substringFromIndex:0];
                [evalBrain setOperand:[[variables objectForKey:varLookUp]doubleValue]];
            } 
            else 
            {
                [evalBrain performOperation:element];

            }
        }
        if ([element isKindOfClass:[NSNumber class]]) {
            [evalBrain setOperand: [element doubleValue]];
        }   
    }
    return [evalBrain operand];

}   

он находится в операторе

if ([elementFirst isEqual:@"v"]) 

, программа вылетает.

Благодарен всем советам!

Ответы [ 2 ]

0 голосов
/ 06 февраля 2011

Вот результат NSLog для elementfirst:

2011-02-06 16:00:11.554 Calculator[14160:207] elementfirst: +

это правильно показывает, что я нажал клавишу '+', которая не равна 'v', и программа должна перейти в блок else.К сожалению, он падает вместо ...

0 голосов
/ 06 февраля 2011

Попробуйте

if ([elementFirst isEqualToString:@"v"])

вместо.

...