Comment utiliser un Objectif-C #define de Swift
Je suis à la migration d'un UIViewController
classe pour m'entraîner un peu avec Swift. Je suis avec succès à l'aide de code Objective-C via le pont d'en-tête mais j'ai besoin de l'importation d'un fichier de constantes qui contient #define
directives.
J'ai vu dans L'utilisation de Swift avec Cocoa et Objective-C (macros Simples) suivantes:
Macros Simples
Où vous habituellement utilisé le
#define
directive pour définir une primitive de la constante C et Objective-C, Swift vous utilisez une constante globale à la place. Par exemple, la définition de constante#define FADE_ANIMATION_DURATION 0.35
peut être mieux exprimée dans Swift aveclet FADE_ANIMATION_DURATION = 0.35
. Parce qu'une simple constante-comme les macros directement la carte de Swift variables globales, le compilateur automatiquement les importations de simples macros définies dans C et Objective-C fichiers sources.
Il me semble que c'est possible. J'ai importé le fichier contenant mon constantes dans la transition de l'en-tête, mais je n'ai pas de visibilité de mon .swift
fichier ne peut pas être résolu.
Que dois-je faire pour que mon constantes visible à Swift?
Mise à JOUR:
Il semble travailler avec NSString
constantes, mais pas avec les booléens:
#define kSTRING_CONSTANT @"a_string_constant" //resolved from swift
#define kBOOL_CONSTANT YES //unresolved from swift
- Essayez d'utiliser true à la place de OUI.
Vous devez vous connecter pour publier un commentaire.
À l'heure actuelle, certains
#define
s sont convertis et certains ne le sont pas. Plus précisément:...devient:
Ou:
...devient:
Malheureusement,
YES
etNO
ne sont pas reconnus et convertis à la volée par le Swift compilateur.Je vous suggère de convertir vos
#define
s réelles constantes, ce qui est mieux que#define
s de toute façon..h:
.m
Et puis Swift va voir:
Une autre option serait de changer votre
BOOL
définit àPlus rapide. Mais pas aussi bon que réelles constantes.
#define
s etconst
s deviennent des constantes: c'est à direlet
sJuste une clarification rapide sur quelques choses de là-haut.
Swift Constante sont exprimées en utilisant le mot-clé
let
Par Exemple:
Aussi, que dans une définition de protocole que vous pouvez utiliser { get }, exemple:
Dans swift, vous pouvez déclarer une énumération, une variable ou une fonction en dehors de toute classe ou d'une fonction et il sera disponible dans toutes vos classes (dans le monde)(sans avoir besoin d'importer un fichier spécifique).
kStringConstant
qui peut être déduit par le contenu fourni,"monitoredRegins"
.simple swift langue n'avez pas besoin de macros
tous les #define directives.
sera laissé
et macros complexes devraient se convertir à être func
L'alternative pour la macro peut être variable globale . On peut déclarer une variable globale à l'extérieur de la classe et d'accéder à ceux-ci sans l'aide de la classe. S'il vous plaît trouver l'exemple ci-dessous