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 をキャンセルするには、メッセージ cancel を送信するだけです。

実際、BoxSDK のすべてのリソース マネージャーは、BoxAPIOperation を継承するクラスを返します。(void)cancel は BoxAPIOperation.m にあります。

だからあなたの場合、あなたはこのようなものが欲しいでしょう

// 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 に答える