我有一个要求,我有一个使用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。有人能指出我哪里出错了吗?
发布于 2012-04-09 23:11:00
,但每次点击good按钮后,我得到的数组计数只有1。
考虑到您在前一行上创建了一个全新的NSMutableArray,这并不奇怪。
要解决这个问题,您需要将NSMutableArray *arrayContainsGoodClicks设置为实例变量(AKA ivar),在指定的初始化器中将其初始化为[NSMutableArray array],然后使用
[arrayContainsGoodClicks addObject:goodTimeIntervals];将对象添加到数组中。
如果您希望改用NSMutableDictionary,那么策略将是相同的,除非您需要决定要用作NSDictionary的唯一键的对象。还要记住,NSMutableDictionary是不排序的,所以每次向用户显示字典条目时,您可能都需要注意排序。
发布于 2012-04-09 23:11:53
您只需创建一次arrayContainsGoodClicks (例如,在init方法中),然后在按钮处理程序中向此数组添加值:
//.h
NSMutableArray *arrayContainsGoodClicks;
//.m - init
arrayContainsGoodClicks = [NSMutableArray array];
//.m - button handler
[arrayContainsGoodClicks addObject:goodTimeIntervals];发布于 2012-04-09 23:19:42
您需要创建数组并将其存储为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]);https://stackoverflow.com/questions/10075218
复制相似问题