1

“rowNumber” 的记录如下:79050688。"rowNumberAsInt" 被记录为16以下的数字。如何正确转换我的 int?

-(int)randomNumberGenerator{

int rowNumberAsInt;
NSNumber *rowNumber;

randomNumberPool = [[NSMutableArray alloc]initWithCapacity:16];

while (![randomNumberPool containsObject:rowNumber]) {
    rowNumberAsInt = (arc4random() % 16);
    rowNumber = [NSNumber numberWithInt:rowNumberAsInt];
    [randomNumberPool addObject:rowNumber];     
}

NSLog(@"random rowNumber: %d ", rowNumber);
NSLog(@"random rowNumberAsInt: %d ", rowNumberAsInt);
return rowNumberAsInt;

}

4

2 回答 2

6

你不能像 int 一样打印 NSNumber,因为它不是 int,而是包装 int 的对象。请改用 %@ 格式说明符:

NSLog(@"random rowNumber: %@ ", rowNumber);

或者使用 intValue 方法:

NSLog(@"random rowNumber: %d ", [rowNumber intValue]);
于 2012-09-16T00:27:59.103 回答
3

NSString提供%@作为允许打印对象的格式。你应该改变这一行:

NSLog(@"random rowNumber: %d ", rowNumber);

NSLog(@"random rowNumber: %@ ", rowNumber);

第一行将打印NSNumber对象的内存地址。在实践中,这可能是一个随机数,但不是您想要的方式。;-)

于 2012-09-16T00:24:32.437 回答