私の目標は、後でそのエントリのプロパティを使用できるように、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 は 1 つの gridView で初期化されます。構造は次のとおりです。
gridView -> detailView -> サウンドボタン
ボタンは、AVAudioPlayer が開始された gridView に通知を送信します。detailView に戻ったら、サウンドがまだ再生中であるかどうかを表示する必要があり、playingTime をプログレスバーに表示する必要があります。私はすべてNSMutableDisctionaryを使用していましたが、コアデータモデルに切り替えると、データベースにデフォルトのサウンドセットを事前に入力する必要があります。
したがって、サウンド レコードで AVAudioPlayer への参照を配置するのが最善の方法だと思いました。detailView に戻ったときに audioPlayer の参照が必要だからです。まだ再生中かどうかと、playingTime を知る必要があります。
どのように解決しますか?