0
を失い、私はどのように暗黙的な変換を修正する整数精度の警告
- (void)encodeWithCoder:(NSCoder*)encoder {
[super encodeWithCoder:encoder];
NSNumber *boxed = [NSNumber numberWithUnsignedLong:self.myNSCalendarUnit];
[encoder encodeObject:boxed forKey:@"myNSCalendarUnit"];
// ...
}
- (id)initWithCoder:(NSCoder*)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
NSNumber *boxed = [aDecoder decodeObjectForKey:@"myNSCalendarUnit"];
_myNSCalendarUnit = [boxed unsignedLongLongValue];
// ...
}
return self;
}
をエンコードおよびデコードするためにこのコードを使用しています。しかし、私はこの警告
暗黙の変換を取得していますが、整数精度を失う。「unsigned long型NSCalendarUnit 『(別名『列挙NSCalendarUnit』)「 に』長い
これを削除するには、コードを修正する方法警告?
NSNumberに変換するためにnumberWithUnsignedLongを使用しました... unsignedIntegerValueに変換すると、ayの方法で影響を及ぼしますか? –
最も適切な方法は、オリジナルタイプのNSCalendar(NSUInteger)で[NSNumber numberWithUnsignedInteger:self.myNSCalendarUnit];を作成することです。どんな場合でもデータを失ってはいけません。さらに、現在のコードでは、 'unsignedLong'で作成しますが、' unsignedLongLong'で取得すると、それは適切ではありません。 – nynohu