在我的项目中包括一个游乐场
Including a Playground in my project
我在 Xcode 9 的一个 Swift 项目中工作,我正处于 table 翻转模式。
这是我的最终目标:在操场上将我的测试放在我的逻辑旁边,这样当我编写逻辑时,我可以近乎实时地看到测试通过。
我也会接受如何自己将我的测试放在操场上,我只是不想 运行 对每一件小事都在模拟器上进行测试。
我在尝试让它工作的过程中遇到了很多问题。首先,我找不到直接将游乐场添加到我的 project/workspace 的方法。当我右键单击项目导航器中的一个组和 select 'New file...' 我得到这个:
如您所见,没有 playground 选项。过滤也 returns 没有结果。如果我按下项目导航器底部的加号按钮,会弹出相同的对话框(没有 playground 选项)。
我以为它在另一个菜单中,所以我转到“文件”菜单,然后在 "New >" 中我找到了创建游乐场的选项。我从选择器中 select 一个空白的游乐场,选择保存它的位置(奇怪的是它想将它保存在 'Unsaved Xcode Documents' 下)并且一个基本的游乐场出现在一个新的选项卡中。不过,我注意到奇怪的是,此选项卡的顶部不再有播放按钮或 scheme/simulator select 或。
它现在无法识别 Apple 提供的模块以外的任何模块!果然,创建游乐场并没有真正将它添加到我的工作区。我想我必须手动将它添加到我的项目中。这样做后,它会识别我的 pods 但 none 我的项目文件 !我尝试使用的任何 class 都会给我一个 Unrecognized identifier
。尝试 import
我的项目也不起作用,它只是给了我一个 No module
.
我尝试清除 DerivedData
,我尝试清理,我尝试重新启动 Xcode,我什至确定我在模拟器列表中有一个 iPad Pro(因为它似乎对某些人来说很重要)。
无奈之下,我删除了 playground,并下定决心只为不断处理 运行 我的测试。但是现在,我的项目一直存在错误!尽管将 playground 移到了垃圾桶,Swift 仍然错误地为那个 playground 说 'Unresolved identifier'!
作为优秀的 Brandon Williams says in his talk at FrenchKit, a playground "does not get access to anything in the application target.”这很荒谬,但是嘿,你要做什么。所以答案是:目前没有办法按照我的要求做到这一点。
但是,如果您的逻辑是独立的 framework/cocoapod,则可以实现此功能。也就是说,将您要测试的逻辑 移出您的应用程序目标 并移至您的应用程序随后导入的外部库中。这将允许您的游乐场也导入它,您可以尽情测试。
我在 Xcode 9 的一个 Swift 项目中工作,我正处于 table 翻转模式。
这是我的最终目标:在操场上将我的测试放在我的逻辑旁边,这样当我编写逻辑时,我可以近乎实时地看到测试通过。
我也会接受如何自己将我的测试放在操场上,我只是不想 运行 对每一件小事都在模拟器上进行测试。
我在尝试让它工作的过程中遇到了很多问题。首先,我找不到直接将游乐场添加到我的 project/workspace 的方法。当我右键单击项目导航器中的一个组和 select 'New file...' 我得到这个:
如您所见,没有 playground 选项。过滤也 returns 没有结果。如果我按下项目导航器底部的加号按钮,会弹出相同的对话框(没有 playground 选项)。
我以为它在另一个菜单中,所以我转到“文件”菜单,然后在 "New >" 中我找到了创建游乐场的选项。我从选择器中 select 一个空白的游乐场,选择保存它的位置(奇怪的是它想将它保存在 'Unsaved Xcode Documents' 下)并且一个基本的游乐场出现在一个新的选项卡中。不过,我注意到奇怪的是,此选项卡的顶部不再有播放按钮或 scheme/simulator select 或。
它现在无法识别 Apple 提供的模块以外的任何模块!果然,创建游乐场并没有真正将它添加到我的工作区。我想我必须手动将它添加到我的项目中。这样做后,它会识别我的 pods 但 none 我的项目文件 !我尝试使用的任何 class 都会给我一个 Unrecognized identifier
。尝试 import
我的项目也不起作用,它只是给了我一个 No module
.
我尝试清除 DerivedData
,我尝试清理,我尝试重新启动 Xcode,我什至确定我在模拟器列表中有一个 iPad Pro(因为它似乎对某些人来说很重要)。
无奈之下,我删除了 playground,并下定决心只为不断处理 运行 我的测试。但是现在,我的项目一直存在错误!尽管将 playground 移到了垃圾桶,Swift 仍然错误地为那个 playground 说 'Unresolved identifier'!
作为优秀的 Brandon Williams says in his talk at FrenchKit, a playground "does not get access to anything in the application target.”这很荒谬,但是嘿,你要做什么。所以答案是:目前没有办法按照我的要求做到这一点。
但是,如果您的逻辑是独立的 framework/cocoapod,则可以实现此功能。也就是说,将您要测试的逻辑 移出您的应用程序目标 并移至您的应用程序随后导入的外部库中。这将允许您的游乐场也导入它,您可以尽情测试。