如何使用NSUserDefaults保存和检索数据

时间:2011-12-14 12:03:06

标签: ios nsuserdefaults

我的应用中有100个视频的数据。我需要暂停或停止时的每个视频播放时间我需要使用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];
    } 
}

1 个答案:

答案 0 :(得分:1)

实际上,当我想到这一点。如果您知道每个视频的位置,并且您已将这些值添加到NSUserDefaults,我会将所有内容存储在一个字典数组中。那么你只有一个默认值而不是100个条目。并且应该很容易找出你需要的那个。