我如何编码和解码 NSTimeInterval?
当我这样做时...
NSTimeInterval refreshInterval;
[coder encodeObject:refreshInterval forKey:@"refreshinterval"];
它抛出一个错误说,不兼容的类型
如何解决这个问题呢?
或相应的事情是将 NSTimeInterval 转换为 int ,反之亦然..但我没有找到任何转换方法..
请建议我如何解决这个问题。
谢谢你。
我如何编码和解码 NSTimeInterval?
当我这样做时...
NSTimeInterval refreshInterval;
[coder encodeObject:refreshInterval forKey:@"refreshinterval"];
它抛出一个错误说,不兼容的类型
如何解决这个问题呢?
或相应的事情是将 NSTimeInterval 转换为 int ,反之亦然..但我没有找到任何转换方法..
请建议我如何解决这个问题。
谢谢你。
NSDate.h:
typedef double NSTimeInterval;
因此,您可以将 NSTimeInterval 视为双倍。转换为 int -(int)interval
或round(interval)
.
重新编码,我不完全确定,但似乎 encodeObject 接收 (id) 作为参数。double 是原子类型,所以你应该用 NSNumber 包装它:
[coder encodeObject:[NSNumber numberWithDouble:refreshInterval] forKey:@"refreshinterval"];
NSTimeInterval
是双倍的,所以你可以使用-(void)encodeDouble:(double)realv forKey:(NSString *)key
.
kovpas 打败了我 :)
是的,变量不是对象,并且 NSNumber 返回一个对象,方法 encodeObject 知道如何处理。您可能必须使用 [NSNumber numberWithDouble:(double)refreshInterval],但我真的不这么认为。如果要跳过小数位,则需要 (int),而要使用 numberWithInt。