2011-12-20 15 views
0

:私はプログラムがクラッシュしvariableValuesのためにそれをnilのオブジェクトを渡すと発生する例外がある場合は例外:オブジェクトをすることはできませんnilの私は、この機能を持っている

+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues 
{ 
    NSMutableArray *stack = [CalculatorBrain programToStack:program]; 
    if (variableValues) { 
     NSSet *variables = [CalculatorBrain variablesUsedInProgram:program]; 
     NSUInteger index = 0; 
     for (id obj in [stack copy]) { 
      if ([variables containsObject:obj]) { 
       [stack replaceObjectAtIndex:index withObject:[variableValues valueForKey:obj]]; 
      } 
      index++; 
     } 
    }  
    return [self popOperandOffStack:stack];   
} 

をその私はできませんreplaceObjectAtIndex:withObject:nilを持ちますオブジェクト。なぜ例外が呼び出されているのか理解していますが、variableValuesがnilの場合は、ブロック全体が入力されないようにしてください。if (variableValues)あなたはNSDictionaryのがnilまだOBJのキーが含まれていないではないthatsの持つことができます

+0

は、それがクラッシュを引き起こしている 'popOperandOffStack'ではありませんあなたは確かにいますか? – dasblinkenlight

+0

そこにreplaceObjectAtIndex:withObject:を呼び出す必要はありません。 – birarda

+0

valueForKeyはそのキーのエントリがないので、nilで戻ってきます。 –

答えて

0

.......

+0

これが呼び出される前にこのコードが実行されます: 'self.testVariableValues = nil'そして' [self.testVariableValues copy ] 'がその関数の引数として送られます – birarda

関連する問題