UITableView проблемы с удаленными данными - PullRequest
0 голосов
/ 24 июня 2011

Я создаю новостное приложение (приложение TabBar), где мне нужно загружать главные новости, поступающие из RSS-канала, в UITableView. Мне удалось это сделать, но проблема, с которой я сейчас сталкиваюсь, состоит из двух частей: - При запуске представление таблицы остается серым (нет данных, но приложение реагирует), пока я не переключусь на другие элементы панели вкладок и не вернусь, чтобы увидеть загруженные данные. Я полагаю, это связано с задержкой в ​​собираемых данных? Но я видел некоторые приложения, такие как импульсный сбор данных довольно быстро. Как я могу это сделать? И как я могу избежать отображения пустого серого представления, пока данные не собраны. Кстати, ответ от веб-сервиса довольно быстрый и очень легкий. - Опять же, говоря о том, как работает приложениеимпульс, как мне кэшировать предыдущие данные, чтобы при каждом запуске приложения не приходилось извлекать новые данные до тех пор, пока пользователи не обновятся?

Некоторые примеры кода действительно помогут. Я попытался изучить пример URLCache, но, честно говоря, меня это смущает. Спасибо!

Ответы [ 3 ]

1 голос
/ 24 июня 2011

Мне кажется, что вы не перезагружаете данные своей таблицы, когда данные были получены.Просто добавьте [myTableVariable reloadData];, когда закончите загружать RSS-каналы.

Для кэширования данных между различными запусками приложения вы можете сохранить их в файл в папке с документами и прочитать их при запуске.Используйте кэшированные данные, пока не получите новые данные.Вы можете адаптировать следующий код

- (BOOL)SaveData
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *path = [documentsDirectory stringByAppendingString:@"/cache.dat"];
    NSArray *userInfo = [NSArray arrayWithObjects:@"Apples", @"Bananas", @"Oranges", nil];

    BOOL saved = [NSKeyedArchiver archiveRootObject:userInfo toFile:path];

    return saved;
}

- (NSArray *)LoadData
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask ,YES );
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingString:@"/cache.dat"];

    NSArray *userInfo = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

    return userInfo;
}

Надеюсь, это поможет

0 голосов
/ 24 июня 2011

Показать индикатор загрузки и скрыть просмотр таблицы, пока вы не загрузите данные из RSS.Вам нужно перезагрузить ваш UITableview после завершения синтаксического анализа XML Parser.Это будет работать.Если вы не хотите каждый раз загружать данные для сервера, вы можете хранить все данные в локальной базе данных sqlite.

0 голосов
/ 24 июня 2011

Вы можете попытаться показать представление загрузки поверх tabBar и удалить его, когда tableView завершит отображение данных.

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