J'ai besoin de déterminer quel type de fichier est un fichier et ensuite effectuer une certaine action pour cela. Cela semble fonctionner correctement pour certains types, mais tous les types de médias tels que les vidéos et les fichiers audio sont mélangés. Je détermine le type de fichier en faisant ceci:iphone appelle à la fois si et en même temps?
BOOL matchedMP3 = ([[rowValue pathExtension] isEqualToString:@"mp3"]);
if (matchedMP3 == YES)
{
NSLog(@"Matched MP3");
}
Je fais cela pour divers types de fichiers et de définir simplement un « autre » pour tous les autres. Voici le problème cependant. L'iPhone les appelle tous les deux. Voici ce que le journal révèle:
2010-05-11 18: 51: 12,421 test [5113: 207] Assorti MP3
2010-05-11 18: 51: 12,449 test [5113: 207] ELSE
Je n'avais jamais rien vu de tel auparavant.
Ceci est ma fonction "matchedMP3":
BOOL matchedMP3 = ([[rowValue pathExtension] isEqualToString:@"mp3"]);
if (matchedMP3 == YES)
{
NSLog(@"Matched MP3");
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *manager = [NSFileManager defaultManager];
self.directoryContent = [manager directoryContentsAtPath:documentsDirectory];
NSString *errorMessage = [documentsDirectory stringByAppendingString:@"/"];
NSString *urlAddress = [errorMessage stringByAppendingString:rowValue];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:urlAddress]];
moviePlayer.movieControlMode = MPMovieControlModeDefault;
moviePlayer.backgroundColor = [UIColor blackColor];
[moviePlayer play];
}
et est ici l'instruction else:
else {
NSLog(@"Matched ELSE");
[[NSUserDefaults standardUserDefaults] setObject:rowValue forKey:@"rowValue"];
NSString*rowValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"rowValue"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *manager = [NSFileManager defaultManager];
self.directoryContent = [manager directoryContentsAtPath:documentsDirectory];
NSString *errorMessage = [documentsDirectory stringByAppendingString:@"/"];
NSString *urlAddress = [errorMessage stringByAppendingString:rowValue];
webViewHeader.prompt = rowValue;
[documentViewer setDelegate:self];
NSString *encodedString = [urlAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//Create a URL object.
NSURL *url = [NSURL URLWithString:encodedString];
//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//Load the request in the UIWebView.
[documentViewer loadRequest:requestObj];
[navigationController pushViewController:webView animated:YES];
}
Je ne vois pas une raison pour laquelle cela ne fonctionnerait pas. Ce qui se passe, c'est que WebView et MediaPlayer basculent entre eux, de sorte qu'ils se chevauchent et jouent leur son/vidéo à quelques secondes l'un de l'autre.
Toute aide serait appréciée & merci de prendre le temps de lire mon code.
Une chance que dans le cas MP3, il appelle la fonction récursivement, directement ou indirectement? –
Ou votre test appelle-t-il simplement la fonction deux fois? –
Semble impossible :). La seule chose à laquelle je puisse arriver est que, êtes-vous sûr que vous n'avez pas = au lieu de == quelque part? J'ai eu ceci une fois ... si (x = YES) passerait bien sans aucun avertissement ... – texmex5