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

NSNumber を int のように出力することはできません。これは 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 に答える