Szukałem daleko za odpowiedź na to ponieważ naprawdę nie podoba mi się pomysł tworzenia dodatkowych Celów ani dodatkowych zestawów Konfiguracji. Obie te opcje powodują po prostu ogromny problem z synchronizacją konfiguracji.
Tak, po hacking Xcode na kilka godzin, to co wymyśliłem:
Krok 1: dodać klucz "SchemeName" do Info.plist z typu string.
Krok 2: Edycja schematu domyślnego i na produkcji -> Pre-actions dodać nowy skrypt uruchomić z następującymi:
/usr/libexec/PlistBuddy -c "Set :SchemeName \"$SCHEME_NAME\"" "$PROJECT_DIR/$INFOPLIST_FILE"
Upewnij się i wybrać cel spod „zapewnić ustawienia budować od ".
Krok 3: Teraz powielać że schemat tyle razy, ile chcesz (Zarządzanie Schematy ... -> Wybierz istniejący schemat -> kliknij ikonę koła zębatego -> Duplikat) Na przykład, można utworzyć Rozwoju, Rusztowania , Produkcja, App Store itp. Nie zapomnij kliknąć "udostępniony", jeśli chcesz, aby te schematy były przenoszone w kontroli wersji.
Krok 4: W kodzie można pobrać wartość takiego:
NSString *schemeName = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"SchemeName"];
Teraz, kod może skonfigurować się prawidłowo przy starcie. Żadnych nieprzyjemnych makr preprocesorów, z którymi nie można sobie poradzić i żadnych kłopotliwych bałaganów w konfiguracji.
ah, nie wiedziałem tego, thx za super szybką odpowiedź :) – user390687
Tak, robienie tego przy użyciu ** Build Configuration ** jest prawdopodobnie lepsze niż wnioskowanie przez Schemat, ponieważ konfiguracja kompilacji wpływa również na wiele innych buduj ustawienia. –