如何编码/解码NSTimeInterval类型?

时间:2010-08-25 06:30:02

标签: objective-c nstimeinterval

如何编码和解码NSTimeInterval?

当我这样做的时候......

NSTimeInterval refreshInterval;

[coder encodeObject:refreshInterval forKey:@"refreshinterval"];

它抛出一个错误,说不兼容的类型

如何解决这个问题?

或相关的事情是将NSTimeInterval转换为int和反之亦然..但我找不到任何转换方法..

请建议我如何解决这个问题。

谢谢。

3 个答案:

答案 0 :(得分:2)

NSDate.h:

typedef double NSTimeInterval;

因此,您可以将NSTimeInterval视为double。转换为int - (int)intervalround(interval)

重新编码器,我不完全确定,但看起来,encodeObject接收(id)作为参数。 double是一个原子类型,所以你应该用NSNumber包装它:

[coder encodeObject:[NSNumber numberWithDouble:refreshInterval] forKey:@"refreshinterval"];

答案 1 :(得分:0)

kovpas打败了我:)

是的,变量不是对象,NSNumber返回方法encodeObject知道如何处理的对象。您可能必须使用[NSNumber numberWithDouble:(double)refreshInterval],但我真的不这么认为。如果你想跳过小数位,你需要(int)和numberWithInt。

答案 2 :(得分:0)

NSTimeInterval是双倍的,因此您可以使用-(void)encodeDouble:(double)realv forKey:(NSString *)key