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 に答える