Проблемы с AVAudioPlayer

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

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

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 статус выхода

Я тоже пробовал менять Строку

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

to

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

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

Ошибка воспроизведения звука. (НУЛЕВОЙ)

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


person Kevin Glier    schedule 21.03.2011    source источник


Ответы (4)


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

person Jilouc    schedule 21.03.2011
comment
Хм, в .h-файле есть импорт для этого, я думаю (я забыл их опубликовать): #import ‹UIKit / UIKit.h› #import ‹AVFoundation / AVAudioPlayer.h› #import ‹AudioToolbox / AudioToolbox.h› Вы это имели в виду? - person Kevin Glier; 21.03.2011

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

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

введите описание изображения здесь

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

person markhunte    schedule 21.03.2011

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

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

  1. В навигаторе проекта выберите свой проект
  2. Выберите вашу цель
  3. Выберите вкладку "Build Phases".
  4. Откройте расширитель 'Link Binaries With Libraries'
  5. Нажмите кнопку "+"
  6. Выберите свой фреймворк
person Kevin Glier    schedule 21.03.2011

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

person visakh7    schedule 21.03.2011