2015-09-20 1 views
0

Я пытаюсь запрограммировать будильник, чтобы отключиться в пользовательское время, используя AVAudioPlayer и playAtTime, и когда я использую этот код [AVAudioPlayer playAtTime:dateTimeString]; , чтобы попытаться заставить его играть в пользователь установил время, я получаю эту ошибку no known class method for selector 'playAtTime'. Остальная часть моего кода следующим образомObjective-c не известен метод класса для селектора 'playAtTime'

#import "ViewController.h" 

@interface ViewController() 
{ 
     AVAudioPlayer *_myPlayer; 
} 
@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

NSString *path = [NSString stringWithFormat:@"%@/drum01.mp3", [[NSBundle mainBundle] resourcePath]]; 
NSURL *soundUrl = [NSURL fileURLWithPath:path]; 
_alarmPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; 

} 

-(IBAction) alarmSetButtonTapped:(id)sender { 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSString *dateTimeString = [dateFormatter stringFromDate: dateTimePicker.date ]; 
NSLog(@"Set button tapped : %@", dateTimeString); 

[AVAudioPlayer playAtTime:dateTimeString]; 

[self scheduleLocalNotificationWithDate: dateTimePicker.date]; 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 

И в viewcontroller.h

#import <UIKit/UIKit.h> 
#import <AvFoundation/AVFoundation.h> 

@interface ViewController : UIViewController <AVAudioPlayerDelegate> 
    { 
    IBOutlet UIDatePicker *dateTimePicker; 
    } 


-(IBAction) alarmSetButtonTapped:(id)sender; 

@end 

Как исправить эту ошибку и использовать playAtTime?

Благодаря

ответ

2

-[AVAudioPlayer playAtTime:] метод является методом экземпляра, а не метод класса, поэтому он должен быть вызван экземпляр (например, _alarmPlayer). Кроме того, его аргумент равен NSTimeInterval, а не строке.

В любом случае этот метод не делает то, что вы хотите здесь. Он используется для запуска игрока с точки, отличной от ее начала; аргумент указывает, как далеко в образец он должен начинаться. Это не означает, что в будущем образец аудио будет воспроизводиться.