我用ASINetworkQueue发送两个请求,这是在一队列中。 我的问题是,我不能够收到通知时 请求失败/完成。

代码:

    [networkQueue cancelAllOperations];
    [networkQueue setShowAccurateProgress:YES];
    [networkQueue setUploadProgressDelegate:self.progressIndicator];
    [networkQueue setDelegate:self];
    [networkQueue setQueueDidFinishSelector:@selector(queueDidFinish)];


    NSURL *urlAttachment = [NSURL URLWithString:@"http://localhost/test1.xml"]];
    ASIFormDataRequest *requestFile = [[[ASIFormDataRequest alloc] initWithURL:urlAttachment] autorelease];
    [requestFile setFile:filePath forKey:@"attachment[test]"];
    [requestFile setDidFailSelector:@selector(test1WentWrong)];
    [requestFile setDidFinishSelector:@selector(test1Done)];
    [networkQueue addOperation:requestFile]; //queue is an NSOperationQueue

    NSURL *url = [NSURL URLWithString:@"http://localhost/test2.xml"]];
    ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
    [request setPostValue:test.filename forKey:@"filename[test]" ];
    [request setDidFailSelector:@selector(test2WentWrong)];
    [request setDidFinishSelector:@selector(test2Done)];
    [networkQueue addOperation:request]; //queue is an NSOperationQueue

    [networkQueue go];

<强> test1WentWrong,test1Done,test2WentWrong,test2Done不叫。 虽然请求运行良好和queueDidFinish被调用。

有帮助吗?

解决方案

您需要设置各个请求的代表,而不是队列中。

基本上,如果设置在队列中的didFinish和didFail选择器,该队列的委托调用。如果你把它们放在请求,请求的委托调用(你也可以两者都做,在这种情况下,两个被调用)。

在你的情况下,如果你想使用相同的委托为两个请求,而不同的选择为didFail / didFinish,我可以看到它是有意义的被称为队列的委托,如果你没有设置一个委托请求。也许我应该添加此...:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top