Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Ios 在连接开始之前设置标志_Ios_Objective C - Fatal编程技术网

Ios 在连接开始之前设置标志

Ios 在连接开始之前设置标志,ios,objective-c,Ios,Objective C,在viewDidLoad中,我想多次调用webservice。 因此,我在viewDidLoad中的代码如下 //Webservice call for industry list NSURL *aUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@index.php/industry/industrylist",baseurl]]; NSMutableURLRequest *request = [NSMutableURLReque

在viewDidLoad中,我想多次调用webservice。 因此,我在viewDidLoad中的代码如下

//Webservice call for industry list
NSURL *aUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@index.php/industry/industrylist",baseurl]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:aUrl
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[@"emailid=b@b.com&password=1234" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:request delegate:self];
//set flag for industryList
flag = @"industry";
[connection start];

//Webservice call for function list
NSURL *bUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@index.php/functionmdl/allFunctionlist",baseurl]];
NSMutableURLRequest *requestb = [NSMutableURLRequest requestWithURL:bUrl
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];
[requestb setHTTPMethod:@"POST"];
[requestb setHTTPBody:[@"" dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connectionb = [[NSURLConnection alloc] initWithRequest:requestb delegate:self];
//set flag for industryList
flag = @"functionmdl";
[connectionb start];
但是
flag
的值总是设置为
functionmdl
,因为我在上面代码中最后一行的前一行为该标志分配了字符串。我知道我把旗子摆错了方向。所以,请让我知道如何在这里设置标志。基本上,我想在
connectiondFinishLoading
方法中使用这些标志。 我必须根据webservice调用来区分webservice响应数据。
请帮我解决这个问题。

我认为您可以使用
连接.currentRequest.URL
来区分请求

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *strUrl = [connection.currentRequest.URL absoluteString] ;
    // compare to the url of your request to distinguish them
}

这里有几种方法(都不涉及标志)

最简单的方法通常是使用
[NSURLConnection sendAsynchronousRequest:queue:completionHandler]
。然后,您可以将您的
connectiondFinishLoading
代码放在这里,特定于每个请求

如果您需要更高级的
nsurlconnectionelegate
(如响应身份验证请求)功能,则此功能不起作用。在这种情况下,我通常建议您将连接和委托包装到一个单独的对象中,并为每个连接实例化一个对象。这样,每个对象都只是单个连接的代理

在少数情况下,这仍然是不合适的,在这些情况下,您可以在委托中检查连接的请求(
connection.currentRequest
),以确定调用您的是哪一个。在某些情况下,我已经创建了一个可变字典属性映射
NSURLRequest
信息到处理程序中需要的其他元数据

在最奇特(因此使用频率最低)的情况下,您可以使用
objc\u setAssociatedObject
将元数据(如标识符)附加到连接上,但这很少是必需的

但我要看一下
[NSURLConnection sendAsynchronousRequest:queue:completionHandler]
。它是最简单的使用方法,可以轻松地解决最常见的情况