“ ContentView_Previews”不是错误的成员类型

时间:2019-09-12 21:47:24

标签: 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
        }
     }
   }

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

5 个答案:

答案 0 :(得分:29)

通常的问题是您创建的类,结构或枚举与您所在的模块具有相同的名称。

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

尝试更改班级名称。

答案 1 :(得分:4)

我的项目名称与基金会的班级之一相同。更改项目名称可解决此问题。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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