2011-05-24 17 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