使用ASIHTTPRequest作为NSDictionary密钥

时间:2011-06-24 17:44:49

标签: objective-c ios nsdictionary asihttprequest

我正在尝试使用ASIHTTPRequest/ASIFormDataRequest作为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内访问[_delegate objectForKey:request]时,它不会返回正确的数据(-requestFinished:或随机数据),因此我将其作为临时解决方案使用:

[_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我看不到覆盖-isEqual:-hash的{​​{1}}和NSObject实施ASIHTTPRequest协议的方法。

那是什么给出的?为什么我不能将请求用作密钥?是否有我可以使用的请求的其他唯一标识符?

感谢任何帮助。为了完整参考,我正在尝试实现一个双层回调,其中(NSCopying)类解析WebServices上的数据(并处理网络错误和重新登录),然后进行另一次回调,这样只需要JSON数据以-requestFinished发送。

1 个答案:

答案 0 :(得分:4)

您是否可以将唯一值存储到request.tag中,或使用userinfo字典存储您需要存储的数据?例如:

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