2017-09-04 7 views
1

Je suis en train de convertir une partie de mon code pour compiler en Xcode 9 et j'ai trébuché sur un comportement différent qui m'oblige à utiliser du code uniquement dans Xcode 9 et d'autres uniquement dans Xcode 8. Y at-il une sorte d'ifdef? rediriger le code basé sur la version de Xcode utilisée?ifdef pour des versions spécifiques de Xcode?

Toute aide appréciée. Merci!

+0

Pourquoi travailler avec la version Xcode? Il semble que la meilleure chose à vérifier est soit (a) Quelle version de Swift vous construisez ou (b) quelle version d'OS est en cours d'exécution. – dfd

Répondre

3

Il n'existe aucune macro de préprocesseur de compilation conditionnelle pour le versionnage de Xcode. À l'heure actuelle, c'est le meilleur que vous pouvez faire:

#if swift(>=3.2) 
    // Xcode 9 
#else 
    // Xcode 8 
#endif 

Depuis Swift 3.2 est disponible uniquement via Xcode 9 ou plus, cela devrait répondre à vos besoins pratiques.

Si vous avez découvert un bogue lié à Xcode, déposez-le sur le site Web Bug Reporter d'Apple: here.

+0

En effet, la dernière version disponible de Swift dans Xcode 8 est 3 donc c'est un contrôle valide –

0

vous devez valider non pas la version Xcode, mais le SDK inclus dans Xcode. Par exemple Xcode8 inclut iOS 10.3 SDK. Mais Xcode9 inclut iOS 11 SDK. enter image description here

Pour vérifier solution sdk utilisation from answer