1

我如何编码和解码 NSTimeInterval?

当我这样做时...

NSTimeInterval refreshInterval;

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

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

如何解决这个问题呢?

或相应的事情是将 NSTimeInterval 转换为 int ,反之亦然..但我没有找到任何转换方法..

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

谢谢你。

4

3 回答 3

3

NSDate.h:

typedef double NSTimeInterval;

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

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

[coder encodeObject:[NSNumber numberWithDouble:refreshInterval] forKey:@"refreshinterval"];
于 2010-08-25T06:36:12.507 回答
0

NSTimeInterval是双倍的,所以你可以使用-(void)encodeDouble:(double)realv forKey:(NSString *)key.

于 2010-09-15T06:06:41.067 回答
0

kovpas 打败了我 :)

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

于 2010-08-25T06:42:50.110 回答