ios - objective-c 中UILabel的随机数

标签 ios objective-c type-conversion

我一直在到处寻找这个问题的答案,但我似乎无法弄清楚如何生成随机数并使其出现在我创建的 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/

相关文章:

objective-c - 在模拟器中播放 - objective-c

c - ANSI C 中的 float 转换

objective-c - 在 GNUstep 中进行 IP 网络的标准方法是什么?

c# - 是否有等效于 C# 成员大括号初始化功能的 Objective-C/C++?

ios - Swift 3 Google Map 和 MapKit API - 如果用户当前位置已更新

ios - 从网络服务器接收更新到 iOS App 并同步数据

c++ - 无法将字符串类型转换为 bool C++

java - 将 3 个 RGB 整型转换为 1 个 0-1 double 型

ios - UINavigationcontroller PushViewController 无法获取下一个 Viewcontroller

iphone - 在 UIWebView 中使用进度条?