Dobra drużyna, to dziwne. [NSDecimalNumber integerValue] zachowuje się dziwnie.{NSDecimalNumber integerValue} dziwnie się zachowuje w iOS8
Jestem usatysfakcjonowany, próbując ustalić, dlaczego niektóre części mojej aplikacji są uszkodzone w iOS8, i szukam zmiennej o nazwie "timeSeconds". Wydaje się, jakby to w zmiennych Xcode Zobacz:
_timeSeconds (NSDecimalNumber *) 344.514533996581994496
Ale kiedy zapytać go w debugera widzę tak:
(lldb) p [self.timeSeconds doubleValue]
(double) $14 = 344.51453399658192
(lldb) p [self.timeSeconds intValue]
(int) $15 = 344
(lldb) p [self.timeSeconds integerValue]
(NSInteger) $16 = -5
(lldb) p (NSInteger)[self.timeSeconds intValue]
(NSInteger) $17 = 344
Zobacz, że „-5”? Czy ktokolwiek z was pięknych ludzi może to powtórzyć lub wyjaśnić, zanim złożę radar?
Oto SSCCE:
NSDecimalNumber *n = [NSDecimalNumber decimalNumberWithString:@"344.514533996581994496"];
NSLog(@"%@", n); // 344.514533996581994496
NSLog(@"%ld", (long)[n intValue]); // 344
NSLog(@"%ld", (long)[n integerValue]); // -5
NSLog(@"%ld", (long)[n unsignedIntegerValue]); // 12
Z góry dzięki!
Matthew
Mateusz - co znalazłeś? NSDecimalNumber na iOS 8 powoduje ogromne problemy w mojej aplikacji na żywo! – SAHM