文件搜索花费了太多时间

时间:2013-02-08 11:28:06

标签: objective-c cocoa-touch

我正在尝试在这里搜索名为1到6的plist,并且我编写了这段代码,并且它使应用程序再消耗3秒钟来加载原始时间....代码是

for (int i=1;i<6;i++) {
    NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
    NSArray *dirContents = [[NSFileManager defaultManager] directoryContentsAtPath:bundleRoot];
    for (NSString *tString in dirContents) {
        if ([tString hasPrefix:[NSString stringWithFormat:@"%d",i]] && [tString hasSuffix:@".plist"]) { 
            NSLog(@"file found");
            NSString *plist = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",i] ofType:@"plist"];
            mute = [NSMutableArray arrayWithContentsOfFile:plist];
            [mute addObjectsFromArray:contentArray];
            contentArray = mute;
        }
        else {
            NSLog(@"not found");
        }
    }
}

有人可以用解决方案打我,或者定义这里的错误

1 个答案:

答案 0 :(得分:1)

这不是很有效:)

试试这个:

for (int i = 1; i <= 6; ++i) {
  // Load the plist
  NSString *plist = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d",i] ofType:@"plist"];
  if (nil == plist) {
    NSLog(@"not found (%i)", i);
    continue;
  }

  // Do something with your plist
  mute = [NSMutableArray arrayWithContentsOfFile:plist];
  [contentArray addObjectsFromArray:mute];
}

如果你仍然得到3秒的延迟,那么问题不在于搜索,而是你需要对它们进行处理的大小和处理。您可能只需要在加载时发出“请稍候”消息和微调器。

或者你可以尝试在后台线程上加载它们,这样你的ui仍然有用。我想这取决于你的应用程序中还发生了什么!