如果ContentView引用了外部对象,则不会编译'ContentView_Previews'。
如果删除所有对@ObservedObject的引用,请预览编译。
import SwiftUI
struct ContentView: View {
@ObservedObject var fancyTimer = FancyTimer()
var body: some View {
Text("\(fancyTimer.timerValue)")
.font(.largeTitle)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import Foundation
import SwiftUI
import Combine
class FancyTimer: ObservableObject {
@Published var timerValue: Int = 0
init() {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true)
{ timer in
self.timerValue += 1
}
}
}
错误是:“ ContentView”不是“ FancyTimer”的成员类型
答案 0 :(得分:29)
通常的问题是您创建的类,结构或枚举与您所在的模块具有相同的名称。
在这里,很可能“ FancyTimer”也是您的项目的名称,这会触发错误。
尝试更改班级名称。
答案 1 :(得分:4)
我的项目名称与基金会的班级之一相同。更改项目名称可解决此问题。
答案 2 :(得分:1)
我刚遇到这个问题,然后单击“预览”面板上的“诊断”按钮向我显示了问题。您的项目名为“ FancyTimer”吗?如果是这样,那么正在发生的情况是编译器正在尝试引用FancyTimer.ContentView_Previews,但由于它不是该类的子类型而失败了。基本上,项目名称和类名称之间会发生冲突。
答案 3 :(得分:1)
在常规设置中更改显示名称和包标识符在XCode 11.1中为我解决了此问题。
答案 4 :(得分:0)
问题似乎在Xcode 11 GM Seed 2中消失了