iOS 6,iPhone 5,Xcode 4.5
我有一个应用程序,允许用户将文件从Internet下载到文档文件夹,然后将它们填充到数组中,然后填充到tableview。使用iOS 5,我的数组和tableview会自动使用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中运行得非常好。
感谢阅读和帮助:)
答案 0 :(得分: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];
}
}