2009-07-21 71 views
0

我为我的节目我加载一个相当大的MutableDictionray,我想用一个UIProgressBar。有没有人有建议如何确定加载时间,使这项工作?UIProgressBar加载的NSMutableDictionary

感谢

+0

我想不出有一次我看到iphone上的进度条,接受原始安装。 UIActivityIndi​​cators更频繁使用,如果您需要使用快速教程,我可以提供帮助。对不起,您的原始问题分心了。 – TahoeWolverine 2009-07-21 20:57:32

回答

1

我不相信你会找到一个简单的答案,但这里有一些指针。我假设你目前正在用-dictionaryWithContentsOfFile:加载这个。

  • 首先,不是强迫用户等待长时间加载,而是考虑更改数据存储。核心数据可能是一个比一个非常大的词典更好的工具。

  • 使用-[NSFileHandle readDataOfLength:]将文件读入NSData以便将其分块,以便更新进度栏。您可以在后台线程上执行此操作,并发布通知或在主线程上调用委派方法以更新进度指示器。

  • 您可能想要试验-readInBackgroundAndNotify。我不知道iPhone头部的缓冲区大小,但它可能足够小,以合理的间隔返回通知,并且它应该消除管理自己的后台线程的需要。

  • 将数据读入NSData后,使用+[NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:解析数据。这应该足够快,不会挂起任何东西,但如果速度太慢,可以在后台线程上执行此操作,并使其成为上次进度条更新的一部分。可能需要进行一些实验才能让用户界面更流畅。