У меня есть NSNumber
, и когда я пытаюсь выполнить базовую арифметику, это терпит неудачу.Objective C Арифметический сбой
NSNumber *contentExpirationInDays = [NSNumber numberWithInt: 1];
Когда я пытаюсь сделать основной умножения для преобразования секунд он дает мне сумасшедшие цифры:
NSTimeInterval contentExpirationInSecs = [contentExpirationInDays intValue] * 24 * 60 * 60;
Примечание: Следующий бит теперь не имеет значения, как описано в некоторых ответах:
Когда я запускаю следующие команды на консоли, я получаю следующие результаты:
(lldb) po [contentExpirationInDays intValue]
1
(lldb) po [contentExpirationInDays intValue] * 2
-148319360
UPDATE
Спасибо за информацию о ро против р. Я не знал, что подробно ...
Так вот реальная проблема, что я испытываю:
NSNumber *contentExpirationInDays = [[NSNumber numberWithInt:1];
NSTimeInterval contentExpiration = ([contentExpirationInDays intValue] * 24 * 60 * 60);
myObj.expirationDate = [[NSDate date] dateByAddingTimeInterval:contentExpiration];
obj.expirationDate
обычно заканчивается много лет в будущем или много лет в прошлом, вместо на один день опередив сегодня.
'po' является«печать объекта». Используйте 'p' для печати целых чисел или других скалярных значений. –
Какую версию Xcode вы используете? Работает отлично на моем Xcode 8. –
Это работает и для меня, если я удалю лишний '[' после назначения ('=') в первой строке. Однако расчет даты немного наивен. –