Iphone 多个NSURLConnection调用一个接一个?
好的,我为此尝试了很多不同的方法。我想调用JSON API,得到它的响应,保存键值,然后用不同的参数再次调用它。最近,我尝试在for循环中调用URL方法,在Iphone 多个NSURLConnection调用一个接一个?,iphone,ios,asynchronous,nsurlconnection,Iphone,Ios,Asynchronous,Nsurlconnection,好的,我为此尝试了很多不同的方法。我想调用JSON API,得到它的响应,保存键值,然后用不同的参数再次调用它。最近,我尝试在for循环中调用URL方法,在connectionIDFinishLoading:中发布NSNotification,并在发布通知时在observer中记录NSLogging值。但它只是多次记录最终调用的值 我用它来初始化连接 eventConnection=[[NSURLConnection alloc]initWithRequest:[NSURLRequest re
connectionIDFinishLoading:
中发布NSNotification,并在发布通知时在observer中记录NSLogging值。但它只是多次记录最终调用的值
我用它来初始化连接
eventConnection=[[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] delegate:self startImmediately:NO];
[eventConnection scheduleInRunLoop: [NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[eventConnection start];
这是委托方法
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSNotification *eventNotification=[NSNotification notificationWithName:@"eventsFound" object:nil userInfo:responseDict];
[[NSNotificationQueue defaultQueue]enqueueNotification:eventNotification postingStyle:NSPostNow coalesceMask:NSNotificationCoalescingOnName forModes:nil];
}
关于如何实现这一点的任何建议?要有效地链接多个NSURLConnection请求,您不应该同时启动它们(例如,如您所说的“在for循环中”) 相反,启动第一个请求;然后,从
connectiondFinishLoading
开始第二次加载;然后,再次执行connectiondFinishLoading
时,启动第三个,依此类推
这只是一个草图,你可以这样做,以帮助你找到一个好的设计,为你的应用程序;一种可能性是:
connectiondFinishLoading
将向状态机发送信号,使其进入下一步当然,还有其他可能的设计方案;哪个是最好的取决于您的总体需求和您需要的调用流类型。要有效地链接多个NSURLConnection请求,您不应该一次启动所有请求(例如,如您所说的“在for循环中”) 相反,启动第一个请求;然后,从
connectiondFinishLoading
开始第二次加载;然后,再次执行connectiondFinishLoading
时,启动第三个,依此类推
这只是一个草图,你可以这样做,以帮助你找到一个好的设计,为你的应用程序;一种可能性是:
connectiondFinishLoading
将向状态机发送信号,使其进入下一步当然,还有其他可能的设计方案;哪一个是最好的将取决于您的总体需求和您需要的呼叫流类型。设置计数器和要发送的请求总数。在连接完成加载后,检查计数器是否达到要发送的请求总数,或者再次调用发送数据的方法,并增加发送的请求数。如果您使用文件中的数据。i、 e.首先将数据写入一个数字文件,然后在发送请求时读取数据,然后设置一个计数器和发送请求的总数。在连接完成加载后,检查计数器是否达到要发送的请求总数,或者再次调用发送数据的方法,并增加发送的请求数。如果您使用文件中的数据。i、 e.首先将数据写入一个数字文件,然后在您想要发送请求时读取它,然后它会很好哼 您是否尝试使用AFNetworking之类的库,您可以创建异步请求并使用块来处理答案。Hum
您是否尝试使用AFNetworking之类的库,您可以创建异步请求并使用块来处理答案。您可以使用NSOPerationQueue或块或线程来处理相同的问题。完成一个函数后调用另一个函数。您可以使用NSOPerationQueue或Block或thread来执行相同的操作。完成一个函数后调用另一个函数。[eventConnection scheduleInRunLoop:[NSRunLoop currentRunLoop]forMode:NSDefaultRunLoopMode];[事件连接启动];这不是假设一个接一个地顺序调用api吗?它们是按顺序启动的,比如:启动第一个;开始第二步;开始第三个。。。但您需要的是在第一次完成后启动第二次(而不仅仅是在第一次启动后)…[eventConnection scheduleInRunLoop:[NSRunLoop currentRunLoop]forMode:NSDefaultRunLoopMode];[事件连接启动];这不是假设一个接一个地顺序调用api吗?它们是按顺序启动的,比如:启动第一个;开始第二步;开始第三个。。。但是你想要的是在第一个已经完成之后开始第二个(而不仅仅是在第一个已经开始之后)。。。