Я работаю над проектом прямо сейчас, и я использую SwiftyJSON для анализа json с моего сервера, сначала он загружается отлично, но когда я его перезагружаю, он, похоже, не работает пока я не перезапущу приложение, вот тот метод, который я использовал:SwiftyJSON не перезагружает UITableView
override func viewDidLoad() {
super.viewDidLoad()
connectToServer()
self.refreshControls.addTarget(self, action: "connectToServer", forControlEvents: .ValueChanged)
self.tableView.addSubview(self.refreshControls)
}
func connectToServer() {
let urlString = "http://myserver.com/"
if let url = NSURL(string: urlString) {
if let data = try? NSData(contentsOfURL: url, options: []) {
let json = JSON(data: data)
self.parseJSON(json)
}
}
}
func parseJSON(json: JSON) {
numberOfRows = json.count
for i in 0...numberOfRows {
let name = json[i]["name"].stringValue
let age = json[i]["age"].stringValue
let g = json[i]["gender"].stringValue
let b = json[i]["bday"].stringValue
names.append(name)
ages.append(age)
genders.append(g)
bdays.append(b)
}
tableView.reloadData()
self.refreshControls.endRefreshing()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return numberOfRows
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell") as! MainCell!
if cell == nil {
cell = MainCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
}
cell.nameLbl.text = names[indexPath.row]
cell.ageLbl.text = ages[indexPath.row]
cell.genderLbl.text = genders[indexPath.row]
cell.bdayLbl.text = bdays[indexPath.row]
return cell
}
Я что-то пропустил? Благодаря!
Можете ли вы поделиться определение класса и decalaration переменных (Tableview и т.д.) тоже. Также, если вызывается tableView.reloadData()? –
Вы проверили, что вы нажали 'tableView.reladData()' и обновлен ли 'numberOfRows'? OT вы должны сделать модель и создать объект вместо четырех разных массивов. –
где вы очистили массив данных, например имена, возрасты ...? Вы просто добавили его, а numberOfRows заменили на Json.count, поэтому новые добавленные данные могут не отображаться – SolaWing