2012-04-13 3 views
0

Выполнение класса Stanford 193 ITunes U. Я пытаюсь скопировать NSArray со строками и числами. Я хочу заменить определенные строки объектами NSDictionary. Я понимаю, что этот метод будет быстрее, чем «replaceObjectAtIndex»Я пытаюсь скопировать массив, но новый (изменяемый) массив не заселен

У меня есть проблема в том, что ничего не получается скопировать в стек. Значения присутствуют в «программе». Скопировано в элемент. Но все значения в стеке равны нулю. Этот вопрос связан не с извлечением элементов словаря. NOTHING копируется в массив NSMutable, независимо от того, есть ли переменные, которые нужно заменить. Я вставил точку останова и контролировал все переменные (program: index, item, stack: index), когда он проходит через цикл.

Что особенно смущает то, что в какой-то момент эта функция работала, а теперь это не так.

+(double)runProgram:(id) program 
usingVariableValues:(NSDictionary *)variableValues; 
{ 
    NSMutableArray *stack; 

     for (id item in program) 
     { 
      if ([item isKindOfClass:[NSNumber class]]) [stack addObject:item]; 
      //above line because comparing numbers to strings throws exception 
      else if (([item isEqualToString:@"x"]) || 
         ([item isEqualToString:@"a"]) || 
         ([item isEqualToString:@"b"])) 
       { 
        //if a variable is used, copy the value to program instead of the key 
        id replacement =[variableValues objectForKey:item]; 
        if (!replacement) replacement = [NSNumber numberWithDouble:0.0]; 
        [stack addObject:replacement]; 
       } 
      else [stack addObject:item]; //if not a variable, just copy the item 
     } 
    //stack should now be a mutable copy of program, but with variables replaced 

    return [self popOperandOffStack:stack]; 
} //runProgram 

ответ

0

Вы не выделяли какую-либо память вашей переменной стека, вы пытаетесь добавить объекты к указателю на нуль.

NSMutableArray* stack = [[NSMutableArray alloc] init]; 
+0

И я чувствую себя таким умным сейчас, но большое вам спасибо. Это исправить. – user1330705

+2

@ user1330705 Если ответ tronbabylove помог вам, пожалуйста, примите его. Знаешь, галочка ... – trudyscousin