结构类型在ContentView中不可见

时间:2020-04-11 19:14:14

标签: swiftui

我有一个具有以下结构的项目:

KittenBase
  Resources
    kittens.json
  Models
    Kitten.swift
    Data.swift
  AppDelegate.swift
  SceneDelegate.swift
  ContentView.swift

和ContentView.swift看起来像这样:

import SwiftUI

struct ContentView: View {
    var kitten : Kitten
    var body: some View {
        Text("Hello, World!")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView(kitten : kittenData[0])
    }
}

但是问题是编译器说Kitten是未解析的类型,而kititData是未解析的变量。这是Data.swift的内容,我在其中创建了kittyData数组:

let kittenData: [Kitten] = load("kittens.json")
func load<T: Decodable>(_ filename: String) -> T {
    let data: Data

    guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
        else {
            fatalError("Couldn't find \(filename) in main bundle.")
    }

    do {
        data = try Data(contentsOf: file)
    } catch {
        fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
    }

    do {
        let decoder = JSONDecoder()
        return try decoder.decode(T.self, from: data)
    } catch {
        fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
    }
}

为什么我不能访问“小猫”类型和“小猫数据”变量? 甚至更有趣的是,如果我将Kitten结构复制到ContentView中,编译器会告诉我这是一个含糊的引用,这意味着可以肯定知道Kitten.swift存在吗?

1 个答案:

答案 0 :(得分:0)

这原来是XCode11中的一个错误,该错误在我重新启动计算机后已得到修复。