У меня возникли трудности с заполнением таблицы из результата json. Мой код выглядит следующим образом (извинений, но это, кажется, не хотят, хотят поставить первые две строки, как код: /):JSON to TableView трудность
импорт UIKit
класс ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
override func viewDidLoad()
{
super.viewDidLoad()
let url = NSURL(string: "http://api.football-data.org/alpha/soccerseasons/354/teams")
let data = NSData(contentsOfURL: url!)
let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSDictionary
let teamsArray = json["teams"] as NSArray
print("Team List : \(teamsArray)")
for dic in teamsArray
{
let teamname = dic["name"] as NSString
let code = dic["code"] as NSString
println("Team Name, \(teamname) : Code, \(code)")
}
// self.tableViewObject.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
@IBOutlet weak var tableViewObject: UITableView!
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return teamsArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "mycell")
cell.textLabel!.text = teamsArray[indexPath.row]
return cell
}
}
Он жалуется дважды о «Использование неразрешенного идентификатора 'teamsArray' дважды первый в:.
Возвращение teamsArray.count
, а затем по адресу:
cell.textLabel .text = teamsArray [indexPath.row]
Может кто-то помочь мне связать мой JSON с моей Tableview пожалуйста, помогая мне разрешить! ошибка, упомянутая выше, или вводя меня в правильном направлении.
Стоит отметить, когда я использую код на пустой взгляд без какого-либо намека на Tableview я получаю отличные результаты в консоли:
let url = NSURL(string: "http://api.football-data.org/alpha/soccerseasons/354/teams")
let data = NSData(contentsOfURL: url!)
let json = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error: nil) as NSDictionary
let teamsArray = json["teams"] as NSArray
print("Team List : \(teamsArray)")
for dic in teamsArray
{
let teamname = dic["name"] as NSString
let code = dic["code"] as NSString
println("Team Name, \(teamname) : Code, \(code)")
}
Я новичок в StackOverflow и сказали, что мой вопрос ранее был недостаточно конкретным. Пожалуйста, дайте мне знать, если это еще слишком расплывчато, и я постараюсь улучшить его.
Большое спасибо, Алан.
Вы должны узнать о 'scope'. Вы объявляете 'командыArray' в' viewDidLoad', но используете его другими способами. Объявив его внутри 'viewDidLoad', вы сообщаете своему коду, что он вам нужен только внутри' viewDidLoad'. Поэтому, когда вы пытаетесь ссылаться на него другими способами, он об этом не знает. Подумайте об этом так: если вы прячете в своем доме, может кто-нибудь с улицы увидеть вас? Это то, что происходит прямо сейчас. Вам нужно объявить его на один уровень выше, чтобы он работал. – LyricalPanda
Я думал, что это будет так, но когда у меня будет один уровень выше, сам код просто не будет запущен вообще:/ –
Как вы его используете? Попробуйте воспользоваться следующим классом ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {var commandsArray: NSArray {переопределить func viewDidLoad() .... '. Затем внутри 'viewDidLoad', do' self.teamsArray = json ["teams"] '. Я не пишу быстро, так что это может быть не совсем точно на 100% правильно, но должно быть по правильной линии. – LyricalPanda