Ошибка SwiftUI: не удалось вывести параметр Generi c «Метка». Явно укажите аргументы generi c, чтобы устранить эту проблему. - PullRequest
1 голос
/ 30 января 2020

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

Почему self.book.map {} здесь не работает?

var body: some View {
    List {
        ForEach(cards) { card in
            if (!self.showMarkedOnly || card.marked) {
                ZStack() {
                    CardView(card: card).frame(maxWidth: 400)
                        .contextMenu() {
                            if self.editMode {
                                Button(action: {}) { HStack { Image(systemName: "square.and.pencil"); Text("Edit") } }
                                Button(action: {}) { HStack { Image(systemName: "trash"); Text("Delete") } }
                                // self.book.map { Button(action: { self.onRemoveCard(card, fromBook: $0) }) { HStack { Image(systemName: "folder.badge.minus"); Text("Remove from current Book") } } } // ERROR happens here
                                if self.book != nil {
                                    Button(action: { self.onRemoveCard(card, fromBook: self.book!) }) { HStack { Image(systemName: "folder.badge.minus"); Text("Remove from current Book") } }
                                } // <------- this works!!! but I prefer to not use "self.book!"
                            } else {} }
                }
            }
        }
    }
}

1 Ответ

1 голос
/ 31 января 2020

Это случай вложенных замыканий, создающих помехи $ 0. Попробуйте это:

self.book.map { book in Button(action: { self.onRemoveCard(card, fromBook: book) }) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...