我试图使用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请求]' –