Die Aufträge werden als Order
Objekte gespeichert: let orders = [Order]()
Refresh UITableView
Die Idee ist meine API jede Sekunde rufen und wenn eine neue Zelle erstellt wird, sollte die Tabelle in die neue Zelle zeigen.
var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: "GetOrders", userInfo: nil, repeats: true)
Dieser Code aktualisiert meine Funktion, um Daten zu erhalten, wiederholt aber die Zelle !!
so am Anfang des GetOrders
Funktion löschen I das Array dann laden sie mit neuen Array von API.
, aber der Code bricht ab, wenn der neue Auftrag aus der Datenbank gelöscht wird. Es zeigt den Tisch an. Wenn ich auf den Rücksendungen klicken Sie auf ‚Index außerhalb des zulässigen Bereichs‘, weil dieser Funktion
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
let order = orders[indexPath.row]
guard orders.count > indexPath.row else {
print("Index out of range")
return
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var viewController = storyboard.instantiateViewController(withIdentifier: "viewControllerIdentifer") as! OrderDetailsController
viewController.passedValue = order.id
self.present(viewController, animated: true , completion: nil)
}
UPDATE
func GetOrders(){
orders = []
print("hi")
let urlStr = "api/orders"
let url = URL(string: urlStr)
let user = "api"
let password = "Apipass"
var headers: HTTPHeaders = [
"Authorization": "Basic YXBpdXNlcjpBcGlBdXRoUGFzczIwMTchQCM="
]
Alamofire.request(url!, method: .get ,encoding: URLEncoding.default, headers: headers).responseJSON { response in
if let value: AnyObject = response.result.value as AnyObject? {
//Handle the results as JSON
let data = JSON(value)
for (key,subJson):(String, JSON) in data[0] {
//Do something you want
let logo = subJson["family"]["logo"]
let logoString = "img/\(logo)"
if let date = subJson["family"]["updated_at"].string {
print(date)
if let cleintName = subJson["client"]["name"].string {
let info = Order(shopname: shopname, shopaddress: shopaddr, clientName: cleintName, ClientAddress: clientAddres, PerferTime: time, Cost: subtotal , date : time , Logo : logoString ,id : id)
self.orders.append(info)
}
self.tableview.reloadData()
}
}
Ich denke, Ihre Zellen alle Sekunden duplizieren ..? –
@AnilKumar Bitte schauen Sie sich meine aktualisierte Frage an – leo0019
laden Sie die Tabellenansicht neu, wenn Sie die Daten von der API bekommen haben? –