如何将NSTimeInterval值存储到NSMutableArray中?

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。有人可以请指点一下我哪里出了错吗?

3
每次按钮被点击时,您是否正在创建一个新的数组? - meggar
我已经纠正了错误。 - Pradeep Reddy Kypa
3个回答

3
每次点击“好”的按钮后,我得到的数组计数只有1,这并不奇怪,因为在前一行你正在创建一个全新的NSMutableArray。要解决这个问题,你需要将NSMutableArray *arrayContainsGoodClicks设置为实例变量(也称为ivar),在指定的初始化程序中将其初始化为[NSMutableArray array],然后使用它。
[arrayContainsGoodClicks addObject:goodTimeIntervals];

向数组中添加对象的方法。

如果您想使用 NSMutableDictionary,策略将是相同的,只需要选择一个您想要用作唯一键值的对象来创建 NSDictionary。同时请注意,NSMutableDictionary 无序,因此每次向用户显示字典项时可能需要进行排序处理。


非常感谢。不知何故我自己尝试了一下,惊讶的是结果和建议的一样。感觉很棒,我走在正确的轨道上了。[arrayContainsGoodClicks addObject:goodTimeIntervals]; NSLog(@"数组的总数为:%i",[arrayContainsGoodClicks count]); 这个东西起到了关键作用。 - Pradeep Reddy Kypa

1
你需要创建arrayContainsGoodClicks,只需创建一次(例如在init方法中),然后在按钮处理程序中向该数组添加值:
//.h
NSMutableArray *arrayContainsGoodClicks;

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

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

1

你需要创建一个数组并将其存储为实例变量。

@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]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接