2012-04-29 2 views
0

Я недавно переключился с TBXML на RaptureXML, и даже если вытащить информацию намного проще, есть заметная задержка при нажатии кнопки панели вкладок, содержащей мое представление таблицы xml.RaptureXML вид медленный

В моем методе viewDidLoad я следующий»

events = [[NSMutableArray alloc] init]; 

[self loadURL]; 

И мой метод loadURL заключается в следующем:

- (void)loadURL { 

RXMLElement *rootXML = [RXMLElement elementFromURL:[NSURL URLWithString:@"http://api.somexml.com/xml"]]; 

[rootXML iterateWithRootXPath:@"//event" usingBlock:^(RXMLElement *event) { 
    [events addObject:[NSArray arrayWithObjects: 
         [event attribute:@"uri"], 
         [event attribute:@"displayName"], 
         [event attribute:@"type"], 
         nil]]; 
}]; 

[rootXML iterateWithRootXPath:@"//location" usingBlock: ^(RXMLElement *location) { 
    [events addObject:[NSArray arrayWithObjects: 
         [location attribute:@"city"], 
         [location attribute:@"lat"], 
         [location attribute:@"lng"], 
         nil]]; 
}]; 

[rootXML iterateWithRootXPath:@"//start" usingBlock:^(RXMLElement *start) { 
    [events addObject:[NSArray arrayWithObjects: 
         [start attribute:@"time"], 
         [start attribute:@"date"], 
         nil]]; 
}]; 



} 

Есть ли что-то я могу сделать, чтобы ускорить его Кроме того, когда я задаю? моя строка подсчитывается как [количество событий]. Я получаю 19 строк, когда мне нужно получить только 6. Пожалуйста, помогите.

+1

Вы синхронно запрашиваете XML в основном потоке, который является полным No-No. Используйте асинхронный способ загрузки данных. – Till

ответ

2

Пока на правильном пути вы должны разобрать фоновый поток. e:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    [self loadURL]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [tableView reloadData]; 
    }); 
}); 

Вы заметите, что я перезаряжаю таблицу в основной теме. Обновление элементов интерфейса в фоновом потоке немного нет-нет.

+0

Вы, ребята, потрясающие. Я действительно хотел получить данные асинхронно, но не знал, как это сделать. Это имеет большой смысл! – Year3000

+0

Теперь что-то, с чем я столкнулся, состоит в том, что по какой-то причине мой подсчет строк содержит сотни строк, когда на самом деле всего 6 событий. У меня такое чувство, что он создает ряд для каждого отдельного объекта, который я добавляю в свой массив. Возможно, я не добавил объекты правильно или правильно присвоил количество строк. – Year3000

+0

Я задал этот вопрос реальный вопрос на сайте. Вот ссылка: [link] http://stackoverflow.com/questions/10377214/row-count-is-returning-the-incorrect-number-using-rapturexml – Year3000

Смежные вопросы