Конфликт с родительским свойством "description" в Swift - PullRequest
0 голосов
/ 03 января 2019

Я использую EVNetworkningObject из EVReflection библиотеки для сериализации или десериализации ответа json от веб-службы.Это означает, что я не могу изменить имя свойства "description" на "description_" или что-то в этом роде.В то же время, backend не изменит меня для меня.Как возможно я могу исправить эту ошибку?

enter image description here

Сообщение об ошибке гласит:

Получатель для «описания» с помощью селектора Objective C «описание» конфликтует с получателемдля «описания» из суперкласса «NSObject» с тем же селектором Objective-C

Ответы [ 4 ]

0 голосов
/ 21 января 2019

Как предложил vadian в комментариях, я решил использовать протокол Codable вместо EVReflection, так как Codable очень прост в использовании.Я прочитал эту ссылку для Codable и эту ссылку видео для анализа данных JSON.

0 голосов
/ 03 января 2019

Самый простой способ - переименовать собственность.Пример: var announcementDescription : String?

0 голосов
/ 03 января 2019

Я предполагаю, что вы используете декодируемую JSON для получения данных JSON. если это так, вам не нужно создавать суперкласс типа NSObject. Причина, по которой вы получаете эту ошибку, заключается в том, что имя конфликтует с получателем для «description» из суперкласса «NSObject». Поэтому сделайте объект EVNetworking (который является вашим суперклассом) классом, который соответствует только декодируемому протоколу, а не классу типа NSObject.

0 голосов
/ 03 января 2019

description является свойством протокола с именем NSObjectProtocol из NSObject.

public var description: String { get }

Так что вы не можете инициировать любую переменную с с таким же именем в любомNSObject подклассы.

Для получения дополнительной информации посетите https://developer.apple.com/documentation/objectivec/nsobjectprotocol/1418746-description.

Пожалуйста, попробуйте либо инициировать переменную с различными именами , либо реализовать с помощью протокола Codable что@vadian предлагается в комментариях.

...