Wie kann ich mit Swift zwischen zwei Xcode-Zielen unterscheiden? Die Idee ist, eine kostenlose und eine kostenpflichtige Version einer App mit der gleichen Code-Basis in Xcode zu erstellen.
Mit Ziel C könnte ich Preprozessor-Makros verwenden, aber mit Swift sind diese nicht verfügbar.
Seit Xcode 8 können Sie die Kompilierungsbedingungen in den Erstellungseinstellungen für jedes Ziel unter Aktive Kompilierungsbedingungen festlegen.
Mit diesen Einstellungen können Sie:
verwenden %Vor%Weitere Einzelheiten finden Sie in der i40west-Antwort und den Kommentaren.
Wechseln Sie in Xcode in die Erstellungskonfiguration für ein Ziel. Suchen Sie nach dem Abschnitt Swift Compiler - Benutzerdefinierte Flags , der eine Einstellung namens Andere schnelle Flags enthält.
Fügen Sie ein Befehlszeilen-Flag für den Compiler hinzu, um ein Flag hinzuzufügen, ähnlich wie beim C-Compiler.
Nun haben Sie -D Something
an den Swift-Compiler übergeben. In Ihrem Swift-Code können Sie dies jetzt tun:
Es sieht dem C-Präprozessor sehr ähnlich, aber im Gegensatz zu C muss der gesamte Code in allen bedingten Abschnitten syntaktisch korrekt sein oder das Programm wird nicht kompiliert. Sie können also ein Flag für jedes Ziel in den Erstellungseinstellungen festlegen und in Ihrem Code verwenden.