我正在尝试使用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
发送。
答案 0 :(得分:4)
您是否可以将唯一值存储到request.tag中,或使用userinfo字典存储您需要存储的数据?例如:
request.userInfo = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"value", @"key", nil];