2011-01-05 1 views
1

я есть NSDictionary, которые содержат в стоимостном выражении, и мне нужно, чтобы получить это значение я пытался получить значение, используя следующий код:конвертировать NSDictionary значение NSInteger

[NSTimer scheduledTimerWithTimeInterval:0.01 
         target:self 
           selector:@selector(timerMovelabel:) 
           userInfo: 
      [NSDictionary dictionaryWithObject:var forKey:@"var1"] 
    , [NSMutableDictionary dictionaryWithObject:[NSNumber numberWithInt:23] forKey:@"var2"] 

я пытался получить значение с помощью следующих методов

  1. int intvar = [[[timer userInfo] objectForKey:@"var2"] intValue];

  2. NSNumber *numbervar = [[timer userInfo] objectForKey:@"var2"]; NSInteger intvar = [num intValue];

  3. Следит:

    [self method:[[[timer userInfo] objectForKey:@"var2"] intValue]]; 
    
    
    - (void)timerMovelabel:(NSTimer *)timer { 
        //here i execute one of the steps 1,2 and 3 but i didn't get any result all values are null 
    } 
    
    
    - (void) method:(NSInteger)dir 
    { 
        NSLog(@"%d",dir); 
    } 
    
+0

Просьба форматировать код использования с помощью предоставленных инструментов редактора, в противном случае его очень трудно прочитать. –

+0

Опишите, где это не должно вести себя так, как вы ожидаете, и о любых предупреждениях или ошибках, которые вы видите. Похоже, вы пытаетесь передать список словарей, разделенных запятыми, как ваш аргумент 'userInfo', и это не имеет никакого смысла. Покажите нам код, который вы используете, а не просто выберите строки из контекста. – Jonah

+1

Отсутствует параметр 'repeatats' в методе класса NSTimer. –

ответ

2

Установка таймера, как представляется, не так. Вы не можете передавать более одного словаря в параметр userInfo.

Try:

[NSTimer scheduledTimerWithTimeInterval:0.01 
           target:self 
           selector:@selector(timerMovelabel:) 
           userInfo: 
     [NSDictionary dictionaryWithObjectsAndKeys: var, @"var1", 
                [NSNumber numberWithInt:23], @"var2", 
                nil] 
           repeats:NO]; 

EDIT: Добавлен параметр повторяет, благодаря Bavarious.

+0

Вам не хватает параметра 'repeatats' в методе класса NSTimer. –

+0

хорошая работа BVC. большое спасибо. но у меня есть 1 вопрос, что такое тюль для использования параметра повторов ?? в чем разница между повторами: ДА и повторяет: НЕТ? –

+0

Если повторы НЕТ, таймер автоматически аннулируется при первом запуске, иначе он будет повторяться с заданным интервалом времени. – BVC

1

Ваша пользовательская информация построена неправильно. Вам нужно передать только один объект.

[NSTimer scheduledTimerWithTimeInterval:0.01 
         target:self 
           selector:@selector(timerMovelabel:) 
           userInfo: 
    [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:23] forKey:@"var2"] 
     repeats:NO]; 

EDIT: Если вы хотите передать словарь с несколькими ключами и значениями, то вы можете сделать это с dictionaryWithObjects: forKeys:.

Moszi

+1

Его оригинальный код определяет два объекта в словаре, а не только один. Кроме того, нет смысла использовать 'NSMutableDictionary', если' timerMovelabel: 'изменяет словарь. –

+0

Согласен с NSMutableDictionary. Обновлено. Добавлена ​​заметка для словаряWithObjects: forKeys:. – Moszi

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

  • Нет связанных вопросов^_^