merhabalar herkse,
öncelikle bu saçma başlıktan ötürü kusura bakmayın ne yazacağımı bulamadım.
uygulamayı kısaca özetlersem json ile gelen veri bir table view'da yazdırılıyor, tabloda seçilen verinin detayı yeni ekranda gösteriliyor. Ben table view'a bir seachbar ekledim gelen veri içerisinde arama yapıyor ancak arama yapıtıktan sonra detaya gidildiğinde her zaman ilk gelen verideki 1. verinin detayına gidiyor. Arama ile listelenen verinin detayına gidemiyorum
filtreleme işlemindeki verileri burada tutuyorum;
var filteredArr = String
ve gelen veride ki "name" alanınada işlem yapması için bunu kullanıyorum;
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredArr = salesNameArr.filter({ (text) -> Bool in
let txt : NSString = text as NSString
let range = txt.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
if searchText != ""{
shouldShowSearchResults = true
tableView.reloadData()
}
else {
shouldShowSearchResults = false
tableView.reloadData()
}
}
seçilen verinin detayına ise normal de bu sekilde gidiyorum ancak minik bir if le sorunu çözebilirmiyim dedim ama açıklamalardaki problem nedeniyle uygulama çakılıyor;
///for showing next detailed screen with the downloaded info
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "SalesDetailVC") as! SalesDetailVC
if filteredArr == nil { //Comparing non-optional value of type '[String]' to nil always returns false
vc.salesNameStr = salesNameArr[indexPath.row]
vc.salesIdInt = salesIdArr[indexPath.row]
vc.salesDateStr = salesDateArr[indexPath.row]
vc.salesProductStr = salesProductArr[indexPath.row]
vc.salesPriceInt = salesPricericeArr[indexPath.row]
}
else if filteredArr != nil { //Comparing non-optional value of type '[String]' to nil always returns false
vc.salesNameStr = filteredArr[indexPath.row]
vc.salesIdInt = salesIdArr[indexPath.row]
vc.salesDateStr = salesDateArr[indexPath.row]
vc.salesProductStr = salesProductArr[indexPath.row]
vc.salesPriceInt = salesPricericeArr[indexPath.row]
}
self.navigationController?.pushViewController(vc, animated: true)
}
Sorunun çözümü hakkında bilgisi olan arkadaşlar yardımcı olursa sevinirim.
Herkese iyi çalışmalar.