当您在我的应用程序中创建/更新/删除记录时,它会在 Core Data 中创建一个 OutgoingRequest
。应用程序会定期在队列中获取这些请求,并将它们全部推送到服务器。我使用 AFHTTPClient 帖子(见下文)执行此操作。我遇到的问题是,它会同时推送所有这些请求,然后返回的响应没有真正的顺序。
我需要做的是让这些请求“同步”工作,因为在请求 A 完成(成功或失败响应)之前不应发布请求 B。这也是在后台完成的,不应挂起 UI。
for(OutgoingRequest *req in queue)
{
NSURL *reqUrl = [NSURL URLWithString: globals.baseURL];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:reqUrl];
[httpClient setParameterEncoding:AFJSONParameterEncoding];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
req.url, @"viewName",
req.json, @"JSON",
req.dateAdded.description, @"dateTime",
nil];
NSString *path = [NSString stringWithFormat:@"cache/update/?deviceUID=%@&token=%@", [MySingleton getMacAddress], globals.token];
[httpClient postPath:path parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
//handle the repsonse
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
}
有什么方法可以用我当前的设置实现这个目标吗?还是我应该使用其他方式 POST 到我的服务器?
谢谢
最佳答案
这里最好的想法可能是使用 AFHTTPRequestOperation
(或其子类之一)并在它们之间创建依赖关系:2 op。取决于 1 op., 3 op.取决于 2 操作。等等……
请查看AFNetworking
和NSOperation
文档(AFHTTPRequestOperation
是NSOperation
的子类)。
关于iOS清空请求队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19729659/