Я скорее разработчик для iOS, поэтому я не уверен на 100%, как некоторые стандарты пересекаются с OSX. Тем не менее,
Вы говорите, что используете KVC, как будто это платформа, предоставляющая простую в использовании схему кодирования ключ-значение, которая не обязательно имеет смысл. Похоже, это созданный вами пользовательский класс с именем KVC.
В вашем файле KVC.m вы @synthesize эту переменную?
@implementation KVC
@synthesize progressString = _progressString;
Вы определили ваш объект frickenHeck как класс KVC, который содержит свойство progressString, которое вы делаете доступным для других классов с помощью этого вызова.
@property (nonatomic, retain) NSString * progressString;
Если вы синтезировали переменную в своем файле @implementation, почему бы вам просто не позвонить:
frickenHeck.progressString = @"Testing";
или
frickenHeck.progressString = @"Completed";
Конечно, вы можете установить переменную с помощью Key Value Coding, но не устанавливая частную форму вашей переменной класса. Попробуйте:
[frickenHeck setValue:@"Completed" forKey:@"progressString"];
Итак, вы синтезировали эту переменную? Или, по крайней мере, установить метод доступа / установщик доступа для переменной? Как правило, вы хотите сделать только один или другой.
Заголовок:
- (void)progressString;
- (NSString *)setProgressString:(NSString *)_string;
Реализация:
- (void)progressString {
return _progressString;
}
- (NSString *)setProgressString:(NSString *)_string {
_progressString=_string;
}
Также отметим, что если вы собираетесь многократно изменять эту переменную, вы можете использовать форму класса NSMutableString и установить объявление @property для копирования. @property (nonatomic, copy) NSMutableString * progressString;
Я надеюсь, что часть этой информации поможет вам в вашем путешествии ..
Mark