【问题标题】:NSNumber and NSTimeIntervalNSNumber 和 NSTimeInterval
【发布时间】:2011-07-25 13:14:45
【问题描述】:

我正在尝试以毫秒为单位获取系统时间。 为此我已经声明:

 NSNumber *createdTimeInMilliSec; //in class declaration

在我的一个实例函数中,我在做:

 self.createdTimeInMilliSec= ([NSDate timeIntervalSinceReferenceDate]*1000); //ERROR: incompatible type for argument 1 of 'setCreatedTimeInMilliSec:'

timeIntervalSinceReferenceDate 返回NSTimeInterval,那么如何将其转换为NSNumber?还是我做错了什么?

【问题讨论】:

    标签: iphone ios objective-c nsdate


    【解决方案1】:

    NSTimeInterval 的类型定义如下:typedef double NSTimeInterval;

    要创建NSNumber,请使用:

    NSNumber *n = [NSNumber numberWithDouble:yourTimeIntervalValue];
    

    【讨论】:

    • NSNumber *n = @(yourTimeIntervalValue); 也可以,而且看起来更漂亮。
    【解决方案2】:

    我不确定其他答案是否清楚 - 但 NSTimeInterval 实际上只是一个 typedef'ed double。你可以通过 [NSNumber numberWithDouble:timeInterval] 或者更简洁的 @(timeInterval) 来获取 NSNumber。

    【讨论】:

      【解决方案3】:

      NSTimeInterval 是 double 的 typedef。所以使用NSNumber的便利构造函数numberWithDouble:如下:

      self.createdTimeInMilliSec= [NSNumber numberWithDouble:([NSDate timeIntervalSinceReferenceDate]*1000)];
      

      【讨论】:

        【解决方案4】:

        由于 NSTimeInterval 是双精度,你可以这样做

        NSNumber *myNumber = [NSNumber numberWithDouble: myTimeInterval];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多