2011-05-24 53 views
0

我想将所有声音文件保存在一个数组中,例如.caf,.avi,.mp3 ..我该如何检查OR条件。我对语法感到困惑。如果条件为OR和AND语法

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

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

回答

1

这是OR

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

这是用于

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

第一壳体以下两种需要满足的条件和在第二壳体都需要满足的条件。

+1

尽管在现实生活中,你可能永远都不想检查一个文件是否有两个.mp3和.caf扩展名 – andygeers 2011-05-24 11:16:38

+0

我很喜欢你,只是区分这两个概念:) – Nitish 2011-05-24 11:30:04

3

你就需要给每个分机不同的标识符,然后同时检查,像这样:

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

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

位长啰嗦,但它的作品。 – Abizern 2011-05-24 10:18:34

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

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

我认为最好在if语句中添加一个break,如下所示: NSArray * exts = [NSArray arrayWithObjects:@“caf”,@“mp3”,nil]; 为(* NSString的在EXTS EXT){ 如果((文件名rangeOfString:EXT] .location = NSNotFound){ [self.soundFiles ADDOBJECT:文件名];! 断裂; } } – martiall 2011-05-24 10:18:25

+0

完成而且,。与这个问题无关,但最好使用'NSString'的'pathExtension'来代替'rangeOfString'来检查文件的扩展名。 – pt2ph8 2011-05-24 10:23:08