【发布时间】:2014-02-22 22:17:41
【问题描述】:
在 iOS Objetive-C 中,我试图获取用户在文本字段中键入的数字,以设置 C 中随机数生成函数的上限。
- (IBAction)pushTheButton2:(id)sender {
u_int32_t upperBound = (u_int32_t) textField3.text;
textField4.text = [NSString stringWithFormat:@"%d", arc4random_uniform(upperBound)];
}
输出是一个没有意义的巨大数字。为了测试函数是否有效,如果我硬编码 arc4random_uniform 函数中的实际上限,例如 arc4random_uniform(5),那么它就有效!
我认为这可能是某种文字转换,因此我尝试使用 u_int32_t 进行此操作,但仍无法输出正确的范围。
有人可以帮忙吗?谢谢
【问题讨论】:
-
NSTextField to uint16_t 的可能重复项
-
其他人已经给你完整的答案了。将来,请尝试自己调试代码。在分配上界后设置一个断点,并检查该值。您应该知道类型转换和类型转换是两件不同的事情。当您将某些内容强制转换为另一种类型时,它不会将其转换,它只是将值“填充”到另一种类型的变量中,而不会发出编译器警告。您不能将 NSString 类型强制转换为任何整数值。您必须调用转换方法,如 intValue 或 integerValue,如下面的 2 个答案所述。
标签: ios objective-c cocoa random