0

一点背景知识:我正在自学如何编写 iOS。所以我是初学者。我只是无法解决这个问题。

我有一个基本上应该在按钮上获取变量的方法,将该变量传递给我的变量转换方法。

变量转换方法只是应该经过一个预定义的NSDictionary,基本上是搜索变量并返回相关值。

然后使用该关联变量更新显示。

即如果 x 的值为 2,那么当我按下 x 时,屏幕应该只显示 2。我只是想自学 NSDictionary 和所有这些,所以任何帮助都会很棒。

- (IBAction)variablePressed:(id)sender {
    NSDictionary *values = [NSDictionary dictionaryWithObjectsAndKeys: 
                            [NSNumber numberWithInt:2], @"x",
                            [NSNumber numberWithInt:4], @"y",
                            [NSNumber numberWithInt:6], @"z", nil];
    double newValue = [self.brain convertVariable:[sender currentTitle] usingVariableValues:values];

  // NSLog([NSString stringWithFormat:@"%d", newValue]);
}

代码在与NSLog. 我把它注释掉了,因为我无法让它工作。

4

2 回答 2

2

尝试将 NSLog 语句更改为以下...

NSLog(@"newValue is %f", newValue);

NSLog 执行参数替换,因此不需要 stringWithFormat。

于 2012-04-07T09:39:23.250 回答
0

您没有在 stringWithFormat 中使用正确的变量替换。它试图将其读取为数字。这会导致从该内存位置读取的字节数不正确(或者我假设如此),并导致崩溃(这部分不是假设 xD)。%d 看起来应该表示“double”,但实际上表示“digit”(int、short 等)。将其更改为 %f (=float) 就可以了。

编辑如另一个答案中所述,NSLog 的工作方式与 stringWithFormat 相同(它直接采用格式字符串和参数)。您不需要将 stringWithFormat 传递给它。事实上,这样做会导致编译器警告可能不安全的字符串。

于 2012-04-07T12:23:53.413 回答