gpt4 book ai didi

ios - 将数据传递到我的自定义NSObject?

转载 作者:行者123 更新时间:2023-12-03 02:34:35 25 4
gpt4 key购买 nike

我试图创建我的第一个自定义类“AudioPlayer”。我想将数据(音频标题)从表 View 传递到我的“AudioPlayer”,并使用 initWithContentsOfURL:[NSURL fileURLWithPath:path] 加载AudioPlayer,但是当我在“MainViewController”中分配“AudioPlayer”时,出现错误“使用初始化类型为'Audio Player * ___ strong'的不兼容指针类型和类型为AVAudioPLayer *的表达式”。我的问题是,如何使用所选音频的标题作为URL初始化自定义音频播放器?当我创建AVAudioPlayer的变量时,它可以正常工作,但是我不知道如何将其传递给自定义类。

这是我的自定义类标题。

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>

@interface AudioPlayer : NSObject{

AVAudioPlayer *audioPlayer;

//Volume slider
NSTimer *volumeTimer;
IBOutlet UISlider *volumeSlider;
}

-(bool) isPlaying;
-(bool) isPaused;

-(void)playPause:(id)sender;

@property (nonatomic, retain) AVAudioPlayer *audioPlayer;

@end

这是我的自定义类实现文件...
#import "AudioPlayer.h"

@implementation AudioPlayer

@synthesize audioPlayer;

-(void)playPause{

if ([audioPlayer isPlaying]) {

[audioPlayer pause];

} else {

[audioPlayer play];

}
}

-(void)volumeSlider
{
//Setup the volume slider
volumeTimer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(updateVolumeSlider) userInfo:nil repeats:YES];
[audioPlayer setVolume:volumeSlider.value];
}
@end

这是MainView实现...
- (void)viewDidLoad
{
[super viewDidLoad];

//Instantiate performanceArray
performanceArray = [[NSMutableArray alloc]initWithObjects:@"Centering", nil];

//Instantiate recoveryArray
recoveryArray = [[NSMutableArray alloc]initWithObjects:@"Power Nap", nil];

//Instantiate the AudioPlayer
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:self.tableView.indexPathForSelectedRow];
NSString *path = [[NSBundle mainBundle] pathForResource:cell.textLabel.text ofType:@"m4a"];
AudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
[audioPlayer.audioPlayer prepareToPlay];
}

最佳答案

我认为您正在将自定义类与AVAudioPlayer类混淆。
如果要向AVAudioPlayer的默认类添加更多方法和选项,则应子类化AVAudioPlayer而不是NSObject。

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#import <AudioToolbox/AudioToolbox.h>

@interface AudioPlayer : AVAudioPlayer
// the rest of your code


然后按照 deanandreakis 的回答,您需要分配/初始化您的类,而不是AVAudioPlayer。

含义:

AudioPlayer *audioPlayer = [[AudioPlayer alloc] init];


或者,您可以使用 categories将自定义方法添加到AVAudioPlayer中。

关于ios - 将数据传递到我的自定义NSObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com