Class

NSNumber

An object wrapper for primitive scalar numeric values. 原始的なスカラー数値に対するオブジェクトラッパー。

Declaration 宣言

class NSNumber : NSValue

Overview 概要

NSNumber is a subclass of NSValue that offers a value as any C scalar (numeric) type. It defines a set of methods specifically for setting and accessing the value as a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL. (Note that number objects do not necessarily preserve the type they are created with.) It also defines a compare(_:) method to determine the ordering of two NSNumber objects. NSNumberは、NSValueのサブクラスです、それは値を何らかのCスカラー(数値)型として提示します。それは一揃いのメソッドを定義します、とりわけ値への設定およびアクセスを、符号付きまたは符号無しのcharshort intintlong intlong long intfloat、またはdoubleとしてもしくはBOOLとして行うために。(数のオブジェクトは必ずしもそれらが作成されたところの型を保護する必要はないことに注意してください。)それはまたcompare(_:)メソッドを定義して、2つのNSNumberオブジェクトの順番付けを決定します。

NSNumber is “toll-free bridged” with its Core Foundation counterparts: CFNumber for integer and floating point values, and CFBoolean for Boolean values. See Toll-Free Bridging for more information on toll-free bridging. NSNumberは、それのCore Foundation相当物と「トールフリーブリッジ」されます:整数および浮動小数点値に対してCFNumber、そしてブール値に対してCFBoolean。トールフリーブリッジに関する更なる情報としてToll-Free Bridgingを見てください。

Value Conversions 値変換

NSNumber provides readonly properties that return the object’s stored value converted to a particular Boolean, integer, unsigned integer, or floating point C scalar type. Because numeric types have different storage capabilities, attempting to initialize with a value of one type and access the value of another type may produce an erroneous result—for example, initializing with a double value exceeding FLT_MAX and accessing its floatValue, or initializing with an negative integer value and accessing its uintValue. In some cases, attempting to initialize with a value of a type and access the value of another type may result in loss of precision—for example, initializing with a double value with many significant digits and accessing its floatValue, or initializing with a large integer value and accessing its int8Value. NSNumberは、いくつかの読出し専用プロパティを提供します、それらはある特定のブール値、整数、符号無し整数、または浮動小数点Cスカラー型に変換された、オブジェクトのもつ格納値を返します。数値型それらが異なるストレージ容量を持ちうることから、ある型の値で初期化して別の型の値にアクセスを試みることは、間違った結果を生成するかもしれません — 例えば、double値で初期化してFLT_MAXを越えることおよびそれのfloatValueにアクセスすること、または負整数で初期化してそれのuintValueにアクセスすること。いくつかの場合には、ある型の値で初期化して別の型の値にアクセスを試みることは正確さを失う結果になるかもしれません — 例えば、多くの有効桁をもつdouble値で初期化してそれのfloatValueにアクセスする、または大きな整数で初期化してそれのint8Valueにアクセスする。

An NSNumber object initialized with a value of a particular type accessing the converted value of a different kind of type, such as unsigned int and float, will convert its stored value to that converted type in the following ways: ある特定の型の値で初期化されるNSNumberオブジェクトに、異なる種類の型の変換値、例えばunsigned intおよびfloatでアクセスすると、それの格納値をその変換値へと以下の方法で変換します:

Table 1 NSNumber from Boolean Value Conversions 表 1 Boolean値からNSNumberに変換

Value

boolValue

intValue

uintValue

floatValue

false

false

0

0

0.0

true

true

1

1

1.0

Table 2 NSNumber from Integer Value Conversions 表 2 整数値からNSNumberに変換

Value

boolValue

intValue

uintValue

floatValue

0

false

0

0

0.0

1

true

1

1

1.0

-1

true

-1

invalid, erroneous result 無効、誤った結果

-1.0

Table 3 NSNumber from Unsigned Integer Value Conversions 表 3 符号なし整数値からNSNumberに変換

Value

boolValue

intValue

uintValue

floatValue

0

false

0

0

0.0

1

true

1

1

1.0

Table 4 NSNumber from Floating Point Value Conversions 表 4 浮動小数点値からNSNumberに変換

Value

boolValue

intValue

uintValue

floatValue

0.0

false

0

0

0.0

1.0

true

1

1

1.0

-1.0

true

-1

invalid, erroneous result 無効、誤った結果

-1.0

Subclassing Notes サブクラス作成の注意

As with any class cluster, subclasses of NSNumber must override the primitive methods of its superclass, NSValue. In addition, there are two requirements around the data type your subclass represents: 何らかのクラスクラスタでのように、NSNumberのサブクラスはそれのスーパークラス、NSValueの根本的メソッドをオーバーライドしなければなりません。加えて、あなたのサブクラスが表すデータ型を取り巻く2つの要件があります:

  1. Your implementation of objCType must return one of “c”, “C”, “s”, “S”, “i”, “I”, “l”, “L”, “q”, “Q”, “f”, and “d”. This is required for the other methods of NSNumber to behave correctly. あなたのobjCTypeの実装は、 “c”、“C”、“s”、“S”、“i”、“I”、“l”、“L”、“q”、“Q”、“f”、そして“d” の1つを返さなければなりません。これは、NSNumberの他のメソッドに振る舞いを正しくするよう要求します。

  2. Your subclass must override the accessor method that corresponds to the declared type—for example, if your implementation of objCType returns “i”, you must override int32Value.

Topics 話題

Initializing an NSNumber Object NSNumberオブジェクトを初期化する

Accessing Numeric Values 数値にアクセスする

Retrieving String Representations 文字列表現を回収する

Comparing NSNumber Objects NSNumberオブジェクトの比較

Number Validation 数の検証

Initializers イニシャライザ

See Also 参照

Value Wrappers and Transformations 値のラッパーと変換