2

iOS 6、iPhone 5、Xcode 4.5

私は、ユーザーがインターネットからドキュメントフォルダーにファイルをダウンロードし、それらを配列に入力してからテーブルビューに入力できるようにするアプリを持っています。iOS 5では、配列とテーブルビューがviewWillAppearの次のコードで自動的に更新されます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSArray *dataArray = [[NSBundle bundleWithPath:[paths objectAtIndex:0]] pathsForResourcesOfType:@"mp3" inDirectory:nil];

iOS 6では、新しいファイルが追加/削除されたときにドキュメントフォルダーが更新されないことに気付きました。ただし、アプリを終了して(下部のマルチタスクを終了して)再度開くと、ドキュメントフォルダーから新しいデータが再読み込みされます。

上記と同じコードでアプリがviewWillAppearを読み込んだ場合でも、データはまだ古いものです。iOS 6には現在、ドキュメントフォルダーのキャッシュがあり、アプリが再起動されるまでキャッシュは更新されないようです。

iOS5では完全に正常に機能しました。

読んで助けてくれてありがとう:)

4

1 に答える 1

2

ドキュメントディレクトリ内のファイルにアクセスするためにNSBundleを使用しないでください。代わりにNSFileManagerを使用してください。

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString* path = [paths objectAtIndex:0];
 NSError* error;
 NSFileManager* fm = [NSFileManager defaultManager];

 for(NSString* filename in [fm contentsOfDirectoryAtPath:path error:&error]) {
    if([filename hasSuffix:@"mp3"]) {
      NSString *filePath = [path stringByAppendingPathComponent:filename];
      [_filelist addObject:filePath];
    }
 }
于 2012-10-21T09:17:01.460 に答える