Swift:如何使用 PREPROCESSOR Flags(如 `#if DEBUG`)来实现 API 密钥?

2023-12-05

In Objective-C有时使用静态字符串常量定义备用 API 键很有用(例如,区分分析包的 RELEASE 和 DEBUG 键,如 MixPanel、Flurry 或 Crashlytics):

#if DEBUG
static NSString *const API_KEY = @"KEY_A";
#else
static NSString *const API_KEY = @"KEY_B";
#endif

进而...

[Analytics startSession:API_KEY];

由于 Swift 编译器不再使用预处理器,这如何转换为 Swift?


Apple 已全面支持 Swift 预处理器标志Xcode 8,因此不再需要在“其他 Swift 标志”中设置这些值。

新设置称为“活动编译条件”,它为 Swift 等效的预处理器标志提供顶级支持。使用它的方式与“其他 Swift 标志”完全相同,只是不需要在值前面加上“-D”(所以它更干净一些)。

来自Xcode 8 发行说明:

Active Compilation Conditions是一个新的构建设置,用于将条件编译标志传递给 Swift 编译器。此设置值的每个元素都会传递给前缀为 swiftc-D,以同样的方式,元素Preprocessor Macros使用相同的前缀传递给 clang。 (22457329)

enter image description here

您可以像这样使用上面的设置:

#if DEBUG
    let accessToken = "DebugAccessToken"
#else
    let accessToken = "ProductionAccessToken"
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift:如何使用 PREPROCESSOR Flags(如 `#if DEBUG`)来实现 API 密钥? 的相关文章

随机推荐

  • 如何使用 csv DictWriter 将列表中的信息写入 csv 文件?

    使用csv模块 我一直在尝试将信息从列表传递 写入到 csv 文件中python使用字典编写器 我收到一个奇怪的错误 女巫将在实际代码下 我想知道代码中的错误是什么 以及我们如何修复它 import csv names kisha smit
  • NSURL 对于有效 URL 返回 nil

    我有一个有效的谷歌地图网址 如果您在浏览器中运行该网址 则会显示地图图像 然而 当我将它放入我的 Swift 代码中并尝试从 String 创建 NSURL 时 它返回 nil let urlString https maps google
  • 获取 AppointmentItem 的日历所有者电子邮件地址

    我正在开发一个 Outlook 加载项以将所有约会发送到 Web 应用程序 但在持续获取 AppointmentItem 的 所有者 而不是组织者 时遇到了一些问题 例如 X 向 Y 和 Z 发送约会 加载项将从其中获取三个约会项目 我正在
  • 如何从java程序(即以编程方式)将用户输入发送到终端?

    我正在从 java 程序执行命令 例如 Process myProcess Runtime getRuntime exec sudo cat etc sudoers It asks for password so I send passwo
  • 为什么在分组 data.table 内的 lm 上使用 update 会丢失其模型数据?

    好吧 这很奇怪 我怀疑这是内部的错误data table 但如果有人能解释为什么会发生这种情况 那将会很有用 这是什么update究竟在做什么 我正在使用list list 里面的诡计data table存储已安装的模型 当您创建一个序列时
  • 是否可以将全局第三方类扩展为 Next.js 中的 CSS 模块?

    我正在使用 Next js 和 CSS 模块 现在在 app js我正在导入一个全局 scss 文件 如下所示 import public scss style scss 在这个文件中 我导入了 Bootstrap import node
  • 在 gridview 中冻结标题时正确设置标题宽度和列

    我想要一个带有固定 header 的 gridview 我试过这个link and this 我一直都能做到这一点 但存在网格标题宽度和列宽度设置不相等的问题 所以它看起来不太好 但滚动和冻结确实可以正常工作 如果我不使用冻结逻辑 则标题宽
  • Javascript 事件在平板电脑上不起作用?

    我在 ASP NET 3 5 中开发了一个 Web 应用程序 它消耗了大量的 javascript JQuery 事件 并且在 PC 的普通浏览器中正常工作 但我的客户说这些在tablet pc android 和 iPad 中不起作用 就
  • Jquery Mobile:多次更新表单

    好的 经过几个小时的困惑 我发现在 Jquery Mobile 元素上调用 page 只能工作一次 如果我想通过 AJAX 多次更新表单 该怎么办 update jQuery Mobile beta2 引入了create event tri
  • 如何模拟 do-while 循环?

    我需要在 Python 程序中模拟 do while 循环 不幸的是 下面的简单代码不起作用 list of ints 1 2 3 iterator list of ints iter element None while True if
  • 如何引用Microsoft.Office.Interop.Excel dll?

    我在 2006 年使用 MS VS 2005 开发了一个处理 Excel 表格的系统 现在 我无法在 MS VS 2012 中使用相同的参考 var app new Microsoft Office Interop Excel Applic
  • SQL删除清除表而不是出错

    我有一段 SQL 你会认为 无法编译 但它会从目标表中删除所有行 考虑这个设置 create table TableA ColumnA varchar 200 create table TableB ColumnB varchar 200
  • 如何创建复选框列表

    我正在尝试读取 xml 文件并填充QListWidget及其一些内容 每个条目都应该有一个复选框 在 Qt Designer 中 我创建了列表并添加了一个具有复选框的项目 方法是将项目添加到 listWidget 然后右键单击它并选择 编辑
  • SceneKit – 加载 HDR 或 EXR 光照环境没有效果

    我尝试加载 hdr文件以将其用作天空盒并使用其照明信息 这是我使用的代码 backgroundColor UIColor gray check if a default skybox is added let environment UII
  • 以编程方式删除 Lotus Notes 设计元素继承

    作为创建基本修订控制系统的一部分 我想以编程方式禁用 Lotus Notes 模板上的设计元素级别继承 到目前为止我已经尝试过以下方法 DXL 导出 ForceNoteFormat true XSLT 由于导入器中字段 上的验证问题而失败
  • 通过chrome扩展获取下载文件的绝对路径

    我正在开发一个 chrome 扩展 它可以从网页下载特定文件 我有一个 popup html 通过它我可以输入要下载的文件的名称 还有一个链接 历史记录 单击该链接我想打开一个新页面 其中包含指向以前下载的文件的链接 下载历史记录 我可以下
  • PHP 致命错误:在非对象上调用成员函数 Execute() [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 当我执行此代码时 出现错误 PHP 致命错误 在非对象
  • 如何在 Scene Kit 中对同一场景使用多个摄像机

    我有 2 个彼此相邻的 SCNView 两者都应该显示相同的场景 但通过不同的摄像机 在我看来 场景套件使用该节点和节点层次结构中最高的相机 所以我尝试了类似的方法 leftSceneView scene rootNode addChild
  • 哪里可以下载 MotoDev Studio? [关闭]

    Closed 这个问题是无关 目前不接受答案 在新的摩托罗拉网站中 我找不到任何 MotoDev Studio 的链接 我去年用过 现在好像消失了 你知道我在哪里可以找到最后的版本吗 他们不再支持 MotoDev 工作室 这与收购Googl
  • Swift:如何使用 PREPROCESSOR Flags(如 `#if DEBUG`)来实现 API 密钥?

    In Objective C有时使用静态字符串常量定义备用 API 键很有用 例如 区分分析包的 RELEASE 和 DEBUG 键 如 MixPanel Flurry 或 Crashlytics if DEBUG static NSStr