Могу ли я улучшить фильтр массива в Swift? - PullRequest
0 голосов
/ 05 августа 2020
• 1000 Появится "safaParis".

У меня есть элемент поиска 5632. Итак, мой код - это
List {
            HStack {
                TextField("Insert yout city", text: $searchTerm)
                Spacer()
                if self.searchTerm != "" {
                    Button(action:{
                        self.searchTerm=""
                    })
                    {
                        Image(systemName:"xmark.circle.fill")
                            .foregroundColor(Color.gray)
                        
                    } .padding(.trailing, 15)
                    
                }
            }   .padding(10)
                .background(RoundedRectangle(cornerRadius: 10)
                    // .strokeBorder(Color("a1"), lineWidth: 3))
                    .strokeBorder( LinearGradient(gradient: .init(colors: [Color("a3"),Color("a2")]),
                                                  startPoint: .topLeading, endPoint: .bottomTrailing), lineWidth: 3))
            
            
            if self.searchTerm.count > 1 {
                ForEach((self.cities.filter { (value:String)->Bool in
                    return value.lowercased().contains(self.searchTerm.lowercased())
                }),
                        id: \.self)  { city in
                            CityRow(city: city,selectedCity: self.$selectedCity,isshow:self.$showSearchView, poiListData: self.$POIinCity)
                }
                
            }
            
            
        }
        
    }.padding(.top)
    .background(Color.white.edgesIgnoringSafeArea(.all))

Но я разочарован такой производительностью. Примерно через 2 ~ 3 секунды поток останавливается.
когда я удаляю строчные предложения в этом коде, он работает нормально.

Как я могу добиться хорошей производительности фильтра массива ??

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