ИЛИ и И Синтаксис в условии If

#iphone

#iPhone

Вопрос:

Я хочу сохранить все звуковые файлы в одном массиве, таком как .caf, .avi,.mp3.. Как я могу проверить условие OR для этого.Я запутался в синтаксисе.

 #define kSoundFileExtension @"caf"
#define kSoundfileExtnesion @"mp3"

    if ([fileName rangeOfString:kSoundFileExtension].location != NSNotFound) {
                [self.soundFiles addObject:fileName];
    }
  

Ответ №1:

Вам нужно было бы присвоить каждому расширению другой идентификатор, а затем проверить наличие обоих, вот так:

 #define kSoundFileCAFExtension @"caf"
#define kSoundFileMP3Extension @"mp3"

if (([fileName rangeOfString:kSoundFileCAFExtension].location != NSNotFound) ||
    ([fileName rangeOfString:kSoundFileMP3Extension].location != NSNotFound)) {
            [self.soundFiles addObject:fileName];
}
  

Ответ №2:

 NSArray *exts = [NSArray arrayWithObjects:@"caf",@"mp3",nil];

for(NSString *ext in exts) {
    if ([[fileName pathExtension] isEqualToString:ext]) {
        [self.soundFiles addObject:fileName];
        break;
    }
}
  

Комментарии:

1. Я думаю, что лучше добавить разрыв внутри оператора if следующим образом: NSArray *exts = [NSArray arrayWithObjects:@»caf»,@»mp3″, nil]; for(NSString *ext в exts) { if (([fileName rangeOfString:ext].location != NSNotFound) { [self.soundFiles AddObject:fileName]; break; } }

2. Выполнено. Также, не связанный с этим вопросом, но, возможно, было бы лучше использовать NSString ‘s pathExtension вместо rangeOfString проверки расширения файла.

Ответ №3:

Это для OR :

 if (([fileName rangeOfString:kSoundFileCAFExtension].location != NSNotFound) ||
([fileName rangeOfString:kSoundFileMP3Extension].location != NSNotFound)) {  
  

Это для И :

 if (([fileName rangeOfString:kSoundFileCAFExtension].location != NSNotFound) amp;amp;
([fileName rangeOfString:kSoundFileMP3Extension].location != NSNotFound)) {  
  

В первом случае любое из двух должно выполнить условие, а во втором случае оба должны выполнить условие.

Комментарии:

1. Хотя в реальной жизни вы, вероятно, никогда не захотели бы проверять, имеет ли файл расширение .mp3 и .caf

2. Я благодарю тебя, Энди. Просто проводил различие между обоими понятиями 🙂