ios - 在我的项目中包括一个 Playground

标签 ios swift xcode swift-playground

我正在 Xcode 9 中处理 Swift 项目,并且我处于表格翻转模式。

这是我的最终目标:将测试放在 Playground 上的逻辑旁边,这样当我编写逻辑时,我可以看到测试近乎实时地通过。

我也会接受如何将我的测试单独放在 Playground 上,我只是不想在模拟器上为每件小事运行测试。

我在尝试让它发挥作用的过程中遇到了很多问题。首先也是最重要的,我找不到将 Playground 直接添加到我的项目/工作空间的方法。当我右键单击项目导航器中的一个组并选择“新文件...”时,我得到以下信息:

New file dialog

如您所见,没有 Playground 选项。过滤也不会返回任何结果。如果我按项目导航器底部的加号按钮,则会弹出相同的对话框(没有 Playground 选项)。

我以为它在另一个菜单中,所以我进入了"file"菜单,在“新建>”中我找到了一个用于创建 Playground 的选项。我从选择器中选择一个空白的 Playground,选择保存位置(奇怪的是它想将其保存在“未保存的 Xcode 文档”下),然后在新选项卡中出现一个基本的 Playground。不过,我注意到奇怪的是,此选项卡顶部不再有播放按钮或方案/模拟器选择器。

它现在无法识别除 Apple 提供的模块之外的任何模块!果然,创建 Playground 实际上并没有将其添加到我的工作空间中。我想我必须手动将其添加到我的项目中。执行此操作后,它将识别我的 Pod,但无法识别我的项目文件!我尝试使用的任何类都会给我一个无法识别的标识符。尝试导入我的项目也不起作用,它只是给我一个无模块

我尝试清除 DerivedData,我尝试清理,我尝试重新启动 Xcode,我什至确保模拟器列表中有 iPad Pro(因为这对某些人来说似乎很重要)。

沮丧地,我删除了 Playground,并决定只处理不断运行我的测试。但现在,我的项目一直存在错误!尽管将 Playground 移至垃圾桶,Swift 仍然错误提示该 Playground “无法解析标识符”!

最佳答案

如优Brandon Williams在他的演讲中说:FrenchKit ,一个 Playground “does not get access to anything in the application target.”这很荒谬,但是嘿,你要做什么。所以答案是:目前没有办法按照我要求的方式做到这一点。

但是,如果您的逻辑位于其自己的框架/cocoapod 中,则可以实现此功能。也就是说,将您想要测试的逻辑从您的应用程序目标移出并移至您的应用程序随后导入的外部库中。这也将允许您的 Playground 导入它,并且您可以随心所欲地进行测试。

关于ios - 在我的项目中包括一个 Playground ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506528/

相关文章:

ios - 无法同时满足约束自定义 header 部分

ios - 如何限制 ImageView 的拖动区域

Swift:对 WordPress 的 REST 调用的身份验证

javascript - 无法在用于 iOS UI 测试的密码文本字段中输入文本

c++ - 找不到 -ljson11 的库,但找到 -lsqlite 3

javascript - 在所有平台(包括 iOS、ANDROID)的 Delphi XE6 上通过 javascript 从 TWebBrowser 回调 Delphi 函数?

ios - 尝试取消与已删除实体的关系时核心数据崩溃

ios - 为什么SQLite方法“sqlite3_step”不起作用

ios - swift 3 在应用程序处于后台时读取加速度计数据

ios - Xcode 8.1 框架协同设计很慢