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

Searchbar ile veri tabanından gelen verileri arama?

0 oy
51 kez görüntülendi
11, Nisan, 2016 ios development kategorisinde csayin tarafından soruldu

Merhabalar herkese,

Üniversiteler hakkında kücük bir uygulama üzerinde çalısıyorum. Universitelere ait bilgileri sqlite veri tabanindan alip table view'a aktariyorum. Üniversitelerim isimlerini search bar ile aratmak da istiyorum. Asagida verdigim linkteki tutorial'i uygulayarak search bar yapisini kurdum ancak elle girilen bir dizinin elemanlarinda sorunsuz bir sekilde arama yapabilirken; veri tabanindan gelen ve bir dizi icerisine alip table view'da listeleyebildigim verilerin arasinda arama yapamiyorum. asagidaki hatayi aliyorum. 

universite bilgilerini bir struct yapisinin icine aliyorum bu bilgileride bir array'e atayip bu array'deki "adi" elemanini table view'deki label'a yazdiriyorum.

tutorial

hata:

https://drive.google.com/open?id=0B-mxXNuEWybRYVlISmxfOS01eEk

 

1 cevap

0 oy
21, Nisan, 2016 huseyinvural tarafından cevaplandı

Bu struct yapısı olarak saklaman ile alakalı bir sorun var gibi duruyor ama bende tam olarak anlayamadım. Eğer projeni veya ilgili kodun bir kısmını drive da paylaşırsan yardımcı olmaya çalışırız.

İyi çalışmalar.

21, Nisan, 2016 csayin tarafından yorumlandı
https://drive.google.com/open?id=0B-mxXNuEWybRTG16MW1WZWlxZ0k

hocam uygulamanin en baslangic hali bu. MNM_db islemlerinde sqp islemlerini view contoller'da listeleme ve bu veriler icerisinde arama yapmak istiyorum.

    func updateSearchResultsForSearchController(searchController: UISearchController) {
        
        self.filteredUnivercity.removeAll(keepCapacity: false)
        
        let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
        let array = (self.tableData as NSArray).filteredArrayUsingPredicate(searchPredicate)
        self.filteredAppleProducts = array as! [String]
        
        self.myTableView.reloadData()

        
        
    }

" let array = (self.tableData as NSArray).filteredArrayUsingPredicate(searchPredicate)"
satiri hata veriyor  arrayi stringe atamak gibi denemeler yaptim hata ortadan kalsada search bar'da arama yapmak istedigimde uygulama cakildi bu seferde.
21, Nisan, 2016 huseyinvural tarafından yorumlandı
Şuanda müsait olamadığım için detaylı bir çözüm veremiyorum ama temel sorunun zaten (self.tableData as NSArray) satırının işlevsiz olması bu işlem çalışsa bile oluşan array aramanın yapılcağı value den oluşmadığı için struct array içindeki struct içinde filteredArrayUsingPredicate le arama yapmaya çalışıyorsun buda olumlu sonuç vermiyor.

Bunun yerine bu işlemleri yapmadan önce string tipinde bir array oluşturup struc içinden parse etceğin üni adlarını buraya ekle daha sonra oluştuduğun bu array içinde arama yap.  Hatta sting bir array olduğu için, filterContentForSearchText fonksiyonu ile aramayı yapman daha iyi olacaktır.

Aşağıdaki örnek işini görücektir,
https://www.raywenderlich.com/113772/uisearchcontroller-tutorial

Söylediğim gibi temel sorunun arama yapacağın value nun struct içinde ilgili fonsiyonun ulaşamadığı bir yerde olması. Arama yapadan önce bu yapıyı parse edip sadeleştirmelisin.
...