如何编码和解码NSTimeInterval?
当我这样做的时候......
NSTimeInterval refreshInterval;
[coder encodeObject:refreshInterval forKey:@"refreshinterval"];
它抛出一个错误,说不兼容的类型
如何解决这个问题?
或相关的事情是将NSTimeInterval转换为int和反之亦然..但我找不到任何转换方法..
请建议我如何解决这个问题。
谢谢。
答案 0 :(得分:2)
NSDate.h:
typedef double NSTimeInterval;
因此,您可以将NSTimeInterval视为double。转换为int - (int)interval
或round(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
。