Подключение UITableView к JSON API
Я довольно новичок в Swift и пытаюсь подключить его к UITableView как можно лучше. Я решил использовать SwiftyJSON, который кажется простым. Мои объекты в объекте JSON могут выглядеть следующим образом:
{
"id": "146",
"title": "Esports site Streak provides prize-heavy alternative to traditional betting",
"url": "http://www.dailydot.com/esports/streak-counter-strike-vulcun-betting/",
"image_url": "//cdn0.dailydot.com/cache/bb/cc/bbccc49d8271f2f3ed4c40b45c0fe0c0.jpg",
"date": "2015-04-10 22:07:00",
"news_text": "test teeeext",
"referer_img": "1"
}
До сих пор я начал с создания цикла, который создает цикл через все циклы в viewDidLoad
for (key: String, subJson: JSON) in jsonArray {
println(subJson)
}
и после этого я создал класс для всех новостей, как показано ниже:
class News {
var id: Int!
var title: NSString!
var link: NSString!
var imageLink: NSString!
var summary: NSString!
var date:NSString!
init(id: Int, title:NSString, link: NSString, imageLink:NSString, summary: NSString, date:NSString) {
self.id = id
self.title = title
self.link = link
self.imageLink = imageLink
self.summary = summary
self.date = date
}
}
Однако я не уверен, что это лучший подход для создания этого? Какими будут мои следующие шаги, чтобы подключить его к UITableView?
1 ответ
Это должно дать вам представление о том, что делать. Сначала вам нужно будет создать массив. Затем вы будете создавать и добавлять объект News один за другим в этот массив. Затем вы будете использовать этот массив для источника данных вашего tableView. В вашем cellForRowAtIndexPath вы будете читать в новостных объектах и отображать их данные.
var arrayNews = Array<News>()
self.tableView.dataSource = self
for (key: String, subJson: JSON) in jsonArray {
// Create an object and parse your JSON one by one to append it to your array
var newNewsObject = News()
id: = //
title: = //
link = //
imageLink = //
summary = //
date = //
arrayNews.append(newNewsObject)
}
self.tableView.reloadData() // This will read in your arrayNews array
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("NewsCell") as! NewsCell
let newsObject = self.arrayNews[indexPath.row] // Assuming this is 1 section
// set all of your details here
cell.labelBlahBlah.text = something
return cell
}