Я играю с этим уроком, который нашел на сайте.Это приложение RSS Feed.Вот ссылка: Учебник RSS
У меня есть RSS-лента, работающая в моем приложении.Мне стало любопытно, и вместо обычной кнопки обновления я выбрал раскрывающееся обновление. PullDownRefresh Tutorial
Я реализован в ленте RSS.Все выглядит хорошо и работает, но просто не освежает.Поэтому я попытался добавить некоторый код, чтобы он обновлялся, когда я опускаю таблицу вниз.
Код, который я ввел:
- (void)reloadTableViewDataSource {
//should be calling your tableviews data source model to reload.
//put here just for demo.
[self performSelector:@selector(refresh)];
_reloading = YES;
[self.tableView reloadData];
}
Но это дублирует каналы.
Я пытался очистить свой источник данных до этого с помощью self.tableView.dataSource = nil;
, но добавление этого сбояэто здесь:
`- (void) requestFinished: (ASIHTTPRequest *) запрос {
[_queue addOperationWithBlock:^{
NSError *error;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:[request responseData]
options:0 error:&error];
if (doc == nil) {
NSLog(@"Failed to parse %@", request.url);
} else {
NSMutableArray *entries = [NSMutableArray array];
[self parseFeed:doc.rootElement entries:entries];
NSSortDescriptor *itemSort = [[NSSortDescriptor alloc] initWithKey:@"articleDate" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:itemSort,nil];
[entries sortUsingDescriptors:sortDescriptors];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
for (RSSEntry *entry in entries) {
int insertIdx = [_allEntries indexForInsertingObject:entry sortedUsingBlock:^(id a, id b) {
RSSEntry *entry1 = (RSSEntry *) a;
RSSEntry *entry2 = (RSSEntry *) b;
return [entry1.articleDate compare:entry2.articleDate];
}];
[_allEntries insertObject:entry atIndex:insertIdx];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:insertIdx inSection:0]] //Thread 1: Program received signal: "SIGABRT".
withRowAnimation:UITableViewRowAnimationRight];
}
}];
}
}];
}`
Окно вывода говорит следующее:
Завершение приложения из-занеобработанное исключение «NSInternalInconsistencyException», причина: «Недопустимое обновление: недопустимое количество строк в разделе 0. Число строк, содержащихся в существующем разделе после обновления (0), должно быть равно числу строк, содержащихся в этом разделе до обновления».(0), плюс или минус количество строк, вставленных или удаленных из этого раздела (1 вставлено, 0 удалено). '
Есть идеи?