3

pls は私のトラブルを助けてくれます: 値と比較して、成功した結果があったかどうかを知ることはできません。json-object を NSDictionaty としてフェッチします。

    NSDictionary *returnDictionary = [NSJSONSerialization JSONObjectWithData:responseObject                                                                                                                                       options:0 error:nil];

その後、key: code の値を取得します

    [returnDictionary objectForKey:@"code"];

戻り値が 1 の場合は問題ありませんが、問題はキー「コード」の型の値がわからないことです。ID、NSString、NSNumber を比較しようとしましたが、すべて失敗しました。どのタイプのオブジェクトを比較すればよいですか?

4

5 に答える 5

5

比較演算子 ( ==) を使用してオブジェクトを比較しましたか?

もしそうなら、オブジェクトの値ではなくメモリアドレスを比較しました。
によって返されるオブジェクトが使用する必要[returnDictionary objectForKey:@"code"] があるタイプ の場合、それがインスタンスを返す場合、そのオブジェクトの を 1 と 比較できます。NSStringNSString's isEqualToString:NSNumberintValue

[[returnDictionary objectForKey:@"code"] isEqualToString:@"1"]  

また

[[returnDictionary objectForKey:@"code"] intValue] == 1
于 2013-05-23T16:55:47.157 に答える
1

出力が整数であると予想される場合は、 を呼び出すことができますintValue

[[returnDictionary objectForKey:@"code"] intValue] == 1

また、メソッドごとに返されたオブジェクトの型をログに記録できます+ class;

NSLog(@"%@", [[returnDictionary objectForKey:@"code"] class]);

于 2013-05-23T16:55:16.660 に答える
1

使用できます

[[returnDictionary objectForKey:@"code"] isKindOfClass:[NSString class]]

ディクショナリから取得したオブジェクトのクラスを確認します。

それが役に立てば幸い!

于 2013-05-23T16:53:53.230 に答える
0

id公式には「祝福」されていますが、Objective-C では「チート」のようなものです。一般に、メソッドが返される場所では、id最初に適切な型にキャストすることなく、その値を直接使用して、返された型でメソッドを呼び出すことができます。コンパイラは、「そのメソッド名が見つかりません」という型の警告/エラーを抑制することを認識しています。コールが にあるときid

もちろん、オブジェクトのクラスがわからない場合は、どのメソッドを呼び出すべきかわかりません。パブロが示唆しているように、疑いがある場合は isKindOfClass を使用してテストできます。NSLog(@"The class is %s", object_getClassName(someId));または、 1 つまたは 2 つの他の方法を使用して、オブジェクトのクラス名をログに記録できます。

于 2013-05-23T17:01:47.027 に答える
0

ブレークポイントを入れて、クラス名を出力します...

デバッガーに次のように入力します。po [[returnDictionary objectForKey:@"code"]className]

それはあなたにクラスを与えるでしょう、何かのようなもの_NSCFStringは文字列などになります...

于 2013-05-23T16:52:34.120 に答える