2013-06-20 5 views
1

Я преобразовал NSTimeInterval в NSNumber, чтобы сохранить его в NSUserDefaults. Я использовал numberWithDouble метод, как это:Преобразование NSNumber в NSTimeInterval

NSNumber *savedTime = [NSNumber numberWithDouble:timeInterval]; 

Я извлекая информацию в другой точке зрения, но я бегу на вопрос. Кажется, что число не хочет правильно преобразовать. Я знаю, что число переноса, так как я могу просмотреть номер в этой метке, и он показывает правильно:

timeLabel.text = [NSString stringWithFormat:@"%f", [[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue]]; 

но когда я иду, чтобы установить интервал для двойного значения, оно не Работа. Я использую это:

interval = [[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue]; 

Все переменные должным образом объявлены в заголовке. Любая идея, почему она не работает?

Спасибо,

Дэвид

+1

В каком смысле «это не работает», точно? –

+0

Что «не работает»? Можете ли вы показать нам, что такое «интервал» после этой строки? – mattjgalloway

+0

можете ли вы точно показать, в чем заключается ваша проблема с конверсией? потому что «не работает» не является самоочевидным –

ответ

1

В обоих случаях используются

[[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue] 

, чтобы получить значение double. Вам нужно сосредоточиться на том, что может быть иначе. С верхней части моей головы, смотрите на:

  • ли interval правильно объявлен double или NSTimeInterval? Покажите нам, как и где вы объявляете interval.
  • Когда вы показываете interval, чтобы проверить его значение, вы показываете его правильно. Я знал об этом случайно.

    NSTimeInterval interval = .... 
    NSLog(@"%@", interval); 
    

    Покажите нам код, который вы используете для проверки интервала и его выхода.

  • Сменил userDefaults?

  • имеет groupTitleForReference изменено.

EDIT

Другое дело, чтобы проверить

  • Если interval глобальный убедитесь, что декларация в заголовке имеет вид

    extern NSTimeInterval interval; 
    

    Если опустить extern, вы получите отдельную переменную под названием interval в каждом файле, который включает заголовок.

+0

Jeremy, Спасибо за ответ. Чтобы ответить на ваши вопросы: 1. Я попробовал как напрямую назначить NSTimeInterval, используя двойное значение, так и объявив двойной над ним и назначив NSTimeInterval из этого двойника. Ни один из них не работает. 2. Когда я интервал NSLog, я использую спецификатор формата% f, и он отображается правильно. Он также отображается правильно, если я использую двойной спецификатор. 3. userDefaults не изменился. Никаких заявлений не было изменено, и единственное различие заключается в том, что я передаю NSNumber вместо NSTimeInterval. – DaveyDaVinci

+0

4. groupTitle не изменился. Он динамический, в зависимости от того, какой вариант пользователь выбирает в таблице из предыдущего представления. Код работает правильно, если я передаю nstimeinterval непосредственно из одного элемента, который я установил, но он не работает, если я прохожу через только float или double и пытаюсь преобразовать его в nstimeinterval. Надеюсь, это имеет смысл. Я все еще участвую, всего несколько месяцев на своих объективных курсах c – DaveyDaVinci

+0

Если вы NSLog это с% f, и это правильно, то нет ничего плохого. Почему вы думаете, что у вас есть проблема? – JeremyP

Смежные вопросы