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;
}
但我得到這個警告
隱式轉換損失整數精度:「無符號長長」到 ‘NSCalendarUnit’(又名‘枚舉NSCalendarUnit’)
如何正確的代碼刪除此 警告?
但我用numberWithUnsignedLong轉換成NSNumber ...將轉換爲unsignedIntegerValue可以影響在某種程度上? –
最合適的方法是創建[NSNumber numberWithUnsignedInteger:self.myNSCalendarUnit];'帶原始類型的NSCalendar(NSUInteger)。它不應該丟失任何情況下的數據。此外,在你當前的代碼中,你使用'unsignedLong'創建,但是使用'unsignedLongLong'獲取,這是不合理的。 – nynohu