【发布时间】:2013-07-29 20:16:36
【问题描述】:
我希望这是可能的。
我有代码在应用启动后加载非常大的文件(字典):
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSString *filePath = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"en_US" ofType:@"txt"]
encoding:NSUTF8StringEncoding error:nil];
dictionary = [NSSet setWithArray:[NSArray arrayWithArray:
[filePath componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]]]];
}
我在viewDidLoad 中也有正确的代码:
- (void)viewDidLoad {
[super viewDidLoad];
self.progressView.progress = 0.0;
[self performSelectorOnMainThread:
@selector(applicationDidFinishLaunching:)
withObject:nil
waitUntilDone:NO];
}
但我不知道如何强制UIProgressView 显示从NSArray 创建NSSet dictionary 的进度。在 iOS 模拟器中需要几秒钟,所以在设备上可能需要十几秒钟。我真的需要显示进度,我更喜欢这种方式而不是活动指示器视图。
我现在对如何获取进口商品的数量感兴趣(所有商品的数量都是已知的)。
有什么想法吗? :)
【问题讨论】:
-
您知道哪个部分花费的时间比您想要的要长吗?阅读文件还是构建字典?
-
我不确定您的上述代码是从文件中读取的。相反,它似乎是从文件路径组件形成的数组中形成一个集合。它绝不会读取实际的文件字节。我在这里有什么遗漏吗?
-
@MikeD 第一个。从数组构建字典几乎不引人注意。
-
@NiravBhatt 好吧,你是对的。我以为我可以在创建它的同时重复读取 NSArray 项目的数量,并用它来计算进度,但看起来不可能。你有什么想法以另一种方式实现吗?
-
根据您的数据结构要求,您最终会调用 arraywithcontentsoffile 或 dictionarywithcontentsofffile 或它的任何变体。您的 filePath 变量将成为这些函数之一的参数。并不是说它们提供了基于时间的进度。它们只是在完整读取完成后返回的一次性函数。为了取得进步,您可能需要编写自己的 C 例程。
标签: iphone ios objective-c nsarray uiprogressview