如何解决这个错误“这个类不是密钥的关键值编码”?

问题描述:

我已经创建了UITableViewUITableview每行都有一个以上UITextField。如何获得每个UITextField值。以下是我的示例代码。如何解决这个错误“这个类不是密钥的关键值编码”?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
    int j= 285;   
      for (int i=0; i<7; i++) { 
    NSString *txtIndvalue =[NSString stringWithFormat:@"Index%d",i];   
       UITextField *txtvalue = [[UITextField alloc] initWithFrame:CGRectMake(j,5.0f,25.0f,20.0f)]; 
       [txtvalue setBorderStyle:UITextBorderStyleLine]; 
    [txtvalue setTag:indexpath.row] 
    [txtvalue setvalue:txtIndvalue forkey:@"test"] 
       [cell addSubview:txtvalue]; 
       j = j + 35; 
      } 
    } 

error: Terminating app due to uncaught exception 'NSUnknownkeyException' ,reason :'[<UItextField .>' setValue:forUndefindekey:] this class is not key value codeing compliant for the key. Please help me. 

[txtvalue setvalue:txtIndvalue forkey:@"test"] 

此行导致崩溃。 setValueForKey不是UITextField的财产/方法。如果你想设置文本框的文字,你应该使用

txt value.text = @"some text". 
+0

[txtvalue的setValue:txtIndvalue forkey:@ “测试” ]是UITextField的一个方法/属性。 void setvalue:(id)forkey:(NSString *)。请你再检查一次。如何为每个文本框的每一行赋值。 – Baskar

+0

请检查下面@BEN添加的答案。他正在使用KVC/KVO模式进行设置。 –

+0

任何示例代码 – Baskar

,如果你想使用KVC为UITextField试试这个:

[txtvalue setvalue:txtIndvalue forkey:@"text"]; 

编辑

试试这个:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
int j= 285;   
     for (int i=0; i<7; i++) { 
NSString *txtIndvalue =[NSString stringWithFormat:@"Index%d",i];   
      UITextField *txtvalue = [[UITextField alloc] initWithFrame:CGRectMake(j,5.0f,25.0f,20.0f)]; 
      [txtvalue setBorderStyle:UITextBorderStyleLine]; 
[txtvalue setTag:indexpath.row]; 
[txtvalue setvalue:txtIndvalue forkey:@"text"]; 
      [cell addSubview:txtvalue]; 
      j = j + 35; 
     } 
} 
+0

任何示例代码。更新我的代码。请帮帮我。 – Baskar

如果您使用的是KVC:

而不是使用[txtvalue setvalue:txtIndvalue forkey:@"text"];使用[txtIndvalue setValue:txtIndvalue forKeyPath:@"text"];

更新代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
int j= 285;   
     for (int i=0; i<7; i++) { 
NSString *txtIndvalue =[NSString stringWithFormat:@"Index%d",i];   
      UITextField *txtvalue = [[UITextField alloc] initWithFrame:CGRectMake(j,5.0f,25.0f,20.0f)]; 
      [txtvalue setBorderStyle:UITextBorderStyleLine]; 
[txtvalue setTag:indexpath.row]; 
[txtvalue setvalue:txtIndvalue forKeyPath:@"text"]; 
      [cell addSubview:txtvalue]; 
      j = j + 35; 
     } 
} 

打印KVC的价值:

NSLog(@"%@", [txtvalue valueForKey:@"text"]; 
+0

如何让文本框输入值。 – Baskar

+0

已更新的答案。 –