#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
‘spathExtension
вместо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. Я благодарю тебя, Энди. Просто проводил различие между обоими понятиями 🙂