如何解决这个错误“这个类不是密钥的关键值编码”?
我已经创建了UITableView
和UITableview
每行都有一个以上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".
,如果你想使用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;
}
}
任何示例代码。更新我的代码。请帮帮我。 – 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"];
如何让文本框输入值。 – Baskar
已更新的答案。 –
[txtvalue的setValue:txtIndvalue forkey:@ “测试” ]是UITextField的一个方法/属性。 void setvalue:(id)forkey:(NSString *)。请你再检查一次。如何为每个文本框的每一行赋值。 – Baskar
请检查下面@BEN添加的答案。他正在使用KVC/KVO模式进行设置。 –
任何示例代码 – Baskar