Я новичок в разработке Swift и iOS и попробую учиться, следуя официальным руководствам SwiftUI. Я получил ошибки в разделе 5 (https://developer.apple.com/tutorials/swiftui/handling-user-input).. Я тщательно выполнял каждый шаг, и после выполнения шага 1 раздела 5 Xcode выдавал сообщение об ошибке «Использование необъявленного типа« UserData »». Я пытался игнорировать его и выполнял его. Однако мои файлы LandmarkList, LandmarkDetail, SceneDelegate предупреждали меня об этой же ошибке. Я даже проверил законченную версию проекта, которую я скачал со страницы учебника. Они выглядели точно так же, за исключением частей, которые я не сделал. здесь есть опыт, аналогичный моему, или вы можете предложить несколько советов? Спасибо!
Я использую Xcode 11 и Swift 5.
Это класс UserData, который я создал в Моделяхпапка.
import Combine
import SwiftUI
final class UserData: ObservableObject {
@Published var showFavoritesOnly = false
@Published var landmarks = landmarkData
}
Это файл rootview, который продолжает выдавать ошибки.
import SwiftUI
struct LandmarkList: View {
@EnvironmentObject private var userData: UserData // Use of undeclared type 'UserData'
var body: some View {
NavigationView {
List { // Unable to infer complex closure return type; add explicit type to disambiguate
Toggle(isOn: $userData.showFavoritesOnly){ // Use of unresolved identifier '$userData'
Text("Favorites Only")
}
ForEach(userData.landmarks) { landmark in
if !self.userData.showFavoritesOnly || landmark.isFavorite {
NavigationLink(destination: LandmarkDetail(landmark: landmark)
.environmentObject(self.userData)) {
LandmarkRow(landmark: landmark)
}
}
}
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
ForEach(["iPhone SE", "iPhone XS Max"], id: \.self) { deviceName in
LandmarkList()
.previewDevice(PreviewDevice(rawValue: deviceName))
.previewDisplayName(deviceName)
}
.environmentObject(UserData()) // Use of unresolved identifier 'UserData'
}
}