在Swift中使用JSON对象填充表格视图

我在这里看过很多其他问题,但对于Swift我还是比较新的,我很难将这些答案放到我有的上下文中。在Swift中使用JSON对象填充表格视图

我有一个事件数据库,我想用上述事件填充tableview。在我的“EventTableViewController”我有以下功能:

func HTTPRequestListEvent() { 

let serverURL = NSURL(string: "http://localhost:8888/public_php/Cake/index.php/event/listevent")

let request = NSMutableURLRequest(url:serverURL! as URL)

request.httpMethod = "POST"

//Create a task to send the post request

let task = URLSession.shared.dataTask(with: request as URLRequest) {

data, response, error in

if error != nil {

print("HTTPRequestError1=\(error)")

return

}

do {

if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject] {

print("1")

for (_, value) in json {

if let eventItem = value as? [String:AnyObject] {

if let eventName = eventItem["EventName"] as? String {

print(eventName)

}

if let eventLocation = eventItem["EventLocation"] as? String {

print(eventLocation)

}

}

}

}

}

catch {

print("HTTPRequestError2=\(error)")

}

}

task.resume()

}

不过,我似乎无法得到JSON序列化工作。它不会给我一个错误,也不会打印出'1'。

另外我不想说'打印(eventName)',但这是我迄今为止所有。我想要做的是做这样的事情:

cell.eventNameLabel.text = eventName 

但我不知道如何获得在这方面的细胞的细节。

编辑:我的JSON在其他地方工作,但对于单数据 - 我已经能够登录和注册用户。

有了邮递员,我从我的服务器的以下JSON数据:

[{ “事件名称”: “华丽晚报é E”, “EventLocation”: “热水浴缸电影”, “开始日期”:“2017年-12-01“},{”EventName“:”Splendid party“,”EventLocation“:”Gazeebo“,”StartDate“:”2017-12-02“},{”EventName“:”神奇事件“,” “:”彩虹结束“,”StartDate“:”2017-02-03“},{”EventName“:”稍微垃圾收集“,”EventLocation“:”地下城“,”StartDate“:”2090-01 -04“}]

回答:

第一件事第一件事。你的print("1")不起作用的原因很简单。您正在使用if let打开该值,如果值为空,则跳过if let内的代码。在您的代码中,只需为if let添加一个else并进行打印,然后打印出来。

现在回到你的问题。您的if let不起作用的原因是您投射JSON字符串的方式。从看你的JSON字符串,你有一个顶层数组。在您的代码中,您将结果转换为[String:AnyObject]这是一个词典。所以你会得到null,因为这个投射失败。要解决您的问题,请使用以下代码:

let str = "[{\"EventName\":\"Magnificent soirée\",\"EventLocation\":\"Hot tub cinema\",\"StartDate\":\"2017-12-01\"},{\"EventName\":\"Splendid party\",\"EventLocation\":\"Gazeebo\",\"StartDate\":\"2017-12-02\"},{\"EventName\":\"Magical event\",\"EventLocation\":\"The end of a rainbow\",\"StartDate\":\"2017-02-03\"},{\"EventName\":\"Slightly rubbish gathering\",\"EventLocation\":\"Dungeon\",\"StartDate\":\"2090-01-04\"}]" 

do {

let data = str.data(using: .utf8)

if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [Dictionary<String, Any>] {

print("1")

for oneItemInJsonArray in json {

if let eventName = oneItemInJsonArray["EventName"] as? String {

print(eventName)

}

if let eventLocation = oneItemInJsonArray["EventLocation"] as? String {

print(eventLocation)

}

}

}else{

print("fail")

}

}

catch {

print("HTTPRequestError2=\(error)")

}

以上是 在Swift中使用JSON对象填充表格视图 的全部内容, 来源链接: utcz.com/qa/259784.html

回到顶部