NSNumberの覚え書き

Last-modified: 2014-01-10 (金) 19:14:40

初期化

C型の数値をNSNumberへラップ

[array	addObject:@100];		//int
[array	addObject:@24U];		//unigned
[array	addObject:@11L];		//long
[array	addObject:@150LL];		//long long
[array	addObject:@3.13159f];		//float
[array	addObject:@3.1415926535];	//double
[array	addObject:@YES];		//BOOL

C変数のボクシング

int val1 = 10;
long val2 = 11L;
float val3 = 3.141592f;
NSNumber *num1 = @(val1);
// 同じ事をする NSNumber *num =[NSNumber numberWithInt: val1];
NSNumber *num2 = @(val2);
NSNumber *num3 = @(val3);

数式のボクシング

double radian = 180.0 / M_PI;
NSNumber *num = @(radian - M_PI);

enum定数やconst定数などのボクシング

#pragma

typedef enum { // 列挙型
	Zero,
	One,
	Two,
	Three
} Numbers;
const int HAPPY_NUMBER = 8;
NSNumber *num1 = @(Two);
NSNumber *num2 = @(HAPPY_NUMBER);

操作

ラップしないと、コレクションクラスへ格納できない

NSNumber *numObj = [NSNumber numberWithFloat:3.1416f];
[anArray addObject:numObj];

リテラル記法へメソッドとドット記法の適用

NSString *strValue1 = [@11L stringValue];
NSString *strValue2 = @(3.141592f).stringValue;
double root3 = 1.732;
NSString *strValue3 = @(root3).stringValue;

リテラルから文字列へ変換

const char *cString = [[@(3.141592f) stringValue] UTF8String];
NSString *NumberStrng = [NSString stringWithUTF8String:cString];
float aFloat = [NumberStrng floatValue];
NSNumber *aFloatNumber = [NSNumber numberWithFloat:aFloat];