iphone同时调用if和else吗?

时间:2010-05-11 18:00:30

标签: iphone cocoa if-statement

我需要确定文件的文件类型,然后为其执行某个操作。这似乎适用于某些类型,但所有媒体类型,如视频和声音文件混合起来。我通过这样做确定文件类型:

   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都会切换自己的播放器,因此它们重叠并在几秒钟内播放声音/视频。

任何帮助都将受到赞赏&感谢您抽出宝贵时间阅读我的代码。

1 个答案:

答案 0 :(得分:4)

你是不是错误地做了像

这样的事情
  if(conditionA)
  {
  ...
  }
  if(conditionB)
  {
  ...
  }
  else
  {
  ....
  }

在这种情况下,如果满足conditionAconditionB不满足,则执行else子句,因为第一个if子句在第二个if结束。你想要

  if(conditionA)
  {
  ...
  }
  else if(conditionB)
  {
  ...
  }
  else
  {
  ....
  }

代替。请注意else if

顺便说一句,您不必也不应该将BOOLYES进行比较。

 if(matchedMP3)

就够了。请记住,if接受里面的布尔表达式。布尔值是布尔表达式!