1

NSTimeIntervalをエンコードおよびデコードするにはどうすればよいですか?

私がこのようにそれをするとき...

NSTimeInterval refreshInterval;

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

互換性のないタイプというエラーがスローされます

この問題を解決する方法は?

または、対応するのはNSTimeIntervalをintに、またはその逆に変換することです。しかし、変換のメソッドが見つかりません。

この問題を解決する方法を教えてください。

ありがとうございました。

4

3 に答える 3

3

NSDate.h:

typedef double NSTimeInterval;

したがって、NSTimeIntervalをdoubleとして扱うことができます。intへの変換-(int)intervalまたはround(interval)

プログラマー、私は完全にはわかりませんが、encodeObjectはパラメーターとして(id)を受け取るようです。doubleはアトミック型なので、NSNumberでラップする必要があります。

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

kovpasはそれに私を打ち負かしました:)

ええ、変数はオブジェクトではなく、NSNumberはencodeObjectメソッドが何をすべきかを知っているオブジェクトを返します。[NSNumber numberWithDouble:(double)refreshInterval]を使用する必要があるかもしれませんが、私は実際にはそうは思いません。小数点以下の桁数をスキップする場合は、(int)が必要であり、代わりにnumberWithIntが必要です。

于 2010-08-25T06:42:50.110 に答える
0

NSTimeIntervalはdoubleなので、を使用できます-(void)encodeDouble:(double)realv forKey:(NSString *)key

于 2010-09-15T06:06:41.067 に答える