【问题标题】:How to store NSTimeInterval values into a NSMutableArray?如何将 NSTimeInterval 值存储到 NSMutableArray 中?
【发布时间】:2012-04-09 15:05:07
【问题描述】:

我有一个使用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。有人可以指出我哪里出错了吗?

【问题讨论】:

  • 是否每次点击按钮时都创建一个新数组?
  • 我已经纠正了错误..

标签: iphone objective-c ios5 nsmutablearray nstimeinterval


【解决方案1】:

但每次点击好按钮后,我都会得到数组计数为 1。

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

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

[arrayContainsGoodClicks addObject:goodTimeIntervals];

将对象添加到数组中。

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

【讨论】:

  • 非常感谢..不知何故我自己试过了,令人惊讶的是它的建议是一样的。感觉很好,我在正确的轨道上..[arrayContainsGoodClicks addObject:goodTimeIntervals]; NSLog(@"Array 总数为:%i",[arrayContainsGoodClicks count]);这件事成功了..
【解决方案2】:

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

//.h
NSMutableArray *arrayContainsGoodClicks;

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

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

【讨论】:

    【解决方案3】:

    您需要创建数组并将其存储为 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]);
    

    【讨论】:

      猜你喜欢
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多