macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

NSNumberクラス

INDEX>Foundation>

*

apple(OS X)
apple(iOS)

解説

継承 NSObject
準拠 NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 OS X 10.0以降
iOS 2.0以降
定義 NSDecimalNumber.h
NSValue.h

概要

char、short int、int、long int、long long int、float、double、BOOLなどを表すクラスです。NSArrayNSDictionaryは数値を直接内包できませんので、NSNumberクラスオブジェクトにして渡すことになります。

作成

BOOL値でNSNumberを作成するには(+ numberWithBool)メソッドを使います。

char値でNSNumberを作成するには(+ numberWithChar)メソッドを使います。

double値でNSNumberを作成するには(+ numberWithDouble)メソッドを使います。

float値でNSNumberを作成するには(+ numberWithFloat)メソッドを使います。

int値でNSNumberを作成するには(+ numberWithInt)メソッドを使います。

NSInteger値でNSNumberを作成するには(+ numberWithInteger)メソッドを使います。
long値でNSNumberを作成するには(+ numberWithLong)メソッドを使います。
long long値でNSNumberを作成するには(+ numberWithLongLong)メソッドを使います。
short値でNSNumberを作成するには(+ numberWithShort)メソッドを使います。

unsigned char値でNSNumberを作成するには(+ numberWithUnsignedChar)メソッドを使います。
unsigned int値でNSNumberを作成するには(+ numberWithUnsignedInt)メソッドを使います。
NSUInteger値でNSNumberを作成するには(+ numberWithUnsignedInteger)メソッドを使います。
unsigned long値でNSNumberを作成するには(+ numberWithUnsignedLong)メソッドを使います。
unsigned long long値でNSNumberを作成するには(+ numberWithUnsignedLongLong)メソッドを使います。
unsigned short値でNSNumberを作成するには(+ numberWithUnsignedShort)メソッドを使います。

NSNumber *boolNumber = [NSNumber numberWithBool:YES];
NSNumber *charNumber = [NSNumber numberWithChar:127];

NSNumberオブジェクトの初期化

allocで作成した後、BOOL値でNSNumberを作成するには(– initWithBool)メソッドを使います。
allocで作成した後、char値でNSNumberを作成するには(– initWithChar)メソッドを使います。
allocで作成した後、double値でNSNumberを作成するには(– initWithDouble)メソッドを使います。
allocで作成した後、float値でNSNumberを作成するには(– initWithFloat)メソッドを使います。
allocで作成した後、int値でNSNumberを作成するには(– initWithInt)メソッドを使います。
allocで作成した後、NSInteger値でNSNumberを作成するには(– initWithInteger)メソッドを使います。
allocで作成した後、long値でNSNumberを作成するには(– initWithLong)メソッドを使います。
allocで作成した後、long long値でNSNumberを作成するには(– initWithLongLong)メソッドを使います。
allocで作成した後、short値でNSNumberを作成するには(– initWithShort)メソッドを使います。
allocで作成した後、char値でNSNumberを作成するには(– initWithUnsignedChar)メソッドを使います。
allocで作成した後、unsigned int値でNSNumberを作成するには(– initWithUnsignedInt)メソッドを使います。
allocで作成した後、NSUinteger値でNSNumberを作成するには(– initWithUnsignedInteger)メソッドを使います。
allocで作成した後、unsigned long値でNSNumberを作成するには(– initWithUnsignedLong)メソッドを使います。
allocで作成した後、unsigned long long値でNSNumberを作成するには(– initWithUnsignedLongLong)メソッドを使います。
allocで作成した後、unsigned short値でNSNumberを作成するには(– initWithUnsignedShort)メソッドを使います。


値へのアクセス

NSNumberオブジェクトからBOOL値を得るには(– boolValue)メソッドを使用します。
NSNumberオブジェクトから 値を得るには(– charValue)メソッドを使用します。

NSNumberオブジェクトからunsigned char値を得るには(– unsignedCharValue)メソッドを使用します。
NSNumberオブジェクトからdouble値を得るには(– doubleValue)メソッドを使用します。
NSNumberオブジェクトからfloat値を得るには(– floatValue)メソッドを使用します。
NSNumberオブジェクトからint値を得るには(– intValue)メソッドを使用します。
NSNumberオブジェクトからunsigned int値を得るには(– unsignedIntValue)メソッドを使用します。
NSNumberオブジェクトからNSInteger値を得るには(– integerValue)メソッドを使用します。
NSNumberオブジェクトからNSUInteger値を得るには(– unsignedIntegerValue)メソッドを使用します。
NSNumberオブジェクトからlong値を得るには(– longValue)メソッドを使用します。
NSNumberオブジェクトからunsigned long値を得るには(– unsignedLongValue)メソッドを使用します。
NSNumberオブジェクトからlong long値を得るには(– longLongValue)メソッドを使用します。
NSNumberオブジェクトからunsigned long long 値を得るには(– unsignedLongLongValue)メソッドを使用します。
NSNumberオブジェクトからshort値を得るには(– shortValue)メソッドを使用します。
NSNumberオブジェクトからunsigned short 値を得るには(– unsignedShortValue)メソッドを使用します。
NSNumberオブジェクトからNSDecimal値を得るには(– decimalValue)メソッドを使用します。

文字列で表現する

レシーバを文字列で取得するには(– stringValue)メソッドを使用します。ロケールを考慮して文字列にするには(– descriptionWithLocale)メソッドを使用します。

#pragma mark NSNumber
-(void)method019
{
    NSNumber *floatNumber = [NSNumber numberWithFloat:100.234];//32bit
    NSLog(@"%s %s ",__FUNCTION__,[floatNumber objCType]);
    
    NSLocale *jpLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja-JP"];
    
    NSLocale *frLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
    
    NSLog(@"%s %@ ",__FUNCTION__,[floatNumber descriptionWithLocale:jpLocale]);
    //=>-[OOOAppDelegate method019] 100.234 
    NSLog(@"%s %@ ",__FUNCTION__,[floatNumber descriptionWithLocale:frLocale]);
    //=>-[OOOAppDelegate method019] 100,234 
}

NSNumberオブジェクトの比較

レシーバと別のNSNumberオブジェクトがどちらが大きいかを比較するには(– compare)メソッドを使用します。レシーバと別のNSNumberオブジェクトが同じかどうかを調べるには(– isEqualToNumber)メソッドを使用します。

タイプ情報

NSNumberオブジェクトが持つ数値タイプの情報を取得するには(– objCType)メソッドを使用します。

リテラル

Xcode 4.4からNSNumberのリテラルが導入されました。サンプルでは以前のXcodeでも使用できるように従来からの表記をしていますが、新しい表記方法を使うことで、大幅に省略した書き方ができるようになります。

従来の表記方法

NSNumber *charNumber = [NSNumber numberWithChar:127];
NSNumber *floatNumber = [NSNumber numberWithFloat:2147483647];

新しい表記方法

NSNumber *charNumber = @127;
NSNumber *floatNumber = @2147483647.0f;

ただし、(iOS5.1 Xcode4.4)ではMacアプリケーションでは使える表記が、iOSアプリケーションでは使えないものがあるようです。徐々に使えるようになるといいですね。



適合するプロトコル

サブクラス化の注意

引数

参照

メソッド