我正在使用搜索栏,以允许用户根据他输入的内容过滤列表。
但是如何允许“ @”用户提及第二个搜索此列表?
这是我的尝试,但是不起作用:

      var searchText = ""
var body : some View{
    List(observedData.datas.filter{
        $0.msg.lowercased().contains(searchText.lowercased()) || searchText.lowercased() == "" ||
        $0.name.lowercased().contains("@"+searchText.lowercased()) || "@"+searchText.lowercased() == ""

    }

         ))

    {
        i in
        VStack(alignment: .leading){
            CellCard(userId:i.userId,user: i.name)
        }
    }

    .listStyle(GroupedListStyle())
    .environment(\.horizontalSizeClass, .regular)
}

最佳答案

这样解决:

$0.msg.lowercased().contains(searchText.lowercased()) || "@\($0.name)".lowercased().contains(searchText.lowercased()) || searchText.lowercased() == ""

10-06 14:19