Просто установив значение класса A из класса B в target-c

В Objective-C я хочу установить synthesized (assigned) атрибут в классе Compass из класса B

Это мой код...

for(Compass * ind in CompassList){  
    if([[(Compass*)ind showAnalog] isEqualToString:str]){  
        ind.analogValue=11.0;  
    }  
}

Тем не менее, я получаю эту ошибку...

Request for member analogValue in something not a structure or union.

Мне удалось избежать этой ошибки, используя мой собственный установщик и называя его как [ind updateValue:11.0];, Однако, когда я называю синтезированный геттер позже, как [(Compass*)currentDevice analogValue]; в другом классе я получаю следующее исключение...

'NSInvalidArgumentException': [Compass digitalValue]: unrecognized selector sent to instance 0x613ca20

Может кто-нибудь, пожалуйста, помогите мне понять, как я должен делать это.

1 ответ

Вы быстро перечислите индикаторный список как тип Indicator затем на одну строку ниже вы приводите его как Compass, Если это не опечатка, и все значения имеют тип Compass затем измените код для чтения

for(Compass * compass in indicatorList){  
    if([[compass showAnalog] isEqualToString:str]){  
        compass.analogValue=11.0;  
    }  
}

Теперь для вас актуальная проблема, вы не опубликовали код, связанный с этой проблемой. Я предполагаю, что причина в некотором коде, который showAnalog вызывает который по очереди вызывает [(Compass*)currentDevice analogValue];, Все это может быть связано с неправильным приведением или неполным Compass учебный класс.

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