我正在编写一个通过HTTP从远程服务器(无人机)导入视频文件的应用程序。将文件下载到本地存储空间(/Documents/video
)后,我使用PHPhotLibrary
将其导入PHAssetChangeRequest.FromVideo
中的自定义相册。
我可以导入视频,当在模拟器中访问照片应用时,视频会显示在正确的相册中。但是,如果我从相册中删除该文件,则不会从我的应用/Documents/video
文件夹中删除该文件。
然后我尝试使用/Documents/video
导出文件后从PHAssetChangeRequest.FromVideo
删除该文件,但视频会从照片应用中消失。
如何确保视频文件只有一个副本,最好存储在共享照片库中?我可以检测到文件已被删除,以便我可以从/Documents/video
文件夹中删除它吗?或者我需要"同步"每次应用程序启动时我的自我?
答案 0 :(得分:0)
我认为您应该将下载的视频存储到临时目录,例如
NSString *outputPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output.mov"];
然后您可以将其存储到照片应用中。
将其存储到临时目录中的好处是操作系统会在需要时自动清除它,但您可以随时通过创建以下类方法手动删除它
+ (void)clearTemporaryDirectoryData
{
NSArray* tempDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
for (NSString *file in tempDirectory) {
[[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
}
}
在您的情况下,您可以在将下载的视频保存到照片应用程序后删除临时数据。