使用swift将日期显示到tableview单元格时出现索引超出范围3

大家好我在我的tableview中有一个自定义UITableViewCell,带有2个标签和一个imageview。在第一个标签中,我获取通知消息的数组,它将在中运行正常第二个标签m在此情况下获取日期数组m获取错误消息索引超出范围。任何人都可以帮助我如何解决它。推进附使用swift将日期显示到tableview单元格时出现索引超出范围3

是JSON响应这里:

{ 

"Notification_Details":

[

{

"student_id": 2,

"date": "2017-06-03T00:00:00",

"message": "Notification Message 3"

},

{

"student_id": 2,

"date": "2017-06-02T00:00:00",

"message": "Notification Message 2"

},

{

"student_id": 2,

"date": "2017-06-01T00:00:00",

"message": "Notification Message 1"

}

]

}

和下面是使用来获取JSON和装入的tableview细胞代码米。

import UIKit 

class NotificationsViewController: UIViewController,UITableViewDataSource,UITableViewDelegate

{

@IBOutlet weak var mytable: UITableView!

var notilabell : Array = [String]()

var datelabel : Array = [String]()

override func viewDidLoad() {

super.viewDidLoad()

self.getnotiJSON()

}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return notilabell.count

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! NotiCellTableViewCell

cell.noti.text = notilabell[indexPath.row]

cell.datenotification.text = datelabel[indexPath.row]

return cell

}

func getnotiJSON()

{

let url = NSURL(string: "http://ezschoolportalapi.azurewebsites.net/api/Student/NotificationDetails?schoolid=1&studentid=2")

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

let task = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error)

in

guard error == nil && data != nil else

{

print("Error:",error)

return

}

let httpstatus = response as? HTTPURLResponse

if httpstatus?.statusCode == 200

{

if data?.count != 0

{

let responseString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary

let notiarray = responseString?.value(forKey: "Notification_Details") as? NSArray

for notifi in notiarray!

{

let notidict = notifi as? NSDictionary

let notiname = notidict?.value(forKey: "message")

self.notilabell.append(notiname as! String)

let notidat = notidict?.value(forKey: "message") as! String

let dateformatter = DateFormatter()

dateformatter.dateFormat = "yyyy-MM-dd hh:mm:ss"

let mystring = dateformatter.string(from: Date())

let yourdate = dateformatter.date(from: mystring)

dateformatter.dateFormat = "dd-MM-yyyy"

let mynewdate = dateformatter.string(from: yourdate!)

self.notilabell.append(mynewdate as! String)

}

DispatchQueue.main.async {

self.mytable.reloadData()

}

}

else

{

print("No data got from URL")

}

}

else{

print("error httpstatus code is :",httpstatus?.statusCode)

}

}

task.resume()

}

}

回答:

错误与您在解析日期时使用的日期格式化程序有关。你的日期也是错误的。尝试使用

let notidat = notidict?.value(forKey: "date") as! String 

let dateformatter = DateFormatter()

dateformatter.dateFormat = "yyyy-MM-dd'T'hh:mm:ss"

要附加日期notilabell阵列和下面的代码

let mynewdate = dateformatter.string(from: yourdate!) 

self.notilabell.append(mynewdate as! String)

datelabel阵列 更改为

let mynewdate = dateformatter.string(from: yourdate!) 

self.datelabel.append(mynewdate as! String)

以上是 使用swift将日期显示到tableview单元格时出现索引超出范围3 的全部内容, 来源链接: utcz.com/qa/259617.html

回到顶部