Проблема с отображением обновлений tableView при разборе xml с помощью AQXMLParser StreamingParser - PullRequest
0 голосов
/ 20 марта 2011

У меня есть табличное представление, которое заполняется StreamingXMLParser (https://github.com/AlanQuatermain/aqtoolkit). Когда я запускаю свое приложение, tableView выглядит пустым. Сначала я подумал, что мой tableView ничего не показывает, пока не будет готов асинхронный парсер xml, но если я начну прокручивать во время синтаксического анализа, представление внезапно заполнится.

Мой код основан на ParserExample (https://github.com/AlanQuatermain/ParserExample), и анализатор вызывается с использованием того же метода, что и в примере:

[parser parseAsynchronouslyUsingRunLoop: [NSRunLoop currentRunLoop]
                                            mode: NSDefaultRunLoopMode
                               notifyingDelegate: self
                                        selector: @selector(parser:completedOK:)
                                         context: NULL]

Я думаю, что моя проблема в том, что моя асинхронная задача занимает слишком много вычислительной мощности. Кто имеет опыт работы с StreamingXMLParser и может мне помочь? Как я могу исправить свое приложение, чтобы tableView имел больший приоритет, чем синтаксический анализ xml?

Проблему можно смоделировать, скачав пример проекта и вставив [NSThread sleepForTimeInterval: 0.2]; После [self.managedObjectContext save: NULL]; оператор в методе endPost метода parserDelegate.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Мне удалось обойти эту проблему, вызвав синхронный метод [parser parse] с помощью небольшой утилиты MBProgressHUD, созданной Матей Буковински. MBProgressHUD теперь вызывает метод синтаксического анализа async и исправляет мою проблему. (И дает хороший показатель).

0 голосов
/ 22 марта 2011

Я думаю, что проблема в вашем разборе.Потому что, когда вы анализируете некоторые теги, у них есть пустая строка или строка \n, поэтому первые несколько имеют пустые строки.Еще одна вещь, которая может произойти, это то, что ответ от сервера приходит слишком поздно.Вот почему это занимает так много времени.

Вы должны установить несколько точек останова, а затем проверить все данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...