我环顾四周,似乎无法为我的问题找到正确的答案。到目前为止,我有一个网络引擎,我从每个视图控制器委托给它来执行我的网络活动。
例如,要获取用户详细信息,我有一个这样的方法:
- (void) getUserDetailsWithUserId:(NSString*) userId
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@Details", kServerAddress]]];
request.HTTPMethod = @"POST";
NSString *stringData = [NSString stringWithFormat:@"%@%@", kUserId, userId];
NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = requestBodyData;
NSURLConnection *conn = [[NSURLConnection alloc] init];
[conn setTag:kGetUserInfoConnection];
(void)[conn initWithRequest:request delegate:self];
}
当我得到数据时connectionDidFinishLoading
,我会在 a 中接收数据,NSDictionary
并根据我为连接设置的标签,将数据传输到所需的NSDictionary
.
这工作正常。但现在我需要来自同一个视图控制器的两个请求。因此,当我这样做时,数据会变得混乱。假设我有一个正在实施的搜索连接,当我进行搜索时,可能会输入来自用户详细信息的数据。NSDictionary
根据我在里面做的开关,数据没有被分配到右边connectionDidFinishLoading
。我为整个网络引擎使用了一个委托。
我是新手NSURLConnection
,我应该设置一个队列还是什么?请帮忙。
编辑
这是我在其中接收数据的部分connectionDidFinishLoading
:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if ([connection.tag integerValue] == kGetUserDetails)
networkDataSource.userData = self.jsonDetails;
if ([connection.tag integerValue] == kSearchConnection)
networkDataSource.searchData = self.jsonDetails;
}
在此之后,我有一个 switch case,它为所需的视图控制器调用所需的委托。