Swiftui ';ContentView#u预览';不是错误的成员类型

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

如果ContentView引用外部对象,则不会编译“ContentView\u预览”

如果删除对@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”的成员类型

问题似乎在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
类型相矛盾。重命名“产品名称”(模块名称的来源)修复了该问题。