0

Web呼び出しを行うために使用される辞書を含むクラスがあります。基本的に、キーと値のペアは、Web呼び出しで値が必要な場合にURLに送信されるデータを作成するために使用されます。このオブジェクトクラスは、JSONを使用して設定されます。

このクラスオブジェクトを取得し、それを使用してWeb呼び出しを設定するメソッドがあります。私の問題は、パラメータが必要ない場合、辞書がnullに設定されていることです。これは問題ありませんが、何らかの理由でifステートメントを実行して辞書がnullかどうかを確認すると、elseにヒットします。 nullではないことを示すステートメント。メソッドは次のようになります

-(void)webCall :(WebServiceCall *)webCall_p
{

    //Creates a dictionary from the one stored in the WebResponse Class
    NSMutableDictionary *dict = [[webCall_p getWebServiceResponse] getVariablesByRegexMap];

    NSLog(@"%@", dict);
}

私がそれを印刷するとき、私はこれを手に入れます

<null>

それでも、ifステートメントを入力して、そのようにnullかどうかを確認すると

 if(dict == NULL)
    {
        NSLog(@"NULL");
    }
    else
    {
        NSLog(@"Not NULL");
    }

nullではないと言っています。dict countコマンドを使おうとすると、

NSLog(@"%i", [dict count]);

アプリケーションがクラッシュし、このエラーが発生します

-[NSNullカウント]:認識されないセレクターがインスタンス0xaf8678に送信されました2012-11-23 11:48:44.005テスト[3403:14003] * キャッチされない例外'NSInvalidArgumentException'、理由:'のためにアプリを終了します-[NSNullカウント]:認識されないセレクターインスタンス0xaf8678に送信されました '

私の人生のためにこれを理解することはできません。どんな助けでも大歓迎です

4

4 に答える 4

1

明らかに、値はNSNullであり、これはオブジェクトであり、nilではありません。NSNullはシングルトンで動作するif (dict == NSNull)はずです。

于 2012-11-23T11:58:41.810 に答える
1

これを使って

if ([dict isKindOfClass:[NSNull class]]){

}
于 2012-11-23T12:05:13.900 に答える
0

NULLの代わりにnilを使用する必要があります。

 if (dict == nil)

..。

于 2012-11-23T11:57:09.793 に答える
0

まず、存在を確認したい場合はnil、ではなく、を確認しますNULL

if (dict) { // or (dict == nil) 
   // do something
}

次に、NSLog%d代わりに正しいフォーマッタを使用します%i

于 2012-11-23T12:01:39.207 に答える