NSNumber
NSNumber型はプリミティブ型(int型,float型,BOOL型など)をオブジェクトとして扱いたい場合に使用します。一般的にラッパークラスと呼ばれます。
NSNumberのクラス階層
NSNumber型の生成
NSNumber型の生成サンプルです。
// short型→NSNumber型
NSNumber *num = [NSNumber numberWithShort:32767];
// int型→NSNumber型
NSNumber *num = [NSNumber numberWithInt:2147483647];
// long型→NSNumber型
NSNumber *num = [NSNumber numberWithLong:2147483647];
// float型→NSNumber型
NSNumber *num = [NSNumber numberWithFloat:42.195f];
// double型→NSNumber型
NSNumber *num = [NSNumber numberWithDouble:3.1415f];
// BOOL型→NSNumber型
NSNumber *num = [NSNumber numberWithBool:YES];
// char型→NSNumber型
NSNumber *num = [NSNumber numberWithChar:a];
NSNumberのメソッド
メソッド名 | 説明 |
---|---|
-(NSString*)stringValue | NSString型にキャストする (例)NSString *str = [num stringValue]; |
-(short)shortValue | short型にキャストする (例)short val = [num shortValue]; |
-(int)intValue | int型にキャストする (例)int val = [num intValue]; |
-(long)longValue | long型にキャストする (例)long val = [num longValue]; |
-(float)floatValue | float型にキャストする (例)float val = [num floatValue]; |
-(double)doubleValue | double型にキャストする (例)double val = [num doubleValue]; |
-(BOOL)boolValue | BOOL型にキャストする (例)BOOL val = [num boolValue]; |
-(char)charValue | char型にキャストする (例)char val = [num charValue]; |
-(BOOL) isEqualToNumber: (NSNumber *)aNumber |
同じかどうか比較する (例)BOOL b = [num1 isEqualToNumber:num2]; |
-(NSComparisonResult) compare: (NSNumber *)aNumber |
大小の比較する (例)NSComparisonResult c = [num1 compare:num2]; ※NSComparisonResultの定数: NSOrderedAscending:「num1 < num2」の状態 NSOrderedSame:「num1 == num2」の状態 NSOrderedDescending:「num1 > num2」の状態 |
主要なメソッドのみ掲載しています。
上記「NSNumberのクラス階層」にあるクラスのメソッドも使用できます。
数値をカンマ区切り形式にする
数値をカンマ区切り形式の文字列で取得したい場合は、数値をNSNumber型にした上で、NSNumberFormatterクラスを使用します。
以下が使用例です。
//NSNumber型の数値をカンマ区切りの小数点第2位までのフォーマットに変換する
NSNumber *val = [NSNumber numberWithInt:123];
NSNumberFormatter *fmt = [[[NSNumberFormatter alloc] init] autorelease];
[fmt setPositiveFormat:@"#,##0.00;0.00;-#,##0.00"];
NSString *str = [fmt stringForObjectValue:val];
※setPositiveFormatの形式を替えればお好みのフォーマットに出来ます。