Swift 3:使用ID和重新加载tableview筛选结果
我想弄清楚如何筛选数据并重新加载tableview。Swift 3:使用ID和重新加载tableview筛选结果
我有4个地区(北,南,东,西)和所有。
默认情况下,它将显示所有配置文件。
如果我按北(即1),它应该只过滤在北方地区
同样可用配置文件,与南部,东部和西部。根据按下的区域,它应该过滤配置文件。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0
{
let cell = self.bussinessTableView.dequeueReusableCell(withIdentifier: "bussinessCell", for: indexPath) as! BussinessCell
let tableObjects:StorageSubCatagoriezTwo = subCatagorizeDataTwo[indexPath.row]
let charCheck = (tableObjects.address).replacingOccurrences(of: " ", with: "")
cell.bussinessWebView.scrollView.isScrollEnabled = false
var strings = ""
if regId == 1
{
cell.bussinessName.text = " "
let tableObjects:StorageSubCatagoriezTwoNorth = subCatagorizeDataTwoN[indexPath.row]
if tableObjects.address.characters.isEmpty != true
{
strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
}
else
{
//nothing
}
if tableObjects.telephone.characters.isEmpty != true
{
strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
}
else
{
}
if tableObjects.email.characters.isEmpty != true
{
strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
}
else
{
}
if tableObjects.website.characters.isEmpty != true{
strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
}
else{
}
}
else if regId == 2
{
cell.bussinessName.text = " "
let tableObjects:StorageSubCatagoriezTwoEast = subCatagorizeDataTwoE[indexPath.row]
//cell.bussinessName.text = tableObjects.nameString
if tableObjects.address.characters.isEmpty != true
{
// cell.bussinessName.text = tableObjects.nameString
strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
}
else
{
//nothing
}
if tableObjects.telephone.characters.isEmpty != true
{
strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
}
else
{
}
if tableObjects.email.characters.isEmpty != true
{
strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
}
else
{
}
if tableObjects.website.characters.isEmpty != true{
strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
}
else{
}
}
else if regId == 3
{
cell.bussinessName.text = " "
let tableObjects:StorageSubCatagoriezTwoSouth = subCatagorizeDataTwoS[indexPath.row]
// cell.bussinessName.text = tableObjects.nameString
if tableObjects.address.characters.isEmpty != true
{
//cell.bussinessName.text = tableObjects.nameString
strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
}
else
{
//nothing
}
if tableObjects.telephone.characters.isEmpty != true
{
strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
}
else
{
}
if tableObjects.email.characters.isEmpty != true
{
strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
}
else
{
}
if tableObjects.website.characters.isEmpty != true{
strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
}
else{
}
}
else if regId == 4
{
cell.bussinessName.text = " "
let tableObjects:StorageSubCatagoriezTwoWest = subCatagorizeDataTwoW[indexPath.row]
// cell.bussinessName.text = tableObjects.nameString
if tableObjects.address.characters.isEmpty != true
{
// cell.bussinessName.text = tableObjects.nameString
strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
}
else
{
//nothing
}
if tableObjects.telephone.characters.isEmpty != true
{
strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
}
else
{
}
if tableObjects.email.characters.isEmpty != true
{
strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://localbluepages.com.au/images/icons/email.gif\"> "+tableObjects.email+"<br>" : "")
}
else
{
}
if tableObjects.website.characters.isEmpty != true{
strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
}
}
else{
let tableObjects:StorageSubCatagoriezTwo = subCatagorizeDataTwo[indexPath.row]
cell.bussinessName.text = tableObjects.nameString
let charCheck = (tableObjects.address).replacingOccurrences(of: " ", with: "")
print(charCheck)
cell.bussinessName.text = " "
var strings = ""
strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.nameString+"</b></font><br>" : "")
strings = strings+(tableObjects.nameString.characters.count > 0 ? "<font size=\"3\"><b>"+tableObjects.address+"</b></font><br>" : "")
// strings = strings+(tableObjects.address.characters.count > 0 ? "<img src=\"http://getmydetails.pe.hu/img/yt.jpg\"> "+tableObjects.address+"<br>" : "")
strings = strings+(tableObjects.telephone.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br>" : "")
strings = strings+(tableObjects.email.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/email.gif\"> "+tableObjects.email+"<br>" : "")
strings = strings+(tableObjects.website.characters.count > 0 ? "<img style='width:22px; height:22px;' src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website : "")
// cell.bussinessWebView.loadHTMLString("<font size=\"5\"><b>"+tableObjects.nameString+"</b></font><br><img src=\"http://getmydetails.pe.hu/img/yt.jpg\"> "+tableObjects.address+"<br><img src=\"http://getmydetails.pe.hu/img/mobile.gif\"> "+tableObjects.telephone+"<br><img src=\"http://getmydetails.pe.hu/img/email.gif\"> "+tableObjects.email+"<br><img src=\"http://getmydetails.pe.hu/img/website.gif\"> "+tableObjects.website, baseURL: nil)
cell.bussinessWebView.loadHTMLString(strings, baseURL: nil)
let heightIndex = strings.components(separatedBy: "<br>")
let heightMul = heightIndex.count
print(heightMul*32)
self.heightOfTheCell = CGFloat(((heightMul)*32)+4)
}
return cell
}
else if indexPath.section == 1
{
let cell = self.bussinessTableView.dequeueReusableCell(withIdentifier: "bussinessCell2")
cell?.textLabel?.textAlignment = .center
switch regId
{
case 0:
if subCatagorizeDataTwo.count != forAll
{
cell?.textLabel?.text = "LOAD MORE DATA"
cell?.textLabel?.textColor = Color.whiteColor
cell?.backgroundColor = UIColor.darkGray
}else{
cell?.textLabel?.text = "NO MORE FOUND!"
cell?.textLabel?.textColor = UIColor.darkGray
cell?.backgroundColor = UIColor.gray
cell?.selectionStyle = UITableViewCellSelectionStyle.none
}
case 1:
if subCatagorizeDataTwoN.count != forN
{
cell?.textLabel?.text = "LOAD MORE DATA"
cell?.textLabel?.textColor = Color.whiteColor
cell?.backgroundColor = UIColor.darkGray
}else{
cell?.textLabel?.text = "NO MORE FOUND!"
cell?.textLabel?.textColor = UIColor.darkGray
cell?.backgroundColor = UIColor.gray
cell?.selectionStyle = UITableViewCellSelectionStyle.none
}
case 2:
if subCatagorizeDataTwoE.count != forE
{
cell?.textLabel?.text = "LOAD MORE DATA"
cell?.textLabel?.textColor = Color.whiteColor
cell?.backgroundColor = UIColor.darkGray
}else{
cell?.textLabel?.text = "NO MORE FOUND!"
cell?.textLabel?.textColor = UIColor.darkGray
cell?.backgroundColor = UIColor.gray
cell?.selectionStyle = UITableViewCellSelectionStyle.none
}
case 3:
if subCatagorizeDataTwoS.count != forS
{
cell?.textLabel?.text = "LOAD MORE DATA"
cell?.textLabel?.textColor = Color.whiteColor
cell?.backgroundColor = UIColor.darkGray
}else{
cell?.textLabel?.text = "NO MORE FOUND!"
cell?.textLabel?.textColor = UIColor.darkGray
cell?.backgroundColor = UIColor.gray
cell?.selectionStyle = UITableViewCellSelectionStyle.none
}
case 4:
if subCatagorizeDataTwoW.count != forW
{
cell?.textLabel?.text = "LOAD MORE DATA"
cell?.textLabel?.textColor = Color.whiteColor
cell?.backgroundColor = UIColor.darkGray
}else{
cell?.textLabel?.text = "NO MORE FOUND!"
cell?.textLabel?.textColor = UIColor.darkGray
cell?.backgroundColor = UIColor.gray
cell?.selectionStyle = UITableViewCellSelectionStyle.none
}
default:break
}
return cell!
}
else
{
let tableObjects:StorageSubCatagoriez3rd = SubCatagoriez3rd[indexPath.row]
let cell = self.bussinessTableView.dequeueReusableCell(withIdentifier: "bussinessCell3")
cell?.textLabel?.text = tableObjects.nameString
return cell!
}
}
请看截图:
而且,在第二截图(南区)看到的轮廓是为了隐藏,因为它属于北地区。
请让我知道我该如何解决这个问题。
感谢您的时间:)
型号:
class StorageSubCatagoriezTwo
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String
init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
self.nameString = tempName.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.idString = tempID.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.address = tempaddress.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.telephone = tempTelephone.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.email = tempEmail.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.website = tempWebsite.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
class StorageSubCatagoriezTwoNorth
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String
init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
self.nameString = tempName.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.idString = tempID.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.address = tempaddress.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.telephone = tempTelephone.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.email = tempEmail.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.website = tempWebsite.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
class StorageSubCatagoriezTwoEast
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String
init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
self.nameString = tempName.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.idString = tempID.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.address = tempaddress.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.telephone = tempTelephone.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.email = tempEmail.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.website = tempWebsite.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
class StorageSubCatagoriezTwoWest
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String
init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
self.nameString = tempName.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.idString = tempID.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.address = tempaddress.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.telephone = tempTelephone.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.email = tempEmail.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.website = tempWebsite.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) }
}
class StorageSubCatagoriezTwoSouth
{
var nameString:String
var idString:String
var address:String
var telephone:String
var email:String
var website:String
init(tempName:String,tempID:String,tempaddress:String,tempTelephone:String,tempEmail:String,tempWebsite:String)
{
self.nameString = tempName.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.idString = tempID.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.address = tempaddress.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.telephone = tempTelephone.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.email = tempEmail.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
self.website = tempWebsite.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
取出区域和分配到变量:
let id = String(describing: dictionary["id"]!)
let name = String(describing: dictionary["BUSINESS_NAME"]!)
let email = String(describing: dictionary["EMAIL"]!)
var streetNo = String(describing: dictionary["STREET_NO"]!)
var streetName = String(describing: dictionary["STREET_NAME"]!)
var suburbID = String(describing: dictionary["SUBURB_ID"]!)
var postCode = String(describing: dictionary["POSTCODE"]!)
let regionID = String(describing: dictionary["REGION_ID"]!)
var landline = String(describing: dictionary["PHONE_FIXED"]!)
var mobile = String(describing: dictionary["PHONE_MOBILE"]!)
let website = String(describing: dictionary["WEBURL"]!)
var suburbName = String(describing: dictionary["Suburb"]!)
let streedNoHide = String(describing: dictionary["STREET_NO_HIDDEN"]!)
let streetNameHide = String(describing: dictionary["STREET_NAME_HIDDEN"]!)
let suburbHide = String(describing: dictionary["SUBURB_HIDDEN"]!)
let postCodeHide = String(describing: dictionary["POSTCODE_HIDDEN"]!)
let mobileHide = String(describing: dictionary["PHONE_MOBILE_HIDDEN"]!)
let landlineHide = String(describing: dictionary["PHONE_FIXED_HIDDEN"]!)
JSON数据:(REGION_ID)
1)他们应该是2个不同的阵列。
var mainArray = [StorageSubCatagories]()
var filteredArray = [StorageSubCatagories]()
第一个数组具有所有对象。(mainArray)
第二个数组只有主数组的过滤对象。(filteredArray)
2)您应该使用普通类,如 'StorageSubCatagories'分析所有的数据,而不是使用像StorageSubCatagoriezTwo,StorageSubCatagoriezTwoNorth,StorageSubCatagoriezTwoEast ...等多个类,存储中的所有对象成一个单一的阵列象下面这样:
3) 该函数将返回根据按钮选择滤波的数据。 对于按钮全部通过regionId = 0,对于北部regionId = 1,....根据您的值。
func fetchResultForSelection(_ regionId: Int) -> [StorageSubCatagories] {
if regionId == 0 {
return mainArray
}
let tempArray = mainArray.filter { $0.regId == regionId }
return tempArray
}
删除先前的对象后,将从此函数返回的数组对象添加到filteredArray中。
4)始终根据filteredArray而不是mainArray显示您的表数据。
希望这对你有所帮助。
谢谢Surjeet。我会试试这个。让我们看看 –
嘿,我试过了你推荐的解决方案,但显然它还没有工作。 –
你从这个func fetchResultForSelection收到了多少个对象? – Surjeet
你可以添加你的类别模型吗? – Jaydeep
如何识别哪个配置文件属于哪个区域? – Surjeet
代码中的哪个位置可以设置regId的值? –