我一直在到处寻找这个问题的答案,但我似乎无法弄清楚如何生成随机数并使其出现在我创建的 UILabel
中。我对编程很陌生,如果这是一个愚蠢的问题,我很抱歉。
在遇到数百万个错误后,我确定我通常使用的函数 self.titleLabel.text = @"WHATEVER"
将无法工作,除非它被设置为一个字符串。这是我将我的弧随机整数转换为字符串的努力,但我不断收到错误。
NSInteger fish;
fish = (arc4random()%100)+1;
NSNumber *myNum = @(fish);
NSString* myString = @(fish);
self.titleLabel.text = myString;
(这次我不再在 viewcontroller.m 页面上收到错误,但是一旦构建成功,我收到一个新错误,说我的 main.m 有问题,我以前从未尝试过编辑它。
这是它的样子:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
错误说:
Thread 1: signal SIGABRT.
我的输出窗口变得疯狂。
最佳答案
你是对的。您必须将标签文本设置为字符串。
您需要 stringWithFormat
函数。
这一行:
NSString* myString = @(fish);
没有意义。它将 fish 转换为 NSNumber,而不是字符串。该代码将生成有关类型不匹配的编译器警告,然后在您尝试引用 myString 时崩溃。 (实际上,更仔细地查看您的代码,fish 已经是一个 NSNumber,所以我不确定该代码到底做了什么。无论如何都没有什么好处。)
你想要这样的东西:
int fish = arc4random_uniform(100)+1;
self.titleLabel.text = [NSString stringWithFormat: @"%d", fish];
NSString 类方法 stringWithFormat 将格式字符串和可变数量的参数作为输入,创建并返回一个字符串作为输出。 “%d”格式字符串被替换为整数值。
编辑:
正如 rmaddy 指出的那样,您应该使用 arc4random_uniform()
而不是 arc4random() 和模运算符。使用模运算符会导致“模偏差”,结果是某些数字比其他数字更常见。
关于ios - objective-c 中UILabel的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104663/