2011-02-07 51 views
1

我只想问一下如何使用变量作为选择器。 我的代码如下所示:Objective C - 使用变量作为选择器

NSString *stunde = [lesson objectForKey:@"stunde"]; // value is t1s1, then t1s2 then t1s3 etc. 
t1s1.text=subject; 

这个工作没有问题。但是,当我通过40个标签必须循环,这将是真棒做这样的:

NSString *stunde = [lesson objectForKey:@"stunde"]; 
     **stunde**.text=subject; 

我怎么能我与标签动态地通过使用我得到形成JSON字符串中的值谈循环。

结果应该是这样的:

NSString *stunde = [lesson objectForKey:@"stunde"]; 
     [email protected]"English"; 

NSString *stunde = [lesson objectForKey:@"stunde"]; 
     [email protected]"German"; 

NSString *stunde = [lesson objectForKey:@"stunde"]; 
     [email protected]"Business Studies"; 

等.....

我希望你能帮助我,知道我的意思事先

UPDATE

谢谢:

我刚刚开始工作(硬编码)像这样:

labels[0] = t1s1; 
    labels[1] = t1s2; 
    labels[2] = t1s3; 
    for (NSDictionary *lessons in list) 
    { 
     int TotalLessons = [list count]; 

     NSString *fach = [lessons objectForKey:@"fach"]; 
     UILabel *stunde = [lessons objectForKey:@"stunde"]; 
     //labels[counter]=stunde; 

     labels[counter].text=fach; 


     counter=counter+1; 
     if(counter>=TotalLessons){ 
      break; 
     } 



    } 

但会有40-50标签我想动态添加LABEL_NAMES到阵列: 像这样:

UILabel *stunde = [lessons objectForKey:@"stunde"]; 
labels[counter]=stunde; 

值“stunde”将被定义为的UILabel和然后添加到数组中。但为什么应用程序崩溃?怎么了? :(

感谢

+0

这是什么跟初学者感受这种渴望玩弄'eval`-esque的东西吗?无论如何,答案是阵列(或任何其他集合) - 十亿倍更快,更安全,更安全。我的ObjC-fu字面上为零,所以只是一个犀利的评论,而不是的回答;) – delnan 2011-02-07 10:15:25

+0

不幸的是我是一个血腥的初学者:(你能告诉我一个例子如何解决这个问题? thx – Chris 2011-02-07 10:19:08

回答

1

你应该首先初始化像这样的词典:

NSDictionary *Labels = [[NSDictionary alloc] initWithObjectsAndKeys: 
    LabelObject1, @"LabelObjectName1", 
    LabelObject2, @"LabelObjectName2", 
    LabelObject3, @"LabelObjectName3", 
    ... 
    LabelObjectN, @"LabelObjectNameN", 
    nil]; 

那么你就可以访问每个标签的方式如下:

NSString *stunde = [lesson objectForKey:@"stunde"]; 
((UILabel *)[Labels objectForKey:stunde]).text = @"Some text";