1

我正在尝试在此处搜索名为 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");
        }
    }
}

有人可以用解决方案打我还是在这里定义问题所在

4

1 回答 1

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 秒的延迟,那么问题不是搜索,而是 plist 的大小以及您需要对它们进行的处理。您可能只需要在加载它们时输入“请稍候”消息和微调器。

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

于 2013-02-08T11:31:13.120 回答