3

我正在尝试安装 rollout.io,它只是说将代码放入您的 ApppDelegate 中,问题是它在 Objective-C 中。因此,我使用转换器尝试将其更改为 Swift,但是当我尝试将 Objective-C 导入标头放入我的代码时它不起作用。即使我尝试转换它,在线转换器甚至不显示“导入”部分

我试过这些都准备好了

代码:

import  Rollout
import rollout
import UIRollout

所有这些都失败了。

我可以在快速弹出中获得底部,但不能在顶部“导入,Rollout/Rollout.h>”部分

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

6

笔记:

以下将允许您设置 Rollout SDK,以防您的 AppDelegate 使用 Swift。

更新:

Rollout SDK 1.1.0 具有调用设置的 Swift 接口,因此以下所有信息现在都无关紧要。

原答案:

1. Swift-ObjC 桥接头

要从 Swift 调用[Rollout setupWithDebug:],您应该设置 Objective-C Bridging Header 并且<Rollout/Rollout.h>应该从中导入:

  1. 在构建设置中,检查是否已设置 SWIFT_OBJC_BRIDGING_HEADER。如果是,请转到步骤 4
  2. 创建一个 C 头文件(File -> New -> File... -> iOS -> Source -> Header File)。以某种方式调用它,例如ObjC-Bridging-Header
  3. 转到构建设置并设置SWIFT_OBJC_BRIDGING_HEADER为指向您创建的文件 ( ObjC-Bridging-Header.h)。如果文件不在项目的根目录中,则设置中需要相对路径 -此 SO 答案中的更多详细信息
  4. 转到标题并在那里添加导入行:

    #import <Rollout/Rollout.h>

2.#if debug

为了允许推出测试模式(便于热补丁测试),还需要#ifdef Debug从 ObjC 转换。这可以通过OTHER_SWIFT_FLAGS在构建设置中进行设置来完成,如下所示:

在此处输入图像描述

3. 从 AppDelegate.swift 调用设置

现在您可以将以下行添加到application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)

    #if DEBUG
        Rollout.setupWithKey("<rollout_key>", developmentDevice: true)
    #else
        Rollout.setupWithKey("<rollout_key>", developmentDevice: false)
    #endif
于 2015-10-19T08:17:20.397 回答