我有表视图,其中包含诸如“从、到、操作、日期和描述”之类的数据。现在我以字符串格式获取日期,我需要按日期从最新日期到较早日期对消息进行排序,我尝试了排序代码,但它只对前两个字符进行排序。例如:tSFDATE 有字符串“11/01/2010”、“01/02/2010”。结果将是
“01/02/2010”、“11/01/2010”。所以任何按日期对 TrackObj 进行排序的解决方案
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! TrackingTableViewCell
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd/MM/yyyy - hh:mm:ss"
        let sortedArray = self.trackingListArr.sorted { dateFormatter.date(from: $0.tSFDATE!)! < dateFormatter.date(from: $1.tSFDATE!)! }
        let trackObj = sortedArray[indexPath.row]
            cell.lblFromValue.text = trackObj.fROMUSERAR!
            cell.lblToValue.text = trackObj.tOUSERAR!
            cell.lblPurpsValue.text = trackObj.tSFPURPOSEAR!
            cell.lblDateValue.text = trackObj.tSFDATE!
            cell.lblNoteValue.text = trackObj.tSFDESCRIPTION!
    return (cell)
}
您正在尝试对字符串而不是日期进行排序。要对其进行正确排序,您首先需要将tSFDATE字符串转换为Date,然后对其进行排序。
这应该适用于您现有的阵列...
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy - HH:mm:ss"
let sortedArray = trackingListArr.sorted { (lhs: trackingListArr, rhs: trackingListArr) -> Bool in
    // you can have additional code here
    return dateFormatter.date(from: lhs.tSFDATE)! > dateFormatter.date(from: rhs.tSFDATE)!
}
编辑:紧凑关闭声明
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy - HH:mm:ss"
let sortedArray = trackingListArr.sorted { dateFormatter.date(from: $0.tSFDATE)! < dateFormatter.date(from: $1.tSFDATE)! }
编辑 2:更改dateFormat为"dd/MM/yyyy - HH:mm:ss"处理 24 小时制。
| 归档时间: | 
 | 
| 查看次数: | 2249 次 | 
| 最近记录: |