2012-02-25 3 views
0

私はNSStringに解析されたオブジェクトを持っています。クラス名をトレースすると、NCDecimalNumberと表示されます。どうして? (私はNSStringがクラスタだと理解していますが、なぜNSDecimalNumberがクラスタの後ろにあるのか分かりません)NSStringのNSDecimalNumberはなぜですか?

次のポストは同様の質問をしますが、誰もその理由に答えません。 Converting NSDecimalNumber to NSString

+3

あなたが状況を再現する任意のコードを持っていますか? – Monolo

+0

これを複製することができます。JSONを値で解析すると、取得したオブジェクトは上記の投稿リンクと似ています。その後、(objectForKeyを介して)値にアクセスしてNSStringに保存すると(変数名「value」と言うと、[value class]をトレースするとNSDecimalNumberが返されます) – Boon

答えて

2

デコーダのように数字がNSDecimalNumber(および文字列はNSStringに)デコードされているようです。

Objective-C ですので、ポインタに効果的に何かを割り当てることができるので、型が一致することはあなた次第です。このため、タイプNSNumberのオブジェクトを、NSString*と宣言されたポインタに割り当てることができます。ご覧のように、クラスクラスタはこれとは関係ありません。

オブジェクトを変数に割り当てる前に、クラスをチェックするか、オブジェクトをid(任意のオブジェクトを保持できる)のポインタに割り当てる必要があります。

あなたは自分のタイプに基づいてオブジェクトの上に作業する必要がある場合は

、あなたはこのような何かを行うことができます。

id obj = //... 

if ([obj isKindOfClass: [NSString class]]) { 

} 
else if ([obj isKindOfClass: [NSNumber class]]) { 

} 
else { 

} 
2

これを使用してみてください:

NSString *string = [[NSStrig alloc] initWithFormat:@"%@", [DecimalNumber stringValue]]; 

あなたを助けるために起こっている希望。

関連する問題