Создать протокол Устройство с общими свойствами
protocol Device {
//common properties of both struct
var time: String { get }
var title: String { get }
var places: String { get }
var state: String { get }
}
Подтвердите этот прокол в обеих структурах и добавьте общие свойства, если вам нужно
struct Device3New: Device {
var time: String
var title: String
var places: String
var state: String
//other properties
var myVar1: String
}
struct Device3: Device {
var time: String
var title: String
var places: String
var state: String
//other properties
var myVar2: String
}
Создать общий массив с типом протокола выше
Теперь в методе numberOfRowsInSection
проверьте chipnumber2.text!.isEmpty
и chipnumber.text!.isEmpty
и добавьте массивы в общий массив. А в cellForRowAt
получить объект из общего массива.
class NewMainTableViewController: UITableViewController {
var items: [Device3] = []
var itemsNew: [Device3New] = []
var joinedItems: [Device] = []
//chipnumber, chipnumber2 textfields
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
joinedItems.removeAll()
if !chipnumber2.text!.isEmpty {
joinedItems.append(contentsOf: itemsNew)
} else if !chipnumber.text!.isEmpty {
joinedItems.append(contentsOf: items)
}
return joinedItems.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellNew = tableView.dequeueReusableCell(withIdentifier: "cellIdNew", for: indexPath) as! DeviceTableViewCell2
let deviceItem: Device = joinedItems[indexPath.row]
//common properties
print(deviceItem.time)
print(deviceItem.title)
print(deviceItem.places)
print(deviceItem.state)
//other properties
if let deviceItem = joinedItems[indexPath.row] as? Device3New {
print(deviceItem.myVar1)
} else if let deviceItem = joinedItems[indexPath.row] as? Device3 {
print(deviceItem.myVar2)
}
return cellNew
}
}