0

我有一个应用程序,它显示带有图像和/或视频的文本数据,这些图像和/或视频显示在UITableView. 我现在有一个要求,数据必须离线可用。每次连接时,我都在考虑清除和存储数据,即正在下载新数据。如何实现 - 将数据存储在 mysql 表或任何其他解决方案中。请注意,我正在使用 AFNetworking 在 uiimageview 中流式传输图像。图像和视频应该存储为 blob 是本地 mysql 数据库吗?请注意,我的项目没有使用 coredata。

4

1 回答 1

0

最好的方法可能是下载媒体文件并将其存储在caches目录中。

然后,当您需要访问一个文件时,您可以检查它是否存在,如果存在,则使用它,如果不存在,则以您需要的任何方式处理该条件。

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if(![fileManager fileExistsAtPath:[cachePath stringByAppendingPathComponent:@"myfile.zip"]]) {
    //create it, copy it from app bundle, download it etc.
}
//start using it

缓存目录不会与应用程序的其余部分一起备份,因此如果您有大文件,您不会以这种方式影响用户的备份存储大小。

如果您绝对必须在备份中有文件,请使用Documents目录而不是caches目录。

您说您使用的是AFNetworking,它可以将下载流式传输到文件中,甚至支持将任务转换为后台操作,以便在应用程序关闭后完成。

于 2013-08-19T15:18:25.480 回答