#if DEBUG
static NSString *const API_KEY = @"KEY_A";
#else
static NSString *const API_KEY = @"KEY_B";
#endif
Then…
[Analytics startSession:API_KEY];
This is How to convert to Swift, because the Swift compiler no longer uses the preprocessor?
The new setting is called “Active Compilation Conditions”, which provides top-level support for Swift equivalent preprocessor flags. The way you use it is similar to “Other Swift flag” is exactly the same, except that there is no need to use the “-D” prefix (so it is just a bit cleaner).
From the Xcode 8 release notes:
Active Compilation Conditions
is a new build setting for passing conditional compilation flags to the Swift compiler. Each element of the value of this setting passes to swiftc prefixed with-< /code>D, in the same way that elements of
Preprocessor Macros
pass to clang with the same prefix. (22457329)
You use the above settings as follows:
< pre>#if DEBUG
let accessToken = "DebugAccessToken"
#else
let accessToken = "ProductionAccessToken"
#endif
< p>In Objective-C, static string constants are sometimes used to define alternate API keys (e.g., RELEASE and DEBUG key, such as MixPanel, Flurry or Crashlytics):
#if DEBUG
static NSString *const API_KEY = @"KEY_A";
#else
static NSString *const API_KEY = @"KEY_B";
#endif
Then...
[Analytics startSession: API_KEY];
How is this converted to Swift, because the Swift compiler no longer uses the preprocessor?
As of Xcode 8, Apple fully supports Swift preprocessor flags, so it is no longer necessary to set these values in "Other Swift Flags".
< /p>
The new setting is called "active compilation conditions", which provides top-level support for Swift equivalent preprocessor flags. You use it in exactly the same way as "other Swift flags", except that you don't need to use "- D" prefix (so it’s just a bit cleaner).
From the Xcode 8 release notes:
Active Compilation Conditions
is a new build setting for passing conditional compilation flags to the Swift compiler. Each element of the value of this setting passes to swiftc prefixed with-
D, in the same way that elements ofPreprocessor Macros
pass to clang with the same prefix. (22457329)
You use the above settings as follows:
#if DEBUG
let accessToken = "DebugAccessToken"
#else
let accessToken = "ProductionAccessToken"
#endif