Swiftui ';ContentView#u预览';不是错误的成员类型
如果ContentView引用外部对象,则不会编译“ContentView\u预览” 如果删除对@ObservedObject的所有引用,预览将编译Swiftui ';ContentView#u预览';不是错误的成员类型,swiftui,Swiftui,如果ContentView引用外部对象,则不会编译“ContentView\u预览” 如果删除对@ObservedObject的所有引用,预览将编译 import SwiftUI struct ContentView: View { @ObservedObject var fancyTimer = FancyTimer() var body: some View { Text("\(fancyTimer.timerValue)") .font(.la
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”的成员类型问题似乎在Xcode 11 GM Seed 2中消失了我刚刚遇到了这个问题,单击预览面板上的“诊断”按钮就发现了问题。你的项目叫“FancyTimer”吗?如果是这样,那么发生的情况是编译器正在尝试引用FancyTimer.ContentView\u预览,并且失败了,因为它不是该类的子类型。基本上,项目名称和类名之间存在冲突。在常规设置中更改显示名称和捆绑包标识符解决了我在Xcode 11.1中遇到的这个问题。通常问题是您创建了一个类、结构或枚举,该类、结构或枚举与您所在的模块具有相同的名称 在这里,“FancyTimer”可能也是项目的名称,这会触发错误
尝试更改类名。我的项目名与基金会的一个类相同。更改项目名称修复了该问题 要包含此代码的是Xcode 11 GM Seed。您发布的代码将编译并运行。这是编译时错误吗?如果是,错误在哪一行,Xcode突出显示哪一行?预览无法编译:错误是:“ContentView”不是“FancyTimer”的成员类型。应用程序运行正常,但没有预览。代码来自编译预览的链接。我在创建一个名为UnitConverter的项目时也遇到了同样的问题。bug告诉我这是我的应用程序的命名问题。我不认为有一个名为FancyTimer的基础/UIKit类,但它可能会帮助你缩小范围。这发生在我身上。很好。不要把任何东西(Class,Struts,EnUM)命名为与你的项目名称相同,或者预览变得混乱。同样的问题在这里,我快要疯了,谢谢路易斯拉塞斯是我的问题,我愚蠢地把我的测试项目命名为一个基础类的名字,这可能不是一个bug,但它是不可接受的。谢谢你的接球!谢谢很难找到,我将项目名称更改为另一个,其中一个是类名,然后这个问题就消失了。我在编写苹果的Landmark教程时遇到了这个问题,我将项目名称命名为
Landmark
,它与类名中的一个相同。同样,在我的例子中,我在构建设置中将我的“产品名”设置为简单的“应用”(对于多个项目中关于代码重用的常见import-App
语句)这与SwiftUI中新的App
类型相矛盾。重命名“产品名称”(模块名称的来源)修复了该问题。