0

构建了一个 iPhone 应用程序,该应用程序在按下按钮时为标签生成随机数。

它工作正常,但我输入的任何值似乎都不会限制生成的随机数的值。它始终是 9 位数字。

-(IBAction)genRandnum:(id)sender {

    NSNumber *randomNumber = [NSNumber numberWithInt: (arc4random() % 5) + 1];

    NSNumber *randomLabeltxt = [[NSString alloc] initWithFormat:@"It worked!", randomNumber];
    randLabel.text = [NSString stringWithFormat: @"%d", randomLabeltxt];
    [randomLabeltxt release];
}

如您所见,我在 % 符号后添加了 5,但它会生成 9 位数字。

4

1 回答 1

6
  1. NSNumber 是一个 Objective-C 对象,因此你应该使用%@它来显示它。%d显示一个 9 位数字,因为那是该 NSNumber 的地址。

  2. NSString 与 NSNumber 不同。

正确且简化的代码应如下所示:

int randomNumber = (arc4random() % 5) + 1;
// no need to create an NSNumber if you do not need to store it into an NS container.

randLabel.text = [NSString stringWithFormat:@"It worked! %d", randomNumber];
// no need to create an intermediate NSString variable.
//  you can directly assign the string to the label's text.
于 2010-10-05T09:48:02.337 回答