2011-03-14 29 views
1

我生成一个文本字段中输入以下代码,并设置primeNum:试图设置文本框的问题

int primeNum = 1+(arc4random() & 59); 

[num_1Field setText : [NSString stringWithFormat : @"%2d", primeNum]]; 

这整数值显示为它应该。但是,如果我将随机数字添加到数组中,对其进行排序并使用排序的数组设置相同的文本字段,但我没有得到我期望的整数值。我的代码如下:

NSMutableArray *array = [NSMutableArray arrayWithCapacity : 5]; 

[array addObject: [NSNumber numberWithInteger : primeNum]]; 

[array addObject: [NSNumber numberWithInteger : randNum_2]]; 

... 

[array sortUsingSelector:@selector(compare:)]; 

[num_2Field setText : [NSString stringWithFormat : @"%2d", [array objectAtIndex : 0]]]; 

因为primeNum和[array objectAtIndex:1]都是整数值,我认为我的代码会工作,但显然事实并非如此。我可以使用NSLog()打印出我的排序数组,并获得正确的排序结果,所以我知道数据在数组中。我无法正确地将其设置到我的文本字段中。任何建议将不胜感激。

回答

2

[array objectAtIndex : 0]不包含整数;它包含一个NSNumber。 NSNumber是一个对象类型;要打印出对象类型的值,您需要“%@”,而不是“%2d”。在这种情况下,虽然,我会用:

[num_2Field setText : [NSString stringWithFormat : @"%2d", [[array objectAtIndex : 0] intValue]]; 

intValue方法将返回你想要的整数。

+1

@Gendolkari非常感谢您的帮助。 此行不起作用: [num_1Field setText:[NSString stringWithFormat:@“%2d”,[array objectAtIndex:0] intValue]]; 但是这条线确实工作。 [num_1Field setText:[NSString stringWithFormat:@“%@”,[array objectAtIndex:0]]]; 再次感谢您的帮助。 – 2011-03-15 01:24:52