我試圖使用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
我可以看到沒有方法從NSObject
和ASIHTTPRequest
覆蓋-isEqual:
或-hash
實現(NSCopying)
協議。
那麼是什麼原因?爲什麼我不能將請求用作關鍵字?是否還有其他可供我使用的請求的唯一標識符?
任何幫助表示讚賞。對於完整的參考,我想實現雙級回調,其中WebServices
類解析上-requestFinished
數據(並處理網絡錯誤並重新登錄),然後讓另一個回調所以只是JSON數據被髮送作爲NSDictionary
。
你確定這是這就是問題的關鍵?什麼是「選擇器」? –
@Josh的Caswell,是的,選擇器是'@selector(methodOnDelegate:)'。它精細顯示出來,當我用'[URL請求]' –