在 Swift 中添加和检索 GCC_PREPROCESSOR_DEFINITIONS 值

问题描述 投票:0回答:1

我在我的项目中创建了多个目标。现在我计划将字符串

UUID
添加到所有目标 GCC_PREPROCESSOR_DEFINITIONS 又名预处理器宏。

我会将其添加到 Alpha、Beta、Lite 和 Prod 中。并且根据UUID字符串我可以知道哪个变体正在运行并使用相应的配置来动态处理

对于 Target1,我想添加

UUID="<UUID for Target1>"
,我将在每个目标中添加 4 个 uuid。

现在我有两个挑战 -

  1. 将 UUID 添加到所有预处理器宏中
  2. 在App生命周期一开始就检索UUID,以便我可以根据UUID配置应用程序

对于第一个选项,我在互联网上进行了搜索,但找到了添加 int 值的解决方案,并在检索值时使用 if elif 和 else 在 swift 和 Objective-C 中进行检查

但是我想添加一个

string value
并且在检索时我想将该值分配给我的本地 swift 变量并使用该 uuid。

如何将字符串值从预处理器宏检索到 Swift varibale?

可能是一个基本问题,但我没有找到任何相关内容。

xcode preprocessor
1个回答
0
投票

它很耐用,但是我们需要OC的帮助,因为swift的Marco很弱。


  1. 首先,由于OC是C语言的超集,而C语言支持字符串类型Marcos,所以我们可以这样定义Marco

S_UUID="2EBEA32B-60AE-48FA-90E1-686DD83512DE"

我添加了

S_
前缀以防止符号与系统符号冲突。

  1. 添加这两个预处理器宏:
//turns x into a string literal
#define STRINGIZE(x) #x
//uses STRINGIZE(x) to turn the value of x into a string.
#define STRINGIZE_VALUE_OF(x) STRINGIZE(x)
  1. 然后你可以将 S_UUID 解析为 OC 的 String 类型
  NSString *uuid = @STRINGIZE_VALUE_OF(S_UUID);

我已经创建了POC项目here,它有在swift中使用检索到的UUID的代码。

© www.soinside.com 2019 - 2024. All rights reserved.