我孜孜不倦地遵循Apple的指示将自定义模块导入游乐场,包括说明here。然而我得到了:
游乐场执行失败:/var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.swift:7:8:错误:没有这样的模块' Foo' 导入Foo
如何恢复到有效的Playground导入? [编辑:注意,两个答案已经产生了将操场与框架相关联的详细说明;我遵循了这些指示,但没有运气。 该解决方案需要涉及在Xcode中重新配置某些内容;我的装置显然已被打破]
答案 0 :(得分:38)
对于其中一些上述解决方案都不起作用(并且Xcode构建路径设置已设置为Unique
),我找到了解决方案。
框架必须使用iOS模拟器设备(列表中的任何设备)而不是Generic iOS Device
构建,因为Playgrounds不支持它。这个对我有用:
答案 1 :(得分:14)
以下是我使用Xcode 7.1进行OS X的方法:
创建新项目:OS X Cocoa Framework,Swift。在本例中,我将其命名为“TestPlaygroundFMK”。
创建一个新的Swift文件。
在文件中添加一个类。 代码必须公开。我为我们的例子做了这个:
import Foundation
public class Talk {
public class func sayHello() {
print("Hello from framework!")
}
}
立即构建项目。
在菜单栏中,点击文件>另存为工作区。
创建一个新的Playground并将其保存在Swift文件旁边的项目文件夹中。
Playground必须不与项目名称相同。
再次构建项目。
在Playground中导入框架并使用它:
import TestPlaygroundFMK
Talk.sayHello()
答案 2 :(得分:5)
创建如下工作区:
现在,使用带有您的类
的swift文件创建一个Cocoa框架注意:如果您只想将类而不是框架添加到游乐场,请查看链接How to import my own class into an Xcode 7 playground?
答案 3 :(得分:4)
我让我的游乐场工作正常,但发现当我退出Xcode并重新打开它时,我会收到这样的错误:
错误: /var/folders/ft/bmk8wh6s5ms4my2pxhn3qbp40000gn/T/playground1-9216e0..swift:3:8: 错误:没有这样的模块' Playground_Sources'导入Playground_Sources
......其中"游乐场"是我的游乐场文件的名称。
对此的解决方案(在Xcode 9.0中)是:
opt
- cmd
- 0
)在我的情况下,它设置为macOS
。我把它更改为iOS
然后再回到macOS
(不需要重新编译)它开始工作正常......直到我关闭Xcode并再次打开它。
这是我发现使用 macOS playgrounds 的唯一解决方案。 Xcode 9.3中仍存在此错误。
答案 4 :(得分:2)
解决方案是调整我的Xcode首选项。在Locations :: Advanced上,我的配置是“Legacy”。通过更改为“Unique”,并撤消我尝试插入的任何路径,Playgrounds可以现在导入框架。
答案 5 :(得分:2)
对我有用的解决方案:
PS 。您可能需要在第6步之前重新启动Xcode。
答案 6 :(得分:1)
我不确定我是否有与原始问题完全相同的问题-但是鉴于解决方案的混合和年代以及缺乏DID对我有用的解决方案,我想我会同意的。
在Xcode 11+中(在12.2上对此进行了测试),当Playgrounds包含一个作为工作空间一部分的框架时,常常会因为“没有这样的模块”错误而无法运行。
对我来说,解决方案是在Playground的“文件检查器”中,以及“构建活动方案”选项:
这可以确保针对目标适当地构建项目,而现在我烦人的编译问题就解决了!
答案 7 :(得分:0)
我不认为Xcode有点像黑盒子。我没有声称这对其他任何人都有用,但对我来说,在创建一个新的游乐场和一个新的框架目标之后遇到同样的问题,以及所有其他提议的解决方案,最终工作的是删除工作区文件和(在我的情况下)用cocoapods重新生成它。
我不知道为什么会这样。
答案 8 :(得分:0)
使用release构建框架,这对我有用。 (Xcode 10.1,快速4.2)
答案 9 :(得分:0)
在第一行插入一个变量,然后重新运行
var str = ""