文書   >   Foundation   >   Date and Times   >   Date   >   NSNumber
クラス
NSNumber
原始的スカラー数値のオブジェクト・ラッパー。
概観
NSNumber は任意の C スカラー (数値) 型として値を提供する NSValue のサブクラスです。これは、値を符号付きまたは符号なしの char、short int、int、long int、long long int、float、または double として、または BOOL として設定およびアクセスするためのメソッドのセットを明確に定義します。(数値オブジェクトは、作成される型を保持するとは限りません。) また、compare(_:) メソッドを定義して、2 つの NSNumber オブジェクトの順序を決定します。
NSNumber は、Core Foundation で対応する部分である、整数と浮動小数点値の CFNumber とブール値の CFBoolean と "通話無料でブリッジ" されています。通話無料でブリッジの詳細については、通話無料でブリッジ を参照してください。
値の変換
NSNumber は、特定のブール値、整数、符号なし整数、または浮動小数点 C スカラ型に変換されたオブジェクトの格納値を返す読み取り専用プロパティを提供します。数値型には異なる保管機能があるため、ある型の値で初期化して別の型の値にアクセスしようとすると、誤った結果が生じる可能性があります。たとえば、FLT_MAX を超える double 値で初期化し、その floatValue にアクセスしたり、その uintValue にアクセスします。場合によっては、型の値で初期化しようとしたり、別の型の値にアクセスしようとすると精度が失われる可能性があります。たとえば、有効数字の多い double 値で初期化し、floatValue にアクセスするか、大きな整数値で初期化し、int8Value にアクセスします。
unsigned int や float などの異なる 種類 の型の変換値にアクセスする特定の型の値で初期化された NSNumber オブジェクトは、格納した値を以下の方法でその変換型に変換します。
表 1 ブール値から NSNumber に変換
Value | boolValue | intValue | uintValue | floatValue |
false | false | 0 | 0 | 0.0 |
true | true | 1 | 1 | 1.0 |
表 2 整数値から NSNumber に変換
Value | boolValue | intValue | uintValue | floatValue |
0 | false | 0 | 0 | 0.0 |
1 | true | 1 | 1 | 1.0 |
-1 | true | -1 | 無効、エラーの結果 | -1.0 |
表 3 符号なしの整数値から NSNumber に変換
Value | boolValue | intValue | uintValue | floatValue |
0 | false | 0 | 0 | 0.0 |
1 | true | 1 | 1 | 1.0 |
表 4 浮動小数点値から NSNumber に変換
Value | boolValue | intValue | uintValue | floatValue |
0 | false | 0 | 0 | 0.0 |
1 | true | 1 | 1 | 1.0 |
-1 | true | -1 | 無効、エラーの結果 | -1.0 |
サブクラス化する際の注意点
全てのクラスクラスタと同様に、NSNumber のサブクラスはそのスーパークラス NSValue の原始的メソッドをオーバーライドしなければなりません。さらに、サブクラスが表すデータ型には 2 つの要件があります。
- objCType の実装では、"c"、"C"、"s"、"S"、"i"、"I"、"l"、"L"、"q"、"Q"、"f"、そして "d" のうち 1 つを返さなければなりません。これは、NSNumber の他のメソッドが正しく動作するために必要です。
- サブクラスは宣言された型に対応するアクセサメソッドをオーバーライドしなければなりません。たとえば、objCType の実装が "i" を返す場合は、int32Value をオーバーライドしなければなりません。
トピックス
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
編集中
@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@
関連
以下からの継承
NSValue
以下に準拠
- CKRecordValue
- CVarArg
- Equatable
- ExpressibleByBooleanLiteral
- ExpressibleByFloatLiteral
- ExpressibleByIntegerLiteral
- Hashable
- NSFetchRequestResult
以下も見よ
値ラッパーと変換
class NSValue
単一の C または Objective-C データ項目用の単純なコンテナ。
class ValueTransformer
ある表現から別の表現に値を変換するために使用される抽象クラス。