Проблемы с AVAudioPlayer - PullRequest
       2

Проблемы с AVAudioPlayer

7 голосов
/ 21 марта 2011

Я новичок в разработке iPhone.

Я хочу воспроизводить звук при нажатии кнопки UIB.Я попробовал следующее:

ViewController.h:

@interface JahrenzeitenViewController : UIViewController <AVAudioPlayerDelegate> {

    UIButton *button_PlaySound;
    AVAudioPlayer *audioPlayer;
}

@property (nonatomic, retain) IBOutlet UIButton *button_PlaySound;

ViewController.m

- (IBAction)playSound {

    //[audioPlayer release];
    //audioPlayer = nil;

    NSString *audioFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
    NSURL *audioFileURL = [NSURL fileURLWithPath:audioFilePath];
    NSError *error = nil;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];
    [audioPlayer setDelegate:self];
    [audioPlayer prepareToPlay];
    [audioPlayer play];
    if (audioPlayer == nil) 
        NSLog(@"Error playing sound. %@", [error description]);
    else
        [audioPlayer play];

Если я пытаюсь запустить приложение, я получаю следующую ошибку:

Неопределенные символы для архитектуры i386: «_OBJC_CLASS _ $ _ AVAudioPlayer», ссылка на которую: objc-class-ref в JahrenzeitenViewController.o ld: символы не найдены для архитектуры i386 collect2: ld вернул 1 выходstatus

Я также пытался изменить строку

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:&error];

на

audioPlayer = [audioPlayer initWithContentsOfURL:audioFileURL error:&error];

Тогда я не получаю сообщение об ошибке выше, но его по-прежнему нетиграя, и я получаю сообщение DebugMessage из моего NSLog в методе "playSound":

Ошибка воспроизведения звука.(NULL)

Я надеюсь, что вы можете мне помочь.Заранее спасибо:)

Ответы [ 4 ]

30 голосов
/ 21 марта 2011

Вам необходимо добавить фреймворк AVFoundation в ваш проект. (щелкните правой кнопкой мыши на своей главной цели, затем добавьте существующую структуру).

6 голосов
/ 21 марта 2011

Чтобы добавить к другим ответам.

Вы всегда должны смотреть на документацию класса 'Т.е. AVAudioPlayer .То, что вы не знаете, когда вы собираетесь его использовать.В верхней части документации (Ссылка на класс) для этого класса находится таблица, показывающая, к какой структуре относится класс:

enter image description here

Как только вы это узнаете, добавьте структуру кпроект.А также импортируйте его в файл заголовка (.h), как указали другие

4 голосов
/ 21 марта 2011

спасибо, это сработало. Я не знал, что мне нужно добавить Framework: S

Я использовал следующие инструкции:

  1. В навигаторе проекта выберите ваш проект
  2. Выберите цель
  3. Выберите вкладку «Фазы сборки»
  4. Открыть расширитель 'Link Binaries With Libraries'
  5. Нажмите кнопку «+»
  6. Выберите рамки
0 голосов
/ 21 марта 2011

Просьба добавить фреймворк AVFoundation в ваш проект.И я думаю, что вы должны добавить <AVFoundation/AVFoundation.h> вместе с <AudioToolbox/AudioToolbox.h>

...