我需要确定文件的文件类型,然后为其执行某个操作。这似乎适用于某些类型,但所有媒体类型,如视频和声音文件混合起来。我通过这样做确定文件类型:
BOOL matchedMP3 = ([[rowValue pathExtension] isEqualToString:@"mp3"]);
if (matchedMP3 == YES)
{
NSLog(@"Matched MP3");
}
我为各种文件类型执行此操作,并为所有其他文件类型定义“else”。不过这是问题所在。 iPhone称他们为两个。这是日志显示的内容:
2010-05-11 18:51:12.421测试[5113:207]匹配MP3
2010-05-11 18:51:12.449测试[5113:207]匹配ELSE
我以前从未见过这样的事情。
这是我的“匹配MP3”功能:
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];
}
这是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];
}
我看不出它为什么不起作用的原因。发生的事情是webview和MediaPlayer都会切换自己的播放器,因此它们重叠并在几秒钟内播放声音/视频。
任何帮助都将受到赞赏&感谢您抽出宝贵时间阅读我的代码。
答案 0 :(得分:4)
你是不是错误地做了像
这样的事情 if(conditionA)
{
...
}
if(conditionB)
{
...
}
else
{
....
}
在这种情况下,如果满足conditionA
但conditionB
不满足,则执行else子句,因为第一个if子句在第二个if结束。你想要
if(conditionA)
{
...
}
else if(conditionB)
{
...
}
else
{
....
}
代替。请注意else if
。
顺便说一句,您不必也不应该将BOOL
与YES
进行比较。
if(matchedMP3)
就够了。请记住,if
接受里面的布尔表达式。布尔值是布尔表达式!