Я - моя программа, я загружаю довольно большой MutableDictionray, и я хотел бы использовать UIProgressBar. У кого-нибудь есть предложения, как определить время загрузки для этой работы?
Спасибо
Я не верю, что вы найдете простой ответ на этот вопрос, но вот несколько советов. Я предполагаю, что вы в настоящее время загружаете это с -dictionaryWithContentsOfFile:.
-dictionaryWithContentsOfFile:
Во-первых, вместо того, чтобы заставлять пользователя ждать долгой загрузки, рассмотрите возможность изменения хранилища данных. Базовые данные могут быть лучшим инструментом для этого, чем очень большой словарь.
Считайте файл в NSData, используя -[NSFileHandle readDataOfLength:], чтобы разделить его на части, чтобы вы могли обновить индикатор выполнения. Вы можете сделать это в фоновом потоке и публиковать уведомления или вызвать метод делегата в главном потоке, чтобы позволить индикатору прогресса обновляться.
NSData
-[NSFileHandle readDataOfLength:]
Вы можете поэкспериментировать с -readInBackgroundAndNotify. Я не знаю размера буфера для iPhone, но он может быть достаточно маленьким, чтобы получать уведомления через разумные промежутки времени, и это должно устранить необходимость управлять собственным фоновым потоком.
-readInBackgroundAndNotify
Как только вы прочитаете данные в NSData, проанализируйте их, используя +[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:. Надеемся, что это должно быть достаточно быстро, чтобы ничего не зависать, но если это слишком медленно, вы можете сделать это в фоновом потоке и сделать его частью вашего последнего обновления индикатора выполнения. Некоторые эксперименты могут потребоваться, чтобы получить гладкий интерфейс здесь.
+[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription: