ich diesen Code verwenden NSCalenderUnit
Wie Implizite Konvertierung beheben verliert integer Präzision Warnung
- (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;
}
Aber ich bin immer diese Warnung
Implizite Konvertierung integer Präzision zu kodieren und dekodieren verliert: ‚unsigned long lang‘zu 'NSCalendarUnit' (auch bekannt als 'enum NSCalendarUnit')
Wie Code korrigieren diese entfernen Warnung?
verwenden, aber ich habe numberWithUnsignedLong in NSNumber konvertieren ... wird die Konvertierung in unsignedIntegerValue auswirken können? –
Die am besten geeignete Methode ist, [NSNummer numberWithUnsignedInteger: self.myNSCalendarUnit]; 'mit dem ursprünglichen NSCalendar-Typ (NSUInteger) zu erstellen. Es sollte keine Daten von irgendeinem Fall verlieren. Außerdem, in Ihrem aktuellen Code, erstellen Sie mit 'unsignedLong', aber mit' unsignedLongLong', es ist nicht approciate. – nynohu