Gibt es eine Möglichkeit, das zur Laufzeit verwendete Schema herauszufinden?
Vielleicht gibt es einen besseren Weg, dies zu tun, ich versuche, die Access-Umgebung (Produktion vs Entwicklung) mit dem Scheme-Namen zu setzen.
Momentan verwende ich #define ENV @"PROD"
in App-Prefix.pch
datei, um dies zu tun, aber es besteht die Möglichkeit, dies zu verpassen, wenn pkg zur Überprüfung an Apple gesendet wird: (
Wenn Sie eine App auf dem Simulator oder auf Ihrem Gerät ausführen, wird die Variable DEBUG
festgelegt, sodass Sie sie aus Ihrem Code verwenden können:
Sie können diese Variable in den Build-Einstellungen Ihres Ziels sehen:
Sobald die Run
-Konfiguration auf Debug
(Produkt - & gt; Schema - & gt; Schema bearbeiten) gesetzt ist, wird diese Variable gesetzt:
Ich habe weit und breit nach einer Antwort gesucht, weil mir die Idee, zusätzliche Ziele oder zusätzliche Konfigurationssätze zu erstellen, wirklich nicht gefällt. Beide Optionen verursachen nur ein großes Konfigurationssynchronisierungsproblem.
Nachdem ich Xcode für ein paar Stunden gehackt habe, habe ich folgendes herausgefunden:
Schritt 1 : Fügen Sie Ihrem Info.plist den Schlüssel "SchemeName" mit dem Typ string hinzu.
Schritt 2 : Bearbeiten Sie Ihr Standardschema und Build - & gt; Pre-actions fügen ein neues Run Script mit folgendem hinzu:
%Vor%Stellen Sie sicher, und wählen Sie ein Ziel unter "Bereitstellen von Build-Einstellungen von".
Schritt 3 : duplizieren Sie dieses Schema so oft Sie wollen (Schemata verwalten ... - & gt; Vorhandenes Schema auswählen - & gt; Klicken Sie auf das Zahnradsymbol - & gt ; Duplizieren) Zum Beispiel können Sie Entwicklung, Staging, Produktion, App Store, usw. erstellen. Vergessen Sie nicht, auf "shared" zu klicken, wenn Sie möchten, dass diese Schemas in der Versionskontrolle mitgeführt werden.
Schritt 4 : Im Code können Sie den Wert folgendermaßen abrufen:
%Vor%Jetzt kann sich der Code zur Laufzeit korrekt konfigurieren. Keine unangenehmen Preprozessor-Makros, mit denen man umgehen muss, und keine zerbrechlichen Konfigurationsfehler, die man beibehalten könnte.