Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Search Controller Büyük Küçük Harf ve Türkçe Dil Desteği

0 oy
169 kez görüntülendi
3, Temmuz, 2017 ios development kategorisinde csayin tarafından soruldu

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
3, Temmuz, 2017 yasin tarafından cevaplandı
4, Temmuz, 2017 csayin 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.

3, Temmuz, 2017 csayin tarafından yorumlandı

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.

3, Temmuz, 2017 yasin tarafından yorumlandı

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

[String.CompareOptions.caseInsensitive, String.CompareOptions.diacriticInsensitive]
3, Temmuz, 2017 csayin tarafından yorumlandı

.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)
   { ..
3, Temmuz, 2017 yasin tarafından yorumlandı

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.

3, Temmuz, 2017 csayin tarafından yorumlandı

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.

4, Temmuz, 2017 yasin tarafından yorumlandı

ş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.

4, Temmuz, 2017 csayin tarafından yorumlandı

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.

...