如何将NSTimeInterval值存储到NSMutableArray中?

时间:2012-04-09 15:05:07

标签: iphone objective-c ios5 nsmutablearray nstimeinterval

我有一个要求,我有一个使用MPMediaPlayerController播放的视频。除了视频我还有两个按钮,我需要在点击按钮时捕获当前的播放时间并单独存储所有相关的点击。我可以使用返回NSTimeInterval的“currentPlaybackTime”属性来获取视频的当前播放时间。但有人可以帮助我将所有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.有人可以点亮我出错的地方吗?

3 个答案:

答案 0 :(得分:3)

  

但是每次点击好按钮后,我都会将阵列计数仅为1。

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

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

[arrayContainsGoodClicks addObject:goodTimeIntervals];

将对象添加到数组中。

如果您希望使用NSMutableDictionary,策略将是相同的,除非您需要决定要用作NSDictionary的唯一键的对象。另请注意,NSMutableDictionary未订购,因此每次向用户显示字典项时都可能需要进行排序。

答案 1 :(得分:1)

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

//.h
NSMutableArray *arrayContainsGoodClicks;

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

//.m - button handler
[arrayContainsGoodClicks addObject:goodTimeIntervals];

答案 2 :(得分: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]);