我是我的程序,我正在加载一个相当大的 MutableDictionray,我想使用 UIProgressBar。有没有人建议如何确定加载时间以使其工作?
谢谢
我是我的程序,我正在加载一个相当大的 MutableDictionray,我想使用 UIProgressBar。有没有人建议如何确定加载时间以使其工作?
谢谢
我不相信你会找到一个简单的答案,但这里有一些提示。我假设您当前正在使用-dictionaryWithContentsOfFile:
.
首先,与其强迫用户等待长时间的加载,不如考虑更改您的数据存储。与非常大的字典相比,Core Data 可能是一个更好的工具。
将文件读入NSData
using-[NSFileHandle readDataOfLength:]
以便对其进行分块,以便您可以更新进度条。您可以在后台线程上执行此操作并发布通知或在主线程上调用委托方法以更新进度指示器。
您可能想尝试使用-readInBackgroundAndNotify
. 我不知道 iPhone 的缓冲区大小,但它可能足够小,可以以合理的时间间隔获取通知,并且它应该消除管理您自己的后台线程的需要。
将数据读入.NSData
之后,使用 . 解析它+[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:
。希望这应该足够快,不会挂起任何东西,但如果太慢,您可以在后台线程上执行此操作,并将其作为您上次进度条更新的一部分。可能需要进行一些实验才能在此处获得流畅的 UI。