У меня есть проект со следующей структурой:
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
является неразрешенным типом и что kittenData является неразрешенной переменной. Вот содержимое Data.swift, где я создаю массив kittenData:
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 и переменной kittenData? Еще более интересно, если я скопирую структуру Kitten в ContentView, компилятор скажет мне, что это неоднозначная ссылка, означающая, что она определенно ЗНАЕТ, что Kitten.swift существует?