在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