2017-01-17 4 views
2

J'ai ce code pour charger un PHAsset:requestAVAssetForVideo ne montre pas le bloc d'achèvement

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; 
}]; 

Il fonctionne parfaitement bien avec des vidéos stockées sur l'appareil. Mais si le code doit charger une vidéo à partir d'iCloud, il n'appelle pas le bloc d'achèvement. Pouvez-vous m'aider?

Répondre

-1

S'il vous plaît essayer les codes complémentaire 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);