Функции PreviewProvider в SwiftUI вызывают проблемы - PullRequest
2 голосов
/ 13 января 2020

Работая с SwiftUI, я пару раз сталкивался с PreviewProvider и пока не понял, как правильно обращаться с этой функцией.

Как я могу предотвратить проблемы в этом случае, потому что прямо сейчас, очевидно, говорится:

Использование неразрешенного идентификатора 'ShelterDetailedView (shelter:)'

shelter внутри ShelterDetailedView пересылается родителем представления. Я получаю эти данные из базы данных.

struct ShelterDetailedView: View {
    var shelter: Shelter

    var body: some View {
        VStack(alignment: .leading, spacing: 0) {
            ScrollView(.horizontal, showsIndicators: true) {
                HStack {
                    Image(shelter.image)
                        .resizable()
                        .frame(width: UIScreen.main.bounds.width, height: 300)
                    Image("pacific")
                        .resizable()
                        .frame(width: UIScreen.main.bounds.width, height: 300)
                }
            }
            HStack {
                Spacer()
                DetailedViewDistance(shelter: shelter)
                Spacer()
            }
            .offset(x: 0, y: -30)
            DetailedViewHeader(shelter: shelter)
            Spacer()
        }
    }

}

struct ShelterDetailedView_Previews: PreviewProvider {
    static var previews: some View {
        ShelterDetailedView(shelter: ??????)
    }
}
class Shelter: Identifiable {

    let id: String
    let title: String
    let image: String
    let available: Bool
    let distance: Double
    let gender: String?

    init?(id: String, title: String, image: String, available: Bool, distance: Double, gender: String?) {

        if id.isEmpty || title.isEmpty || image.isEmpty || distance < 0 {
            return nil
        }

        self.id = id
        self.title = title
        self.image = image
        self.available = available
        self.distance = distance
        self.gender = gender
    }

}

1 Ответ

0 голосов
/ 13 января 2020

Создайте некоторый экземпляр заглушки явно:

struct ShelterDetailedView_Previews: PreviewProvider {
    static var previews: some View {
        ShelterDetailedView(shelter: Shelter(... parameters here ...))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...