“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;
}
答案 0 :(得分:6)
你不能打印一个NSNumber,就像它是一个int,因为它不是一个int,而是一个包装int的对象。而是使用%@格式说明符:
NSLog(@"random rowNumber: %@ ", rowNumber);
或者使用intValue方法:
NSLog(@"random rowNumber: %d ", [rowNumber intValue]);
答案 1 :(得分:3)
NSString
提供%@
作为允许打印对象的格式。你应该改变这一行:
NSLog(@"random rowNumber: %d ", rowNumber);
到
NSLog(@"random rowNumber: %@ ", rowNumber);
原样的顶行将打印NSNumber
对象的内存地址。在实践中,这可能是一个随机数,但不是你想要的方式。 ; - )