Какое значение я получу, если сначала не вызову setValueForKey?

Я настроил 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>>

Но если я изменил имя переменной экземпляра на например LINE1, LINE2, LINE3Исключение повысит.

Так будет ли ключ-значение-кодирование ассоциироваться с именем ивара по умолчанию? И мне не нужно setValueForKey первый?

1 ответ

Решение

Ваш ответ на этот вопрос можно найти в документации Apple, касающейся KVC.

Ключ - это строка, которая идентифицирует конкретное свойство объекта. Как правило, ключ соответствует имени метода доступа или переменной экземпляра в принимающем объекте. Ключи должны использовать кодировку ASCII, начинаться со строчной буквы и могут не содержать пробелов.

Другие вопросы по тегам