2011-02-06 57 views
2

我下面斯坦福CS193P類,我試圖做任務2.我現在有幾個小時盯着同樣的錯誤信息:新手上路! NSCFString stringValue的]:無法識別的選擇發送到實例

我的應用程序中的if語句分解
-[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"]) 

程序崩潰。

感激任何提示!

+0

`elementFirst`的打印值將有所幫助。 – 2011-02-06 14:45:09

+0

我不確定它爲什麼會出錯,但嘗試用[元素hasPrefix:@「v」]替換整個事物。如果substringToIndex或其他東西出現問題,它可能會有所幫助:P另外,你是否確定該錯誤在該語句中? – hauntsaninja 2011-02-06 15:22:42

+0

您可以嘗試記錄整個「anExpression」並繪製看看它是否崩潰的結果嗎?的NSLog(@ 「%@」,anExpression)。如果它崩潰了,那麼問題在於anExpression內容(它是什麼,一個數組,一個字典?)已被釋放。 – viggio24 2011-02-06 16:14:53

回答

0

嘗試

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

代替。

0

這裏是elementfirst的NSLog的結果:

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

它正確地顯示,我打的「+」鍵這不等於「V」,程序應該去別的塊。不幸的是它崩潰...

相關問題