SwiftUI搜索不适用于iPhone 13 Pro Max iOS 16

o2g1uqev  于 2022-12-20  发布在  iOS
关注(0)|答案(1)|浏览(132)

我有一个包含国家列表的jsonFile,并创建了一个名为countryFromJson()的函数来读取json文件中的数据,问题是搜索在每个设备上都正常工作,除了iPhone 13 Pro Max与iOS 16搜索不工作,我找不到它有什么问题,是设备还是因为我下面写的算法?

struct CountryListView: View {
   @Binding var countryCode: String
   @Binding var countryFlag: String
   @Binding var countryName: String
    
   @State private var searchText = ""

   var body: some View {
       HStack {
           VStack {

               SearchBar(text: $searchText)
               
               List {
                   ForEach( countryFromJson().data.filter({ country in
                    
                       let fullCountryName = country.countryName.hasPrefix(searchText)
                       let countryCode = country.dialCode
                       return fullCountryName || searchText == "" || countryCode.hasPrefix(searchText)
                    
                   }), id: \.self) { country in
                       HStack {
                           Text(country.flag)
                           Text(country.countryName)
                           Spacer()
                           Text("+\(country.dialCode)")
                               .foregroundColor(.secondary)
                       }.background(Color.white)
                           .font(.system(size: 20))
                           .onTapGesture {
                               self.countryCode = "+\(country.dialCode)"
                               self.countryFlag = country.flag
                               let countryName = country.countryName
                               self.countryName = countryName
                               self.presentation.wrappedValue.dismiss()
                       }
                   }
               }
           }
       }
   }
}

任何帮助将不胜感激,我只是想知道这是什么问题,因为搜索是正常工作的每一个设备上我测试过,只有iPhone 13 Pro Max与iOS 16不与搜索工作.

以下是我列出的国家/地区的图片:

nukf8bse

nukf8bse1#

我已经找到了可以引起搜索问题的问题,解决方法很简单:只需将这些数据转换为小写就能解决我的问题

let fullCountryName = country.countryName.lowercased().hasPrefix(searchText.lowercased())
let countryCode = country.dialCode.lowercased()
return fullCountryName || searchText == "" || countryCode.hasPrefix(searchText.lowercased())

现在我可以搜索大写和小写。

相关问题