'ContentView_Previews' 不是成员类型的错误

Tim*_*Tim 14 swiftui

如果 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
        }
     }
   }
Run Code Online (Sandbox Code Playgroud)

错误是:“ContentView”不是“FancyTimer”的成员类型

Lou*_*Lac 29

通常问题是您创建了一个与您所在的模块同名的类、结构或枚举。

在这里,很可能“FancyTimer”也是您项目的名称,这会触发错误。

尝试更改类名。

  • 这发生在我身上。很棒的收获。不要将任何内容(类、结构、枚举)命名为与项目名称相同,否则预览会感到困惑。 (2认同)

Ozg*_*hin 10

在常规设置中更改显示名称和包标识符为我在 Xcode 11.1 中解决了这个问题。


B.T*_*.T. 6

我刚刚遇到了这个问题,单击“预览”面板上的“诊断”按钮向我显示了问题。你的项目叫“FancyTimer”吗?如果是这样,则发生的情况是编译器试图引用 FancyTimer.ContentView_Previews,但由于它不是该类的子类型而失败。基本上,您会遇到项目名称和类名称之间的冲突。


Tim*_*Tim 0

问题似乎在 Xcode 11 GM Seed 2 中消失了