0
的订单都被存储为Order
对象:let orders = [Order]()
刷新UITableView的
的想法是叫我的API每一秒,并创建一个新的小区时,这个表应该显示新的细胞。
var timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: "GetOrders", userInfo: nil, repeats: true)
此代码确实刷新我的函数来获取数据,但重复单元格!
所以在GetOrders
函数的开头我擦除数组然后上传它与新的数组从API。
func GetOrders(){
orders = []
但是当从数据库中删除新订单时,代码会崩溃。它显示了他的表格。当我点击它的回报“索引超出范围”,因为这个功能
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()
}
}
我想你的细胞每秒都在复制..? –
@AnilKumar请看看我更新的问题 – leo0019
当你从api获取数据时,你是否重新载入tableview? –