2011-06-24 32 views
2

我試圖使用ASIHTTPRequest/ASIFormDataRequest如在NSDictionary的關鍵是這樣:使用ASIHTTPRequest作爲NSDictionary的關鍵

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request setPostValue:GPUserData.userlogin forKey:@"username"]; 
[request setPostValue:GPUserData.password forKey:@"password"]; 
[request setDelegate:self]; 
[_delegates setObject:delegate forKey:request]; 
[_selectors setObject:[NSValue valueWithPointer:selector] forKey:request]; 

[request startAsynchronous]; 

但是,它不會返回正確的數據(nil S或隨機的),當我嘗試從-requestFinished:中訪問[_delegate objectForKey:request],所以我使用的是作爲一個臨時解決方案:

[_delegates setObject:delegate forKey:[request url]]; 
[_selectors setObject:[NSValue valueWithPointer:selector] forKey:[request url]]; 

[request URL]是不是每個單獨的請求是唯一的。我知道的東西是一種可行的關鍵,it needs to have -hash and -isEqual: return the same result,即如果該對象返回YES-isEqual:那麼他們必須都來自-hash返回相同。

ASIFormDataRequest : ASIHTTPRequest : NSOperation : NSObject我可以看到沒有方法從NSObjectASIHTTPRequest覆蓋-isEqual:-hash實現(NSCopying)協議。

那麼是什麼原因?爲什麼我不能將請求用作關鍵字?是否還有其他可供我使用的請求的唯一標識符?

任何幫助表示讚賞。對於完整的參考,我想實現雙級回調,其中WebServices類解析上-requestFinished數據(並處理網絡錯誤並重新登錄),然後讓另一個回調所以只是JSON數據被髮送作爲NSDictionary

+0

你確定這是這就是問題的關鍵?什麼是「選擇器」? –

+0

@Josh的Caswell,是的,選擇器是'@selector(methodOnDelegate:)'。它精細顯示出來,當我用'[URL請求]' –

回答

4

你能而不是唯一的值保存到request.tag,或使用用戶信息的字典來存儲你需要存儲的數據?例如:

request.userInfo = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"value", @"key", nil]; 
+0

WOW的作品。我不知道'userInfo'。謝謝!!我現在感到很傻。 –

相關問題