SwiftUI问题-调用中的无关参数标签“ perform:”(Xcode 11 Swift 5)

时间:2019-11-25 17:17:49

标签: ios swift xcode11 swift5

我正在学习Swift,并尝试实现WWDC 2019 Session 204中演示的“ Room”应用。在下面的代码中,该代码与视频中的Jacob完全相同,但是遇到以下错误:

行:

.onDelete(perform: deleteRoom)

错误:

  

“调用中的外部参数标签'perform:'”

不能自己弄清楚...

谢谢!

struct ContentView: View {
    //var rooms: [Room] = []
    //    @ObservedObject var store = RoomStore()
    var store = RoomStore()

    var body: some View {
        NavigationView {
            List {
                Section {
                    Button(action: addRoom) {
                        Text("Add")
                    }
                }

                Section {
                    ForEach(store.rooms) { room in
                        RoomCell(room: room)
                    }
                    /* HERE is the error */
                    .onDelete(perform: deleteRoom)
                }
            }
            .navigationBarTitle(Text("Rooms"))
            .listStyle(.grouped)
        }
    }

    func addRoom() {
        store.rooms.append(Room(name: "New Room", capacity: 20, hasVideo: true))
    }

    func deleteRoom(at offsets: IndexSet) {
        store.rooms.remove(atOffsets: offsets)
    }
}

1 个答案:

答案 0 :(得分:1)

Meme

不信任Xcode:

Xcode并不是很聪明,无法告诉您SwiftUI中的真正问题是什么(尚未)。不管您相信与否,问题出在listStyle上。

您应该将其更改为:

.listStyle(GroupedListStyle())

不要忘记从您在第一部分中意外键入的.中删除.Text("Add")


一些其他有用的注释(与问题无关):

SwiftUI API现在与String更加兼容,因此您可以直接在某些{strong>初始化程序中为{{1} }}和修饰符,例如Text

View
Button