преобразовать значение NSDictionary в NSInteger - PullRequest
1 голос
/ 05 января 2011

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

[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);
    }
    

Ответы [ 2 ]

2 голосов
/ 05 января 2011

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

Попробуйте:

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

EDIT: добавлен параметр повторений, спасибо Bavarious.

1 голос
/ 05 января 2011

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

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

РЕДАКТИРОВАТЬ: Если вы хотите передать словарь с несколькими ключами и значениями, то вы можете сделать это с dictionaryWithObjects: forKeys:.

Moszi

...