Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
907 kez görüntülendi
ios development kategorisinde tarafından

Merhabalar herkese,

uygulamamda UISearchController ile tablo içerisindeki title'lar da arama yapıyorum ancak büyük küçük harf ve Türkçe karakterlerde iphone rehberi ya da whatsapp sohbetler kısmındaki arama kadar stabil çalışmıyor,

Örneğin; "ABDİOĞLU SİGORTA ARACILIK HİZMETLERİ" şeklindeki title'ı "ABDİ.." şeklinde aramdığımda arama sonucu gelirken "abdi" şekline küçük harflerle aradığımda arama sonucu gelmiyor. tablo verileri json ile parse edilmekte ve "ABDİOĞLU SİGORTA ARACILIK HİZMETLERİ" gibi tamamen büyük harf kullanılmış textler halinde gelmekte. Search controller'ı aşağıdaki kod bloğu ile yapılandırdım. Doğru arama metodu için ne yapmalıyım fikirlerinizi beliyorum.

Herkese iyi çalışmalar dilerim.

self.searchController = UISearchController(searchResultsController: nil)
self.searchController.searchResultsUpdater = self
self.searchController.hidesNavigationBarDuringPresentation = true
self.searchController.dimsBackgroundDuringPresentation = false
self.searchController.searchBar.keyboardAppearance = UIKeyboardAppearance.dark
self.searchController.searchBar.searchBarStyle = UISearchBarStyle.prominent
self.definesPresentationContext = true
self.searchController.searchBar.sizeToFit()
self.searchController.searchBar.barTintColor = self.navigationController?.navigationBar.barTintColor
self.tableView.tableHeaderView = self.searchController.searchBar

1 cevap

0 oy
tarafından
tarafından seçilmiş
 
En İyi Cevap

şurada verdiğim searchbar örneğindeki, updateSearchResults metodu içerisinde

if (searchingFocus.range(of: searchString, options: String.CompareOptions.caseInsensitive, range: nil, locale: nil) != nil) {
    self.filteredDummyDataStack.append(dummyData)
}

yaptığım gibi "String.CompareOptions.caseInsensitive" key'ini kullanırsan, aranan textlerin büyük veya küçük harf olduğuna bakılmaksızın sonuçları listeleyebilirsin.

tarafından

verdiğiniz cevaptaki kodu uyguladım hocam maalesef çalışmadı. halen "abdi" şeklinde arama yaptığımda sonuç döndürmüyor, ama "adbİ" şeklinde büyük "İ" harfi ile yazınca sonuç geliyor.

tarafından

ingilizce harici türkçe karakterler için bir de ".diacriticInsensitive" key'ini ekle o zaman.
şöyle;

[String.CompareOptions.caseInsensitive, String.CompareOptions.diacriticInsensitive]
tarafından

.diacriticInsensitive'i .caseInsensitive'den önce kullanmıştım simdide aşağıdaki gibi uyguladim ancak yine büyük "İ" de sorun var.

   if (searchingFocus.range(of: searchString, options:[
              String.CompareOptions.caseInsensitive, 
              String.CompareOptions.diacriticInsensitive
              ], 
              range: nil, locale: nil) != nil)
   { ..
tarafından

hımm, halbuki kendi örneğim üzerinde denemiştim,
"abdİ" yazınca doğru bir şekilde listelemişti bende.
türkçe karakterleri bir şekilde dahil etmek lazım o zaman.
Şimdi çıkmam lazım. Yarın bir bakarım müsait olunca.

tarafından

anladım hocam bende sizin örneği dizi elemanlarını falan değiştirerek kontrol ettim sizin örnekte bir problem yok evet ancak dediğim gibi benim uygulamada fayda etmedi.

müsait olduğunuz da göz atarsanız çok sevinirim. teşekkür ederim.

tarafından

şimdi tekrar kontrol ettim de.
en son verdiğim örnekteki gibi çalışması lazım. Yanlış bir şey yok orada.
senin uygulamada olmayan şeyi simule eden bir örnek hazırlayabilirsen, ona göre bakalım.

tarafından

bende dün sizin örneği adım adım kontrol ettim bi problem yok orada dediğiniz gibi benim bloktakileri yeniden yazdım şuan çalışıyor bir problem yok. Dün çalışmamasına bir anlam veremedim ama neticeye bakarsak bir sorun yok. :)

Cevabınız için çok teşekkür ederim Yasin hocam. İyi çalışmalar dilerim.

...