将 UITableView 连接到 JSON API
Posted
技术标签:
【中文标题】将 UITableView 连接到 JSON API【英文标题】:Hooking UITableView to a JSON API 【发布时间】:2015-04-14 19:33:00 【问题描述】:我对 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 吗?
【问题讨论】:
只需为您从 json 创建的News
对象创建一个数组,然后将该数组用作您的 UITableView
的模型。所以第一个单元格将显示数组的第一个对象,等等。
你能用 sudo 代码或 sn-p 来回答吗?
【参考方案1】:
这应该让您知道该怎么做。您需要先创建一个数组。然后,您将创建一个 News 对象并将其一一添加到该数组中。然后,您将使用该数组作为 tableView 的数据源。在您的 cellForRowAtIndexPath 中,您将读取您的 News 对象并显示它们的数据。
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
【讨论】:
好的,谢谢!!顺便说一句,我将遍历 2 个 json 文件。一个是最近的新闻,一个是流行的新闻。我需要为此创建不同的新闻类,还是只需要创建 2 个不同的数组并将它们附加到每个数组? 如果他们使用相同的字段,则使用相同的类并创建一个多维数组来存储不同的“部分”。数组>。然后在您的 cellForRowAtIndexPath 中,您将通过该数组破译您的部分。 self.arrayNews[section][row]. 无法将数组dataSource
分配给数组。您的UIViewController
应该是dataSource
,因为它将实现UITableViewDataSource
函数的类(即cellForRowAtIndexPath
)。还要确保实现numberOfSections
和numberOfRowsInSection
(不记得确切的名称)。您应该将 tableview 的行数设置为数组的 count
属性。
这不是我想要表达的意思,但你是对的。通过委托方法使用数组。委托方法访问该数组。 (不打算将其作为可构建代码)以上是关于将 UITableView 连接到 JSON API的主要内容,如果未能解决你的问题,请参考以下文章
将 editButtonItem 连接到 UITableView
将 iPhone 连接到 Android 的 Wifi Direct 软 AP
无法将 UITableViewController 连接到在 xib 中创建的 UITableView