Box IOS SDK V2 отменить загрузку / выгрузку

Я использую SDK target-c box для управления файлами с помощью специального метода

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

Мне нужно отменить задачу загрузки, но я не могу найти способ сделать это! Мне также нужно иметь возможность отменить загрузку задач, но я думаю, что способ будет такой же...

Кому-нибудь удается этого добиться?

1 ответ

Решение

filesManager возвращает BoxAPIDataOperation. В конечном итоге BoxAPIDataOperation наследуется от базового класса NSOperation и Box, поскольку это BoxAPIOperation. Чтобы отменить BoxAPIOperation, вы просто отправляете ему сообщение об отмене.

Фактически все менеджеры ресурсов в BoxSDK возвращают классы, которые наследуются от BoxAPIOperation. Вы можете найти (аннулировать) отмену в 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];
}
Другие вопросы по тегам