Dans le Les "clés d'attributs de fichiers" de l'interface utilisateur. NSFileManager référence de classe vous pouvez voir qu'il n'y a pas de touche à utiliser qui renvoie la durée d'une chanson. Toutes les informations que le NSFileManager L'instance obtient à propos d'un fichier est en rapport avec les propriétés du fichier lui-même dans le système d'exploitation, comme sa taille. Le site NSFileManager n'interprète pas réellement le fichier.
Afin d'obtenir la durée du fichier, vous devez utiliser une classe qui sait comment interpréter le fichier. Le site AVFoundation fournit la classe exacte dont vous avez besoin, AVAsset . Vous pouvez instancier une instance de cette classe abstraite à l'aide de la sous-classe concrète AVURLAsset et lui fournir ensuite un NSURL qui pointe vers le fichier audio dont vous souhaitez obtenir la durée. Vous pouvez ensuite obtenir la durée à partir de la fonction AVAsset en interrogeant son duration
propriété.
Par exemple :
AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:audioFileURL options:nil];
CMTime audioDuration = audioAsset.duration;
float audioDurationSeconds = CMTimeGetSeconds(audioDuration);
Notez que AVFoundation est conçu comme un cadre fortement asynchrone afin d'améliorer les performances et l'expérience globale de l'utilisateur. Même l'exécution de tâches simples, telles que l'interrogation de la durée d'un fichier multimédia, peut potentiellement prendre beaucoup de temps et provoquer le blocage de votre application. Vous devez utiliser la fonction Protocole AVAsynchronousKeyValueLoading pour charger de manière asynchrone la durée de la chanson, puis mettre à jour votre interface utilisateur dans un bloc de traitement d'achèvement. Vous devriez jeter un coup d'œil au Guide de programmation par blocs ainsi que la vidéo de la WWDC2010 intitulée "Discovering AV Foundation", qui est disponible gratuitement à l'adresse suivante https://developer.apple.com/videos/wwdc/2010 .