我目前有一个视图控制器,它实现 ASIHTTP 来处理 API 调用。
我的视图控制器触发了 2 个单独的调用。我需要能够区分 -requestFinished(ASIHTTPRequest*)request 方法中的两个调用,这样我就可以相应地解析每个调用......
有这样做的吗?
使用 userInfo 字段!这就是它的用途!
ASIHTTPRequest(或 ASIFormDataRequest)对象有一个名为 .userInfo 的属性,它可以采用 NSDictionary 来包含您想要的任何内容。所以我几乎总是去:
- (void) viewDidLoad { // or wherever
ASIHTTPRequest *req = [ASIHTTPRequest requestWithUrl:theUrl];
req.delegate = self;
req.userInfo = [NSDictionary dictionaryWithObject:@"initialRequest" forKey:@"type"];
[req startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
if ([[request.userInfo valueForKey:@"type"] isEqualToString:@"initialRequest"]) {
// I know it's my "initialRequest" .req and not some other one!
// In here I might parse my JSON that the server replied with,
// assemble image URLs, and request them, with a userInfo
// field containing a dictionary with @"image" for the @"type", for instance.
}
}
为关键处的对象设置不同的值@"type"
在此视图控制器中执行的每个不同的 ASIHTTPRequest 中,您现在可以在-requestFinished:
并妥善处理每一项。
如果您真的很喜欢,您可以携带请求完成时有用的任何其他数据。例如,如果您延迟加载图像,您可以向自己传递一个要填充的 UIImageView 句柄,然后在-requestFinished
加载图像数据后!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)