Не удалось создать SwiftUI с более чем 2 операторами ForEach - PullRequest
0 голосов
/ 11 ноября 2019

При попытке создать проект Xcode с использованием SwiftUI я получаю следующую ошибку.

Я получаю сообщение об ошибке: «Компилятор не может проверить это выражение в разумные сроки; попробуйте разбитьВыражение в различные подвыражения "

Я попытался убрать много сложностей кода, чтобы максимально упростить его. Я также попытался уменьшить количество строк в Пикере, чтобы проверить, были ли это проблемы.

struct ContentView: View {
    // set child name
    @State private var childName: String = ""
    // set the days of the week
    let daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

    // set empty
    @State private var selectedAttendance: String = ""
    let attendance = ["None", "All Day", "AM", "PM"]
    @State private var mondayAttendance = 0
    @State private var tuesdayAttendance = 0
    @State private var wednesdayAttendance = 0
    @State private var thursdayAttendance = 0
    @State private var fridayAttendance = 0

    @State private var selectedProvider = 0
    let providers = ["School 1", "School 2", "School 3", "School 4", "School 5"]

    var body: some View {
        NavigationView {
            Form {
                Section(header: Text("Your Child's Details")) {
                    TextField("Name", text: $childName)
                }

                // PICKER to choose childcare provider
                Section(header: Text("Who looks after your child?")) {
                    Picker("Childcare Provider", selection: $selectedProvider) {
                        ForEach(0 ..< providers.count) {
                            Text("\(self.providers[$0])")
                        }
                    }
                }


                Section(header: Text("Which days does your child attend?")) {
                    VStack {

                        // Monday
                        HStack {
                            Text("Monday")
                                .dayOfWeek()
                            Picker("Monday", selection: $mondayAttendance) {
                                ForEach(0 ..< 4) {
                                    Text("\(self.attendance[$0])")
                                }
                            }
                            .pickerStyle(SegmentedPickerStyle())
                        }

                        // Tuesday
                        HStack {
                            Text("Tuesday")
                                .dayOfWeek()
                            Picker("Tuesday", selection: $tuesdayAttendance) {
                                ForEach(0 ..< 4) {
                                    Text("\(self.attendance[$0])")
                                }
                            }
                            .pickerStyle(SegmentedPickerStyle())
                        }
//
//                        // Wednesday
//                        HStack {
//                            Text("Wednesday")
//                                .dayOfWeek()
//                            Picker("Wednesday", selection: $wednesdayAttendance) {
//                                ForEach(0 ..< 4) {
//                                    Text("\(self.attendance[$0])")
//                                }
//                            }
//                            .pickerStyle(SegmentedPickerStyle())
//                        }


                    }


                }

            }
            .navigationBarTitle("Your Child")
        }

    }
}

Когда я пытаюсь построить, показывая только «Понедельник» и «Вторник», это работает. Как только я раскомментирую среду (или больше), сборка завершится неудачно, и я получу ошибку.

Я понимаю, что мне нужно упростить код, но это уже довольно просто, и я не уверен, где взятьэто следующий.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 11 ноября 2019

Это не имеет ничего общего с For Each. Где определение dayOfWeek(), которое прикреплено к тексту. Это должно вернуть мнение. Он должен был потерпеть неудачу даже с одним For Each, как это было dayOfWeek(). Возможно, этот модификатор был определен в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...