我有这段代码来加载 PHAsset:
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.networkAccessAllowed = YES;
[[PHImageManager defaultManager] requestAVAssetForVideo:[videos objectAtIndex:index] options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
selectedAsset = asset;
}];
它可以完美处理设备上存储的视频。但是如果代码应该从 iCloud 加载视频,它不会调用完成 block 。 你能帮帮我吗?
最佳答案
请尝试附加代码 1 到 3
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.networkAccessAllowed = YES;
//Additional code 1
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
[[PHImageManager defaultManager] requestAVAssetForVideo:[videos objectAtIndex:index] options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
selectedAsset = asset;
//Additional code 2
dispatch_semaphore_signal(semaphore);
}];
//Additional code 3
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
https://stackoverflow.com/questions/41705090/