Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIProgressBar加载NSMutableDictionary_Objective C_Iphone_Cocoa Touch_Progress Bar - Fatal编程技术网

Objective c UIProgressBar加载NSMutableDictionary

Objective c UIProgressBar加载NSMutableDictionary,objective-c,iphone,cocoa-touch,progress-bar,Objective C,Iphone,Cocoa Touch,Progress Bar,我是我的程序,我正在加载一个相当大的MutableDictionray,我想使用UIProgressBar。是否有人对如何确定装载时间以使其工作有建议 谢谢我不相信你会找到一个简单的答案,但这里有一些建议。我假设您当前正在使用-dictionaryWithContentsOfFile:加载此文件 >首先,强迫用户等待长负载,考虑更改数据存储。核心数据可能是一个更好的工具,而不是一个非常大的字典 使用-[NSFileHandle readDataOfLength:将文件读入一个NSData,以

我是我的程序,我正在加载一个相当大的MutableDictionray,我想使用UIProgressBar。是否有人对如何确定装载时间以使其工作有建议


谢谢

我不相信你会找到一个简单的答案,但这里有一些建议。我假设您当前正在使用
-dictionaryWithContentsOfFile:
加载此文件

    <> >首先,强迫用户等待长负载,考虑更改数据存储。核心数据可能是一个更好的工具,而不是一个非常大的字典

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

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

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


我想不起有一次我在iphone上看到了进度条,在最初的安装中接受。UIActivityIndicators的使用频率更高,如果您需要一个快速的使用指南,我可以提供帮助。很抱歉让您从最初的问题中分心。实际上它们经常使用。它们的值为0.0-1.0。我只需要我知道如何使用UIActivityIndicator,但是对于这个程序来说,进度条在视觉上会更好。