UIProgressBar, загружающий NSMutableDictionary - PullRequest
0 голосов
/ 22 июля 2009

Я - моя программа, я загружаю довольно большой MutableDictionray, и я хотел бы использовать UIProgressBar. У кого-нибудь есть предложения, как определить время загрузки для этой работы?

Спасибо

1 Ответ

1 голос
/ 22 июля 2009

Я не верю, что вы найдете простой ответ на этот вопрос, но вот несколько советов. Я предполагаю, что вы в настоящее время загружаете это с -dictionaryWithContentsOfFile:.

  • Во-первых, вместо того, чтобы заставлять пользователя ждать долгой загрузки, рассмотрите возможность изменения хранилища данных. Базовые данные могут быть лучшим инструментом для этого, чем очень большой словарь.

  • Считайте файл в NSData, используя -[NSFileHandle readDataOfLength:], чтобы разделить его на части, чтобы вы могли обновить индикатор выполнения. Вы можете сделать это в фоновом потоке и публиковать уведомления или вызвать метод делегата в главном потоке, чтобы позволить индикатору прогресса обновляться.

  • Вы можете поэкспериментировать с -readInBackgroundAndNotify. Я не знаю размера буфера для iPhone, но он может быть достаточно маленьким, чтобы получать уведомления через разумные промежутки времени, и это должно устранить необходимость управлять собственным фоновым потоком.

  • Как только вы прочитаете данные в NSData, проанализируйте их, используя +[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:. Надеемся, что это должно быть достаточно быстро, чтобы ничего не зависать, но если это слишком медленно, вы можете сделать это в фоновом потоке и сделать его частью вашего последнего обновления индикатора выполнения. Некоторые эксперименты могут потребоваться, чтобы получить гладкий интерфейс здесь.

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