У меня возникла проблема с отображением массива JSON в TableView - результат - это пустая таблица, которую я знаю, настроена правильно, поскольку она работает с фиксированным массивом данных. Я, похоже, правильно разбираю JSON, так как я могу манипулировать выходом печати в консоли, я думаю, что проблема - это функция перезагрузки таблицы, однако я попытался выполнить все варианты решения, которое я нашел в Интернете, и не может показаться заставить его работать. Действительное JSON выглядит следующим образом:Проблема с отображением данных JSON в Swift TableView
[{
"locationNumber": 10,
"locationName": "Test Site",
"locationPhoneNumber": "",
"locationAddress": "test address"
},
{
"locationNumber": 99,
"locationName": "Test Site2",
"locationPhoneNumber": "",
"locationAddress": "second test address"
}]
The LocationTableViewController
import UIKit
import Alamofire
import AlamofireObjectMapper
class LocationTableViewController: UITableViewController {
var locations = [LocationResponse]()
override func viewDidLoad() {
super.viewDidLoad()
getLocationResponse()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return locations.count}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIndentifier = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIndentifier, forIndexPath: indexPath) as! LocationTableViewCell
//configure the cell
cell.locationLabel.text = locations[indexPath.row].locationName
cell.locationidLabel.text = "$\(locations[indexPath.row].locationID)"
return cell
}
func getLocationResponse() {
let URL = "https://test.com.au/api/Store?uid=7654380A-D18F-46A1&username=app&password=apptest"
Alamofire.request(.GET, URL).responseArray { (response: Response<[LocationResponse], NSError>) in
let locationArray = response.result.value
if let locationArray = locationArray {
for location in locationArray {
print(location.locationID)
print(location.locationName)
}
}
}
}
В LocationResponse.swift
import Foundation
import ObjectMapper
class LocationResponse: Mappable {
var locationName: String?
var locationID: Int?
required init?(_ map: Map){
}
func mapping(map: Map) {
locationName <- map["locationName"]
locationID <- map["locationNumber"]
}
}
Пользовательские Cell:
import UIKit
class LocationTableViewCell: UITableViewCell {
@IBOutlet var locationLabel: UILabel!
@IBOutlet var locationidLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
Я получаю это в консоли с функцией печати, которая выглядит правильно, и я предполагаю, что означает, что массив был создан правильно:
Optional(10)
Optional("Test Site")
Optional(99)
Optional("Test Site2")
Пожалуйста, помогите, если вы не можете
исправлено! Спасибо большое! – Hound
уже принята, еще раз спасибо – Hound
(И вы должны вернуться, как только у вас будет достаточно ответа на голосование и голос для голосования. Вам не обязательно, но это свидетельствует о благодарности.) –