2011-12-14 24 views
3

私のアプリには100のビデオデータがあります。私はそれが一時停止または停止されているすべてのビデオ再生時間が必要NSUserDefaultsを使用してすべてのビデオ再生時間を格納する必要があります。どうすればこれを達成できますか?NSUserDefaultsを使用してデータを保存および取得する方法

私はこれを試しました。停止時間を表示するには問題ありませんが、停止または一時停止したビデオの長さを配列や辞書などの単一のキー値参照に保存する必要があります。

-(void) moviePlayerPlaybackStateDidChange:(NSNotification*)notification { 

    NSLog(@"playbackDidChanged"); 
    moviePlayer = notification.object; 
    MPMoviePlaybackState playbackState = moviePlayer.playbackState; 
    if(playbackState == MPMoviePlaybackStateStopped) { 
     NSLog(@"MPMoviePlaybackStateStopped at %f while the full length is %f", moviePlayer.currentPlaybackTime, moviePlayer.duration); 
     NSLog(@"video title %@",videoTitle); 
     [[NSUserDefaults standardUserDefaults] setDouble:moviePlayer.currentPlaybackTime forKey:videoTitle]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
     NSLog(@"User default value : %@", [[NSUserDefaults standardUserDefaults] objectForKey:videoTitle]); 
    } else if(playbackState == MPMoviePlaybackStatePlaying) { 
     NSLog(@"MPMoviePlaybackStatePlaying"); 
    } else if(playbackState == MPMoviePlaybackStatePaused) { 
     NSLog(@"MPMoviePlaybackStatePaused : %f",moviePlayer.currentPlaybackTime); 
     [[NSUserDefaults standardUserDefaults]setDouble:moviePlayer.currentPlaybackTime forKey:videoTitle]; 
    } 
} 
+0

自分のコードを追加しましたか? – ganesh

+1

なぜなら、 'setDouble:forKey:'の代わりに 'setObject:forKey:'を使って 'videoTitle'キーを' double'ではなく 'NSDictionary'として保存して、欲しいです。 (個人的には、非理想的なIMOのように、汚染された 'NSUserDefaults'のようなことをするために別のクラスを使用することに注意してください)。 – mattjgalloway

+0

私はそれを個々の値ではなく辞書として保存します。 –

答えて

1

実際、これについて考えると、あなたが各ビデオの場所を知っていて、これらの値をNSUserDefaultsに追加するように設定されていれば、すべてを辞書の配列に保存します。それからあなたは100よりむしろデフォルトへの1つのエントリーしか持っていません。そしてあなたが必要とするものを簡単に理解することができます。

関連する問題