2010-04-04 56 views
0

我得到了這樣的傳球一個NSMutableDictionary(除其他事項外)的方法在另一類代碼塊:問題路過的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,然後才能訪問它,但我不知道如何。有什麼建議?

回答

0

您不必在新方法中以任何方式重新初始化對象。你說證書數組「是先前定義的」,但它在哪裏定義?用同樣的方法調用makeAPICallAndReturnResultsUsingMode ...?在引發異常的行之前,您是否在makeAPI ...方法中使用了query

+0

它是在self.shuttle調用之前定義的,它將它傳遞給makeAPICallAndReturnResultsUsingMode - 根據OP我向NSMutableDictionary添加兩個值,但就是這樣。而沒了,什麼也不做它,方法字面上看起來是這樣的: - (ID)makeAPICallAndReturnResultsUsingMode:(的NSString *)模式模塊:(的NSString *)模塊查詢:(的NSMutableDictionary *)查詢 { \t [查詢setObject:self.sessionID forKey:@「session_id」]; – roswell 2010-04-04 15:59:23