我有一个带有动态框架(称为“VisualKit”)的Xcode工作区和一个导入VisualKit的运动场。
当VisualKit没有自己的外部依赖项时(即VisualKit不依赖于任何其他动态框架时),此设置可以很好地工作。
但是,当我添加一个动态框架时(在这种情况下,我将导入SnapKit,尽管它与什么框架无关紧要),但出现以下错误:
error: Couldn't lookup symbols:
VisualKit.ItemsLabel.__allocating_init() -> VisualKit.ItemsLabel
type metadata accessor for VisualKit.ItemsLabel
我尝试了以下方法:
-清理项目,删除导入语句,然后放回并尝试重建操场
-删除派生数据
-从头开始重新创建工作区/操场/框架项目
...全部无济于事
我的游乐场:
import UIKit
import PlaygroundSupport
import VisualKit
class MyViewController: UIViewController {
override func loadView() {
let view = UIView()
view.backgroundColor = UIColor.red
let label = ItemsLabel()
label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
label.text = "Hello"
view.addSubview(label)
self.view = view
}
}
PlaygroundPage.current.liveView = MyViewController()
ItemsLabel(在VisualKit动态框架项目中):
import UIKit
import SnapKit
public class ItemsLabel: UILabel {
public init() {
super.init(frame: .zero)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我希望游乐场与不带SnapKit导入(在VisualKit中)相同。
有任何想法吗?
最佳答案
经过数小时艰苦的故障排除后,我设法解决了这一问题:
Build Phases
选项卡。 Copy Files
阶段(通过点击+
按钮),然后从下拉选择器中选择Frameworks
。 然后清理并重建您的框架,操场现在应该可以按预期工作。
请注意,仅当您使用迦太基构建框架项目中使用的第三方框架时,此答案才必定适用。