我正在尝试将某些数据从iOS发送到在线MySQL数据库。服务器端使用PHP处理数据的接收和插入。
问题是我有几个数据包。关键是一个接一个地发送,这意味着我需要一种机制,让队列中的第二个数据包等待,直到iOS收到来自服务器的反馈,确认第一组数据已经存储到数据库中。
我最初尝试创建一个串行调度队列,目的是让iOS应用程序按顺序执行上传工作。虽然iOS端确实按顺序执行了工作,但每个任务只是“完成”了发送它的数据包,而不是等待数据是否已经插入数据库。然后问题是,由于网络连接等问题,在发送数据和将数据完全保存到服务器中的MySQL之间总是会有一段时间间隔。
因此,结果是数据可能不会以期望的顺序保存,一些较晚的数据可能会比先前的数据更早保存。
我猜缺少的是从服务器端到iOS端的“反馈”机制。
有没有人能建议一种方法来实现这种反馈机制,这样我就可以控制上传数据任务的顺序了。
非常感谢!
向您致敬,保罗
发布于 2016-12-03 00:32:45
如果你正在向服务器发送数据,那么大多数可用的框架都提供了回调。使用AFNetworking (或现在称为Almofire),它将如下所示:
[[ConnectionManager instance] GET: @"link" parameters: nil
success:^(AFHTTPRequestOperation* operation, id responseObject)
{
}
failure:^(AFHTTPRequestOperation* operation, NSError* error)
{
}];
因此,您可以将代码放在给定的处理程序中,并不断发出请求。
您可能还想创建并发操作,并将这些操作放在OperationQueue上,同时设置适当的依赖关系,但这肯定会更耗时。
https://stackoverflow.com/questions/40936572
复制相似问题