由 iTunes U 提供的斯坦福 193 课程。我正在尝试复制带有字符串和数字的 NSArray。我想用 NSDictionary 对象替换某些字符串。我的理解是这种方法会比“replaceObjectAtIndex”更快
我遇到的问题是似乎没有任何东西被复制到堆栈中。这些值存在于“程序”中。被复制到项目。但是堆栈中的所有值都是空的。这个问题与检索字典项目无关。无论是否有要替换的变量,都不会将任何内容复制到 NSMutable 数组堆栈中。我插入了一个断点并监视所有变量(程序:索引,项目,堆栈:索引),因为它通过循环。
尤其令人抓狂的是,这个功能曾经有效,而现在却不行。
+(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