我的目标是以这种方式将 audioPlayer 实例的引用存储在核心数据中,以便稍后我可以在该条目上使用属性。像这样:
-(void)didTapButton
{
if (!self.sound.audioPlayer.playing)
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"playSound" object:self.sound];
self.soundProgress.hidden = NO;
} else {
[[NSNotificationCenter defaultCenter] postNotificationName:@"stopSound" object:self.sound];
self.soundProgress.hidden = YES;
}
}
我的 MOS 看起来像这样
@interface MCSound : NSManagedObject
@property (nonatomic, retain) AVAudioPlayer *audioPlayer;
@property (nonatomic, retain) NSString * category;
@property (nonatomic, retain) NSString * duration;
@property (nonatomic, retain) NSString * fileURL;
@property (nonatomic, retain) NSString * id;
@property (nonatomic, retain) NSNumber * isLooping;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * theme;
@property (nonatomic, retain) MCTheme *ofTheme;
@end
到目前为止有效。但是,如果我再次生成 MOS,则 AVAudioPlayer 类将被 id 替换。有没有办法我可以用类别做到这一点?我是否必须在类别之后使用我的声音实例的类别?
编辑
我需要在应用程序运行时引用 AVAudioPlayer,因为我经常切换视图,并且 AVAudioPlayer 被初始化为一个 gridView。结构是:
gridView -> detailView -> soundButton
按钮向设置了 AVAudioPlayer 的 gridView 发送通知。当我回到 detailView 时,我必须显示声音是否仍在播放,并且正在播放的时间必须显示在进度条上。我使用 NSMutableDisctionary 进行了所有操作,但现在切换到核心数据模型,因为我必须使用默认声音集预填充数据库。
因此,我认为这是在录音中引用 AVAudioPlayer 的最佳方式。因为当我回到detailView时需要audioPlayer的引用。我必须知道它是否还在播放和播放时间。
你会怎么解决?