我正在学习iTunes U& S的CS193P课程。有一个与作业#2(可编程计算器)相关的问题。我看到关于这个主题的其他问答,但没有一个直接解决我的问题。希望有人可以提供帮助。
在作业中,它需要一个方法
+ (double)runProgram:(id)program usingVariableValues:(NSDictionary *)variableValues;
使用NSDictionary(不可变类)作为参数。字典包含变量名(键)和相应的值(各种类型的数字)。这些值来自于按下称为“测试1”,“测试2”和“测试3”的3个特殊键中的一个。我可以第一次将值放入字典中,但是如果用户按下第二次或第三次测试的密钥,则无法找到将它们放入其中的方法。我似乎无法更改字典中的值或破坏字典(dealloc和发布不适用于在XCode 4.3 / IOS 5中打开ARC),所以我可以创建一个新的。我觉得我必须遗漏一些明显但却不知道的东西。任何有关我如何做以上任何一项的帮助都将不胜感激。
(我意识到我可以使用NSDictionary的可变版本,但是作业明确指出使用不可变版本 - 如果我正确理解它。)
答案 0 :(得分:1)
您应该在针对这些按钮的操作中创建NSDictionary *对象。您可以执行一个采取发件人或三个操作的操作,这两个操作都可以。在那个方法/那些你需要创建NSDictionary的方法中,你可以分配initWithObjectsAndKeys,或者你可以创建NSMutableDictionary并添加它。然后在结束时,您应该通过调用[CalculatorBrain descriptionOfProgram:self.brain.program usingVariableValues:variableValues];
您使用NSDictionary的可变版本是正确的,但这只是您的descriptionOfProgram的参数:usingVariableValues:method。当您按下按钮时,您可以按照自己的方式创建词典。希望有所帮助,我刚刚完成了这项任务,所以我很乐意澄清。