Я пытаюсь реализовать функцию обновления. У меня есть несколько типов операций, заполняющих мой tableview, и я просто хочу повторно запустить последнюю операцию.iOS MKNetworkOperation - как повторить последнюю операцию?
У меня есть это свойство:
@property (nonatomic, strong) GetRouteOperation* refreshOperation;
Если RouteOperation наследует от MKNetworkOperation, и это суперкласс различных типов RouteOperations, например «Получить маршруты в радиусе», «Получить маршруты по городам», и т.д.
Im инициализирует операцию так:
GetRoutesWithinDistanceOperation *operation = [[GetRoutesWithinDistanceOperation alloc] initOperation];
[self refreshRoutesWithOperation:operation];
Im работает операцию так:
- (void)refreshRoutesWithOperation:(GetRouteOperation *)operation
{
self.refreshOperation = [operation copyForRetry];
[operation getRoutesCompletionHandler:^(NSArray *routes) {
self.routes = routes;
[self.tableView reloadData];
} errorHandler:^(NSError *error) {
} notModifiedHandler:^{
}];
}
и он работает в первый раз, когда я беру данные.
Когда я пытаюсь обновить таблицу, как это:
[self refreshRoutesWithOperation:self.refreshOperation];
я получаю исключение в этом методе для MKNetworkOperation-класса:
-(void) addCompletionHandler:(MKNKResponseBlock)response errorHandler:(MKNKResponseErrorBlock)error {
if(response)
[self.responseBlocks addObject:[response copy]];
if(error)
[self.errorBlocksType2 addObject:[error copy]];
}
это исключение:
2013-08-30 14:00:32.211 AppName[3500:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x9960540'
Почему ?! Почему я не могу просто запустить скопированную операцию, как в первый раз.
EDIT:
Кажется, если фактическая copyForRetry не работает для меня. Или я использую его неправильно.
Даже если я попытаюсь использовать скопированный объект непосредственно после его копирования, он сработает. Это не работает; Я получаю то же исключение:
self.refreshOperation = [operation copyForRetry];
[self.refreshOperation getRoutesCompletionHandler:^(NSArray *routes) {
...
}
У кого-то есть хорошее решение для этого? Как сохранить последнюю операцию для обновления?
Edit2: Я также пытаюсь использовать экземпляр метода NSObject, но все равно получаю ту же проблему. Я думаю, что есть кое-что, что мне не хватает в методах копирования.
Однако мне не нужно использовать этот подход для решения, мне просто нужно гладкое решение. Есть идеи?
http://stackoverflow.com/questions/3220120/nsmutablearray-addobject-nsarrayi-addobject-unrecognized-selector-sent-t – iPatel
Что значит ..? – ullstrm
Как вы объявляете эти переменные 'responseBlocks' и' errorBlocksType2'? –