【问题标题】:cs193p Assignment 2cs193p 作业 2
【发布时间】:2012-03-15 23:23:01
【问题描述】:

我正在 iTunes U 上学习 CS193P 课程,并且有一个与作业 #2(可编程计算器)相关的问题。我看到有关此主题的其他 Q/A,但没有直接解决我的问题。希望有人能帮忙。

在赋值中,它调用了一个方法

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

它使用 NSDictionary(不可变类型)作为参数。字典要包含变量名(键)和对应的值(各种类型的数字)。这些值来自按三个特殊键之一,称为“测试 1”、“测试 2”和“测试 3”。我可以第一次将值放入字典,但如果用户按下键进行第二次或第三次测试,我无法找到将它们放入字典的方法。我似乎无法更改字典中的值或破坏字典(dealloc 和 release 不适用于 XCode 4.3/IOS 5 中打开的 ARC),因此我可以创建一个新字典。我觉得我一定错过了一些明显的东西,但不知道是什么。任何有关我如何做上述任何一项的帮助都将不胜感激。

(我意识到我可以使用 NSDictionary 的可变版本,但作业特别说明使用不可变版本 - 如果我理解正确的话)。

【问题讨论】:

  • 您的代码目前是什么样的?你的Test 1 是如何工作的,而Test 2 却不行?两者有什么不同?
  • 测试 1 和测试 2 之间没有区别,只是它们使用不同的值(相同的键)启动 NSDictionary。用户可以按任何顺序按下 3 个测试键 - 因此,如果测试 1 是第一个,它可以工作,但测试 2 不能。如果测试 2 是第一个,它可以工作,但测试 1 不行。第二组值不会进入字典。那是我的问题。
  • 很好的说明,谢谢;不过恐怕您需要显示更多代码才能发现问题。

标签: objective-c


【解决方案1】:

您应该在您的操作中为这些按钮创建一个 NSDictionary * 对象。您可以有一个操作需要一个发件人或三个操作,任何一个都可以。在那个方法/那些方法中你需要创建一个 NSDictionary,你可以分配 initWithObjectsAndKeys,或者你可以作为 NSMutableDictionary 并添加到它。然后最后你应该通过调用 [CalculatorBrain descriptionOfProgram:self.brain.program usingVariableValues:variableValues]; 将这些值传递给方法

您使用可变版本的 NSDictionary 是对的,但这只是您的 descriptionOfProgram:usingVariableValues: 方法的参数。当您按下按钮时,您可以以任何您想要的方式创建字典。希望对您有所帮助,我前几天刚刚完成了这项任务,所以很高兴澄清一下。

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多