Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone ASIHTTP-区分API调用?_Iphone_Objective C_Api_Asihttprequest - Fatal编程技术网

iPhone ASIHTTP-区分API调用?

iPhone ASIHTTP-区分API调用?,iphone,objective-c,api,asihttprequest,Iphone,Objective C,Api,Asihttprequest,我目前有一个视图控制器,它实现ASIHTT来处理API调用 我的视图控制器触发两个单独的调用。我需要能够区分-requestFinished(ASIHTTPRequest*)请求方法中的两个调用,以便能够相应地解析每个调用 您可以检查传递给requestFinished:(ASIHTTPRequest*)request方法的request参数,以区分这两个调用 例如,如果两个调用具有不同的url,您可以检查request.url属性来区分这两个请求。您可以检查url/originalUrl属性,

我目前有一个视图控制器,它实现ASIHTT来处理API调用

我的视图控制器触发两个单独的调用。我需要能够区分-requestFinished(ASIHTTPRequest*)请求方法中的两个调用,以便能够相应地解析每个调用


您可以检查传递给
requestFinished:(ASIHTTPRequest*)request
方法的
request
参数,以区分这两个调用


例如,如果两个调用具有不同的url,您可以检查
request.url
属性来区分这两个请求。

您可以检查url/originalUrl属性,或者您可以对其进行子类化并添加自己的属性来指示调用的方式,因为比较int比字符串更容易/更快

i、 e

我在枚举中有如下所有调用:

enum calls {
FACEBOOK_LOGIN = 101,
FACEBOOK_GETWALL = 102,
...
}

使用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.
    }
}
在视图控制器中执行的每个不同ASIHTTPRequest中,在键
@“type”
处为对象设置不同的值,现在可以在
-requestFinished:
中区分它们,并适当地处理它们


如果您真的喜欢,您可以在请求完成时携带任何其他有用的数据。例如,如果您延迟加载图像,则可以将一个句柄传递给要填充的UIImageView,然后在加载图像数据后在
-requestFinished
中执行此操作

您可以设置在创建请求时应调用的相应选择器:

[request setDelegate: self];
[request setDidFailSelector: @selector(apiCallDidFail:)];
[request setDidFinishSelector: @selector(apiCallDidFinish:)];
只需为不同的通话设置不同的选择器

[request setDelegate: self];
[request setDidFailSelector: @selector(apiCallDidFail:)];
[request setDidFinishSelector: @selector(apiCallDidFinish:)];