5

我有一个要求,我有一个使用MPMediaPlayerController. 除了视频,我还有两个按钮,我需要在单击按钮时捕获当前播放时间并单独存储所有相关的点击。我可以使用返回的“currentPlaybackTime”属性获取视频的当前播放时间NSTimeInterval。但是有人可以帮助我如何将所有NSTimeInterval值存储到NSMutableDictionary. 我尝试了以下方法:

-(void)onClickOfGood {
    NSLog(@"The current playback time in good:%g",moviePlayerController.currentPlaybackTime);
    currentPlaybackTime = moviePlayerController.currentPlaybackTime;
    //NSArray *arrayContainsGoodClicks = [[NSArray alloc]initWithObjects:currentPlaybackTime, nil ];
    NSNumber *goodTimeIntervals = [NSNumber numberWithDouble:currentPlaybackTime];
    NSMutableArray *arrayContainsGoodClicks = [[NSMutableArray alloc]initWithObjects:goodTimeIntervals,nil ];
    NSLog(@"The total count of Array is: %i",[arrayContainsGoodClicks count]);}

但是每次单击好按钮后,我都会将数组计数为 1。有人可以指出我哪里出错了吗?

4

3 回答 3

3

但是每次单击好按钮后,我都会将数组计数为 1。

NSMutableArray这并不奇怪,考虑到您正在前一行创建一个全新的。

要解决此问题,您需要创建NSMutableArray *arrayContainsGoodClicks一个实例变量(AKA ivar),[NSMutableArray array]在您指定的初始化程序中将其初始化,然后使用

[arrayContainsGoodClicks addObject:goodTimeIntervals];

将对象添加到数组中。

如果您希望NSMutableDictionary改用该策略,则该策略将是相同的,只是您需要决定一个对象,您想将其用作NSDictionary. 另请记住,NSMutableDictionary它不是有序的,因此您可能需要在每次向用户显示字典项目时进行排序。

于 2012-04-09T15:11:00.227 回答
1

您只需要创建arrayContainsGoodClicks一次(例如在 init 方法中),然后在您的按钮处理程序中向该数组添加值:

//.h
NSMutableArray *arrayContainsGoodClicks;

//.m - init
arrayContainsGoodClicks = [NSMutableArray array];

//.m - button handler
[arrayContainsGoodClicks addObject:goodTimeIntervals];
于 2012-04-09T15:11:53.080 回答
1

您需要创建数组并将其存储为 ivar。

@property (retain, nonatomic) NSMutableArray *clicksArray;
...
@synthesize clicksArray;

现在在您的 -init 方法中创建数组,如..

self.clicksArray = [NSMutableArray array];

并且每次都将对象添加到数组中,这样你的 -onClickOfGood 就会变成......

...
[self.clicksArray addObject: goodTimeIntervals];
NSLog(@"The total count of Array is: %i",[self.clicksArray count]);
于 2012-04-09T15:19:41.707 回答