【问题标题】:What value will I get if not call setValueForKey first?如果不先调用 setValueForKey,我会得到什么值?
【发布时间】:2015-03-03 02:40:33
【问题描述】:

我在 viewController 中设置了 3 个UITextField

@property(nonatomic,retain) UITextField *line1;
@property(nonatomic,retain) UITextField *line2;
@property(nonatomic,retain) UITextField *line3;

我尝试获取键的值:

for (int i = 1; i <= 3; i++)
{
    NSString *fieldName = [NSString stringWithFormat:@"line%d",i ];
    UITextField *theField = [self valueForKey:fieldName];
    NSLog(@"TEXTFIELD : %@",theField);
}

我得到了所有的 UITextFields。

2015-03-03 10:32:32.776 KVCTEST[26691:1586602] TEXTFIELD : <UITextField: 0x7f9a00e1c5c0; frame = (50 120; 220 30); text = ''; clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7f9a00e1ae40>>
2015-03-03 10:32:32.777 KVCTEST[26691:1586602] TEXTFIELD : <UITextField: 0x7f9a00f1b920; frame = (50 160; 220 30); text = ''; clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7f9a00f1bb80>>
2015-03-03 10:32:32.777 KVCTEST[26691:1586602] TEXTFIELD : <UITextField: 0x7f9a00f1d330; frame = (50 200; 220 30); text = ''; clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7f9a00f1d590>>

但是如果我将实例变量名称更改为例如LINE1LINE2LINE3,会引发异常。

那么 key-value-coding 是否会默认与 ivar 的名称相关联?而且我不必先setValueForKey

【问题讨论】:

  • 你的答案在docs中的Default Search Pattern for valueForKey:

标签: ios objective-c kvc


【解决方案1】:

您的答案可以在Apple documentation regarding KVC 中找到。

键是标识对象特定属性的字符串。 通常,键对应于访问器方法的名称或 接收对象中的实例变量。密钥必须使用 ASCII 编码,以小写字母开头,不能包含 空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 2011-04-02
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2022-10-13
    • 2023-03-11
    • 2020-03-03
    相关资源
    最近更新 更多