我环顾四周,似乎找不到适合我的问题的正确答案。截至目前,我拥有一个网络引擎,并将其从每个视图控制器委派给其执行我的网络活动。遇到多个NSURLConnection问题
例如,要获得用户的详细信息我有一个这样的方法:
- (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
数据,我收到一个NSDictionary
的数据,并根据我设置的标签为了连接,我将数据传输到所需的NSDictionary
。
这工作正常。但是现在我需要两个来自同一视图控制器的请求。所以当我这样做的时候,数据越来越混乱。假设我有一个正在执行搜索的连接,当我执行搜索时,来自用户详细信息的数据可能会出现。根据我在connectionDidFinishLoading
内部进行的切换,数据未被分配到正确的NSDictionary
。我为整个网络引擎使用了一个代理。
我是新来的NSURLConnection
,我应该设置一个队列还是什么?请帮忙。
编辑
这里的一部分,我在connectionDidFinishLoading
接收数据:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if ([connection.tag integerValue] == kGetUserDetails)
networkDataSource.userData = self.jsonDetails;
if ([connection.tag integerValue] == kSearchConnection)
networkDataSource.searchData = self.jsonDetails;
}
并在此之后我有一个要求所需的视图控制器所需的委托的开关情况。
这听起来像个好主意。我会给你一个镜头。 – Anil
好的,如有任何问题,请告知我。 –
我也一样。但是当我发送请求时,比如说我在下载用户详细信息时(比如网速很慢)进行搜索,则用户详细信息调用不会继续。只有搜索发生。 – Anil