Я пытаюсь удалить дубликаты из tableView. Данные, полученные в представлении таблицы, поступают из внешней базы данных. Некоторые из извлекаемых данных повторяются несколько раз.
Мне нужно отобразить данные: имя профиля и регион, т. е. «Показать все», «Север», «Восток», «Юг», «Запад». Теперь может быть профиль (например, «Бетонирование Джорджа»), который может отображаться в 3 регионах. Например, Север, Восток и Запад. По умолчанию при загрузке представления отображаются все предприятия во всех регионах. С этой точки зрения у меня есть несколько повторяющихся предприятий. Наш профиль бетонирования Джорджа повторяется 3 раза в этом представлении, тогда как его следует повторять только один раз. Когда я нажимаю «Север/Восток/Запад», компания «Бетонирование Джорджа» также должна появиться там только один раз.
По сути, компания «Бетонирование Джорджа» должна появиться только один раз в «Показать все», хотя у нее есть 3 предприятия из 3. регионы, и когда мы нажимаем на другие регионы, они также должны появиться один раз. См. снимок экрана.
Используя следующий код, я получаю ошибку в строке. См. ошибку
Код:
Я пытаюсь удалить дубликаты из tableView. Данные, полученные в представлении таблицы, поступают из внешней базы данных. Некоторые из извлекаемых данных повторяются несколько раз. Мне нужно отобразить данные: имя профиля и регион, т. е. «Показать все», «Север», «Восток», «Юг», «Запад». Теперь может быть профиль (например, «Бетонирование Джорджа»), который может отображаться в 3 регионах. Например, Север, Восток и Запад. По умолчанию при загрузке представления отображаются все предприятия во всех регионах. С этой точки зрения у меня есть несколько повторяющихся предприятий. Наш профиль бетонирования Джорджа повторяется 3 раза в этом представлении, тогда как его следует повторять только один раз. Когда я нажимаю «Север/Восток/Запад», компания «Бетонирование Джорджа» также должна появиться там только один раз. По сути, компания «Бетонирование Джорджа» должна появиться только один раз в «Показать все», хотя у нее есть 3 предприятия из 3. регионы, и когда мы нажимаем на другие регионы, они также должны появиться один раз. См. снимок экрана. Используя следующий код, я получаю ошибку в строке. См. [b]ошибку[/b] Код: [code]class StorageSubCatagoriezTwo { var nameString:String var idString:String var address:String var telephone:String var email:String var website:String
class StorageSubCatagoriezTwoNorth { var nameString:String var idString:String var address:String var telephone:String var email:String var website:String
class StorageSubCatagoriezTwoEast { var nameString:String var idString:String var address:String var telephone:String var email:String var website:String
class StorageSubCatagoriezTwoWest { var nameString:String var idString:String var address:String var telephone:String var email:String var website:String
class StorageSubCatagoriezTwoSouth { var nameString:String var idString:String var address:String var telephone:String var email:String var website:String
var subCatagorizeDataTwo = Array() var subCatagorizeDataTwoN = Array() var subCatagorizeDataTwoE = Array() var subCatagorizeDataTwoW = Array() var subCatagorizeDataTwoS = Array() var SubCatagoriez3rd = Array()
func removeDuplicate (sourceArray: [Int]) -> [Int] { var uniqueArray:[Int] = [] for object in sourceArray { if !uniqueArray.contains(object) { uniqueArray.append(object) } } return uniqueArray }
var tableObjects:StorageSubCatagoriezTwoNorth = subCatagorizeDataTwoN[indexPath.row] tableObjects = removeDuplicate(sourceArray: [tableObjects.nameString]) //**error** {Cannot convert value of type 'String' to expected element type 'Int'}
else if indexPath.section == 1 { let cell = self.businessTableView.dequeueReusableCell(withIdentifier: "businessCell2") 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 Data 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 Data 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 Data 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 Data 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 Data 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.businessTableView.dequeueReusableCell(withIdentifier: "businessCell3") cell?.textLabel?.text = tableObjects.nameString return cell!