2017-03-01 2 views
0

Récemment j'ai commencé à obtenir cette erreur de Xcode:erreur Xcode: Problème sémantique, propriété 'className' introuvable sur le type d'objet 'GKEntity *'

Error Screenshot

Cette propriété 'className' appartient à NSObject. Here is the official documentation.

Pourquoi est-ce qui se passe et comment puis-je résoudre ce (sans éviter l'utilisation de cette propriété) ?


La chose étrange est que le même code fonctionnait très bien il y a quelques jours sur les deux et sur la macOS cible iOS. Ensuite, il a commencé à montrer cette erreur APRÈS la construction terminée avec succès (je pourrais bien exécuter le projet), mais maintenant la cible iOS ne va même pas construire ...

J'ai essayé (1) purger mon dossier derivedData plusieurs fois, (4) faire propre checkouts, (3) le redémarrage de Xcode, (2) le redémarrage du système, tout cela dans le bon ordre, mais sans succès ...

J'utilise Xcode version 8.2.1 sur macOS 10.12.3 et mes cibles de déploiement sont 10.2 pour iOS et 10.12 pour macOS.

+0

Avez-vous importé gameKit dans le projet et en haut de votre fichier? –

+0

Je ne sais pas pourquoi cela a fonctionné avant, mais cela ne devrait pas fonctionner sur iOS. Si vous regardez la documentation, cette propriété n'est disponible que sur macOS. –

+0

J'ai importé * GamePlayKit *, mais @JamesP vous avez raison, je n'ai même pas remarqué cela. Derp! – ZanYzer

Répondre

1

Comme indiqué par @JamesP dans un commentaire ci-dessus la propriété className est clairement documenté pour exister que sous Mac OS 10.0+, et non sur iOS, qui Je n'ai pas remarqué ...

Cela signifie que mon problème est venu du fait que j'ai changé les paramètres de la cible de mon implémentation de macOS uniquement à macOS et iOS pendant le développement.

Parce que je suis en utilisant Objective-C i fini par remplacer entity.className avec

NSStringFromClass([entity class]) 

La réponse de @Russel montre comment résoudre ce à Swift.