0

NSMutableDictionaryを(とりわけ)別のクラスのメソッドに渡すコードのチャンクがあります。

[self.shuttle makeAPICallAndReturnResultsUsingMode:@"login" module:@"login" query:credentials];

NSMutableArrayクレデンシャルは、以前は次のように定義されていました。

NSMutableDictionary *credentials = [[NSMutableDictionary alloc] init];
[credentials setObject:username forKey:@"username"];
[credentials setObject:password forKey:@"password"];

それを受け取るメソッドは次のようになります。

-(id)makeAPICallAndReturnResultsUsingMode:(NSString *)mode module:(NSString *)module query:(NSMutableDictionary *)query

上記のメソッド内では、この時点までコードは正常に機能します。

 [query setObject:self.sessionID forKey:@"session_id"];

この時点で、アプリケーションは終了します。コンソールはこの例外を通知します。

*キャッチされなかった例外によるアプリの終了'NSInvalidArgumentException'、理由:'* -[NSCFDictionary setObject:forKey:]:初期化されていない可変ディクショナリオブジェクトに送信されたメソッド'

これにより、新しいメソッドにアクセスする前に、何らかの方法でNSMutableDictionaryを初期化する必要があると思いますが、その方法がわかりません。何かアドバイス?

4

1 に答える 1

0

新しいメソッドでオブジェクトを再初期化する必要はありません。資格情報配列は「以前に定義されている」と言いますが、どこで定義されていますか? makeAPICallAndReturnResultsUsingMode...を呼び出す同じメソッドで? query例外をスローする行の前の makeAPI... メソッドで何かしましたか?

于 2010-04-04T07:56:05.660 に答える