У меня есть наблюдатель на моих TextFields, который выглядит, чтобы увидеть, если «включен @ собственности изменился.Получение значения измененного свойства, связанное с наблюдателем
(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *) context;
{
UITextField *txtField = (UITextField *)object;
BOOL new = [[change objectForKey:NSKeyValueChangeNewKey] boolValue];
BOOL old = [[change objectForKey:NSKeyValueChangeOldKey] boolValue];
if ((new != old) && (new = YES))
{
[self fadeDisable:txtField];
}
else if ((new != old) && (new = NO))
{
[self fadeEnable:txtField];
}
Я подумал, что если я ИНТ нового и int old, значение 1 или 0, которое определено, если свойство включено или нет, будет возвращено, но когда я использую NSLog, чтобы увидеть, что вы возвращаете, это длинная строка чисел.
Я просмотрел документацию и кажется, что objectForKey фактически возвращает id не целое число, но я не уверен, что делать.
Редактировать: я добавил код для моего сравнения, который пытается определить, было ли оно отключено до включенного (или наоборот). Также добавлена коррекция boolValue, как рекомендовано.
Это не дает ожидаемого результата и не вызывает правильный метод. Правильно ли это? Благодаря
*** int new *** ??? Считаете ли вы, что он скомпилируется? –
Они 'id', потому что словари могут содержать только объекты. Если исходным свойством является 'int', то, скорее всего, вы получаете' NSNumber' назад. –
@ LithuT.V Почему бы и нет? –