私がようにNSDictionaryの中のキーとしてASIHTTPRequest/ASIFormDataRequest
を使用しようとしてるよう:使用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
秒またはランダム)ときに私を-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
から同じものを返す必要があることがわかります。私はNSObject
とASIHTTPRequest
から-isEqual:
または-hash
をオーバーライドするいかなる方法を見ることができないASIFormDataRequest : ASIHTTPRequest : NSOperation : NSObject
から
は(NSCopying)
プロトコルを実装しています。
だから何ですか?要求をキーとして使用できないのはなぜですか?私が使用できるリクエストには、他にも一意の識別子がありますか?
何か助けていただければ幸いです。完全なリファレンスとして、WebServices
クラスがデータを解析して-requestFinished
(ネットワークエラーと再ログインを処理)し、別のコールバックを作成してJSONデータがNSDictionary
として送信されるような二重層コールバックを実装しようとしています。
これは問題の鍵ですか? 'セレクタ 'とは何ですか? –
@Josh Caswell、セレクタは '@selector(methodOnDelegate:)'です。それはうまく表示され、私が '[request url]' –