Простая установка значения класса A из класса B в target-c - PullRequest
1 голос
/ 31 марта 2011

В 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 Ответ

0 голосов
/ 31 марта 2011

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

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

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

...