Ich habe gerade alle objective-c globalen Konstanten Variablen Q & A gelesen, aber ich fand sie unpassend zu meinem Problem.Erstellen Sie eine Liste der Konstanten Variable von anderen Konstanten
Ich brauche eine Liste von Variablen wie folgt aus:
NSString *baseURL = @"http://example.org";
NSString *mediaURL = @"http://example.org/media/";
NSString *loginURL = @"http://example.org/login/";
NSString *postURL = @"http://example.org/post/";
etc.
Natürlich kann ich nicht diesen Code verwenden, weil es ein sehr schlechter Ansatz ist, und wenn ich die Basis-URL ändern müssen muss ich alle Variablen ändern. Da ich brauche diese Variablen aus jeder Klasse der App zugegriffen werden ich sie mit diesem Ansatz als global deklariert:
// Constants.h
extern NSString *const baseURL;
extern NSString *const mediaURL;
extern NSString *const loginURL;
extern NSString *const postURL;
// Constants.m
NSString *const baseURL = @"http://example.org";
NSString *const mediaURL = [NSString stringWithFormat:"%@%@", baseURL, @"/media/"];
NSString *const loginURL = [NSString stringWithFormat:"%@%@", baseURL, @"/login/"];
NSString *const postURL = [NSString stringWithFormat:"%@%@", baseURL, @"/post/"];
ABER Ich kann das nicht tun, weil ich Erhalten Sie diesen Fehler:
Initializer element is not a compile-time constant
Das passiert, weil Objekte zur Laufzeit funktioniert.
Jetzt ist meine Frage, ein für allemal hoffe ich, was ist eine nette und gute Möglichkeit, dieses ziemlich übliche Szenario in Netzwerk-Apps zu behandeln?
Ich denke, verwenden Sie eine Klasse (oder eine Singleton-Klasse) für die Handhabung der Konstanten Variablen ist ein bisschen übertrieben, und es ist auch zu ausführlich verwenden so etwas wie [MyClass globalVar]
jedes Mal, wenn ich es brauche.
Ideen dazu?
Uhm, nicht schlecht Sir. Also brauche ich in diesem Fall nur eine .h Datei, oder? –
@FredCollins ja .. –
Ja. Die Definitionen sind nur literale Ersetzungen vor der Kompilierung. (Um jedoch halbstandardisiert zu sein, könnte man sie als FC_BASE_URL und FC_MEDIA_URL oder etwas Ähnliches umbenennen.) –