2

iOS 6、iPhone 5、Xcode 4.5

我有一个应用程序,让用户可以将文件从 Internet 下载到文档文件夹,然后将它们填充到数组中,然后再填充到 tableview 中。在 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现在有一个文档文件夹缓存,并且在应用程序重新启动之前缓存不会更新!

它在 iOS 5 中运行良好。

感谢阅读和帮助:)

4

1 回答 1

2

You should not use NSBundle to access files in the documents directory. Instead use 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 回答