2011-01-05 11 views
1

に変換:私は値を取得しようとしていNSDictionaryの値iが値に含まれている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

'NSTimer'クラスメソッドの' repeats'パラメータがありません。 –

答えて

2

をタイマの設定が間違っているように見えます。複数の辞書をuserInfoパラメーターに渡すことはできません。

試してみてください。

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

EDIT:追加のパラメータを繰り返し、感謝Bavarious。

+0

'NSTimer'クラスメソッドの' repeats'パラメータがありません。 –

+0

素晴らしい作品BVC。ありがとう。しかし、私は1つの質問は、リピートパラメータを使用するためのガオールは何ですか?繰り返しの違いは何ですか:はいと繰り返し:いいえ?? –

+0

リピートがNOの場合、タイマーは最初に起動すると自動的に無効になります。それ以外の場合は、指定された時間間隔で繰り返されます。 – BVC

1

あなたのuserInfoは正しく構築されていません。そこには1つのオブジェクトだけを渡す必要があります。

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

EDIT:forKeys:あなたは、複数のキーと値を持つ辞書を渡したい場合は、あなたがdictionaryWithObjectsでそれを行うことができます。

Moszi

+1

彼の元のコードは辞書に2つのオブジェクトを指定しています。また、 'timerMovelabel:'がディクショナリを変更しない限り、 'NSMutableDictionary'を使う理由はありません。 –

+0

NSMutableDictionaryで同意します。更新しました。そして、dictionaryWithObjects:forKeys:の注釈を追加しました。 – Moszi

関連する問題