2016-03-23 9 views
2

ich die folgenden Konstante im Code habe:iOS XCode: Wie man einen Wert von einer benutzerdefinierten Einstellung von Build-Einstellungen zur Laufzeit laden

static NSString* const MyUrl = @"www.myurl.com"; 

Ist es überhaupt möglich, einen Benutzer zu erstellen -definierte Einstellung und einen Wert zuweisen, der den Wert von MyUrl const zur Laufzeit oder während der Archivierung ersetzen kann?

Meine Situation ist die folgende: Ich habe ein Projekt mit verschiedenen Zielen. Jedes Ziel verweist auf eine andere URL im Code. Es wäre großartig, wenn ich die URL über eine benutzerdefinierte Einstellung verwalten könnte, anstatt den Code jedes Mal ändern zu müssen, wenn ich das Ziel ändere.

+0

Soll die Einstellung in die App aufgenommen oder vom Benutzer eingegeben werden? – Eiko

+0

Die Einstellung soll in der App enthalten sein. – user1309226

Antwort

1

Betrachten info.plist Verwendung für solche Werte zu speichern.

0

Nein, Sie konnten den Wert const Variable nicht ändern.

Sie können den Wert der URL-Zeichenfolge einfach durch NSString *myURL = @"www.url.com" ändern;

und verwenden Sie die globale Variable in AppDelegate und verwenden Sie diese von jedem wo in Projekt.

+1

Verwenden Sie info.plist zum Speichern solcher Werte. –

+0

@ArikSegal Bitte geben Sie Ihre Empfehlung als Antwort und ich werde es als Antwort – user1309226

-3

Ich denke, Sie müssen eine Datenbank oder eine andere Quelle aus Ihrer App verwenden. Und holen Sie die URL-Zeichenkette, wann immer sie sich ändert, und Sie können Ihre NSString Variable innerhalb des Codes verwenden. Sie können parse für Ihren Bedarf verwenden (Parse wird jedoch ihren Dienst nächstes Jahr stoppen, aber es gibt viele kostenlose Online-DBs, die Sie verwenden können). Mit dieser Methode müssen Sie Ihren Code nicht ändern, um URL-Strings zu aktualisieren. Ich hoffe, ich könnte bekommen, was Sie richtig brauchen.

+0

Seltsam zu haben "-" für meine Antwort. Als ich die anderen Antworten und die Frage überprüft habe, muss ich fragen: "Wie werden Sie die URL-Zeichenkette ändern, nachdem Sie die App veröffentlicht haben, ohne eine neue Binärdatei zu veröffentlichen?". Entweder ist die Frage nicht richtig oder mir fehlt hier etwas. Frage scheint jetzt seltsam, wenn ich die Antworten überprüfe. "Benutzerdefinierte" Phrase ist etwas anderes als ich weiß ... – icould

+0

1. Dies ist über das Austauschen von Zielen und ist vor der Freigabe einer neuen Binärdatei. 2. Benutzer bedeutet nicht "Endbenutzer" oder "Anwendungsbenutzer" und bedeutet in diesem Zusammenhang ein Build-Ziel, da das Ziel derjenige ist, der die Einstellungen verwendet. –

0

Sie können für diesen Zweck Preprozessor-Makros verwenden. Gehe zu Xcode> Projekt> Ziel> Buildeinstellungen> Präprozessormakros. Fügen Sie dann für jede Erstellungskonfiguration (Debug, Release usw.) ein zielspezifisches Makro hinzu. In Ihrem Quellcode können Sie nun Ihr Ziel identifizieren, indem Sie einfach mit #ifdef auf das Makro verweisen.

Beispiel:

Die folgende Abbildung zeigt die Erklärung des TARGET-Makro in build settings-

enter image description here