J'utilise EVNetworkningObject de la bibliothèque EVReflection pour sérialiser ou désérialiser la réponse Json du service Web. Cela signifie que je ne peux pas changer le nom de la propriété "description" en "description_" ou quelque chose comme ça. Dans le même temps, le backend ne changera pas sa propriété de réponse pour moi. Comment puis-je corriger cette erreur?
Le message d'erreur dit
Récupère la 'description' avec le sélecteur Objective-C 'description' conflit avec getter pour 'description' de la superclasse 'NSObject' avec le même sélecteur Objective-C
4 Réponses :
description
est une propriété du protocole nommé NSObjectProtocol
de NSObject
.
public var description: String { get }
Ainsi vous pouvez n'initiez aucune variable portant le même nom dans les sous-classes NSObject
.
Pour en savoir plus, visitez https://developer.apple.com/documentation/objectivec/nsobjectprotocol/1418746-description .
Veuillez essayer soit en lançant la variable avec des noms différents , soit en implémentant avec le protocole Codable
ce que @vadian
a suggéré dans les commentaires. p >
La solution de contournement de loin la plus simple consiste à renommer la propriété. Ex: var annonceDescription: String?
Je suppose que vous utilisez JSON décodable pour obtenir des données JSON. si c'est le cas, vous n'avez pas besoin de rendre votre super classe de type NSObject
. La raison pour laquelle vous obtenez cette erreur est que le nom est en conflit avec le getter pour «description» de la superclasse «NSObject». Donc, faites de l'objet EVNetworking
(qui est votre super classe) une classe qui se conforme uniquement au protocole décodable et non à une classe de type NSObject.
Comme Vadian l'a suggéré dans les commentaires, j'ai décidé d'utiliser le protocole Codable
au lieu de EVReflection
car Codable
est très facile à utiliser. J'ai lu ce lien pour Codable
et ce lien vidéo pour analyser les données json.
Utilisez une structure ou utilisez
Codable
. SiEVReflection
n'est pas capable de mapper les noms de propriétés, il n'est de toute façon pas qualifié.@vadian, comment? Je suis nouveau sur iOS.
de plus, il ne s'agit pas d'un problème de réflexion EV. C'est le problème de NSObject.
Toutes les bibliothèques tierces pour (dé) sérialiser JSON sont devenues obsolètes au profit de
Codable
dans Swift 4+