0

我正在使用objective-c box SDK使用专用方法管理文件

[[BoxSDK sharedSDK].filesManager downloadFileWithID:fileID
                                       outputStream:outputStream
                                     requestBuilder:nil
                                            success:successBlock
                                            failure:failureBlock
                                           progress:progressBlock];

我需要能够取消下载任务,但我无法找到一种方法来做到这一点!我还需要能够取消上传任务,但我想这样做的方式是一样的......

有没有人设法做到这一点?

4

1 回答 1

2

filesManager 返回 BoxAPIDataOperation。BoxAPIDataOperation 最终继承自 NSOperation 和 Box 基类,因为它是 BoxAPIOperation。要取消 BoxAPIOperation,您只需发送消息取消即可。

事实上,BoxSDK 中的所有资源管理器都返回继承自 BoxAPIOperation 的类。您可以在 BoxAPIOperation.m 中找到 (void)cancel。

所以在你的情况下你想要这样的东西

// property to store pointer to currently active download operation.
// it is weak, because you don't want to retain it. after download is completed, cancelled or failed
@property (nonatomic, readwrite, weak) BoxAPIDataOperation *downloadOperation;
....

self.downloadOperation = [[BoxSDK sharedSDK].filesManager downloadFileWithID:fileID
                                                            outputStream:outputStream
                                                          requestBuilder:nil
                                                                 success:successBlock
                                                                 failure:failureBlock
                                                                progress:progressBlock];
...
- (void)dealloc
{
   [self.downloadOperation cancel];
}
// only if want to keep self in object and want to just cancel operation
- (void)userPressedCancelButton:(id)sender
{
   [self.downloadOperation cancel];
}
于 2014-09-05T00:57:15.927 回答