Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 对对象中的字符串日期进行排序_Swift_Sorting - Fatal编程技术网

Swift 对对象中的字符串日期进行排序

Swift 对对象中的字符串日期进行排序,swift,sorting,Swift,Sorting,我有一个表视图,其中包含诸如“from、To、Action、Date和description”之类的数据。现在我得到的是字符串格式的日期,我需要按日期对消息进行排序,从最近的日期到更早的日期,我尝试了排序代码,但它只对前两个字符进行排序。 例如:tSFDATE具有字符串“11/01/2010”、“01/02/2010”。结果将是 “2010年2月1日”、“2010年1月11日”。 那么,有没有按日期对TrackObj排序的解决方案 func tableView(_ tableView:

我有一个表视图,其中包含诸如“from、To、Action、Date和description”之类的数据。现在我得到的是字符串格式的日期,我需要按日期对消息进行排序,从最近的日期到更早的日期,我尝试了排序代码,但它只对前两个字符进行排序。 例如:tSFDATE具有字符串“11/01/2010”、“01/02/2010”。结果将是

“2010年2月1日”、“2010年1月11日”。 那么,有没有按日期对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)

}
func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{let cell=tableView.dequeueReusableCell(标识符为:“myCell”,for:indexath)作为!TrackingTableViewCell
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MM/yyyy-hh:MM:ss”
让sortedArray=self.trackingListArr.sorted{dateFormatter.date(from:$0.tSFDATE!)!
这是结果图像

按降序格式对数组排序


var sortedArray=self.trackingListArr.sorted(按:{$0.tSFDATE.compare($1)==.orderedDescending})

按降序格式对数组排序


var sortedArray=self.trackingListArr.sorted(按:{$0.tSFDATE.compare($1)==.ordereddescenting})

您正在尝试对字符串而不是日期进行排序。要正确排序,首先需要将
tSFDATE
字符串转换为
Date
,然后对其进行排序

这应该适用于您现有的阵列

let dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MM/yyyy-HH:MM:ss”
让sortedArray=trackingListArr.sorted{(lhs:trackingListArr,rhs:trackingListArr)->Bool-in
//你可以在这里有额外的代码
return dateFormatter.date(from:lhs.tSFDATE)!>dateFormatter.date(from:rhs.tSFDATE)!
}
编辑:压缩闭包声明

let dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MM/yyyy-HH:MM:ss”
让sortedArray=trackingListArr.sorted{dateFormatter.date(from:$0.tSFDATE)!

编辑2:将
dateFormat
更改为
“dd/MM/yyyy-HH:MM:ss”
以处理24小时时间。

您正在尝试对字符串而不是日期进行排序。要正确排序,首先需要将
tSFDATE
字符串转换为
Date
,然后对其进行排序

这应该适用于您现有的阵列

let dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MM/yyyy-HH:MM:ss”
让sortedArray=trackingListArr.sorted{(lhs:trackingListArr,rhs:trackingListArr)->Bool-in
//你可以在这里有额外的代码
return dateFormatter.date(from:lhs.tSFDATE)!>dateFormatter.date(from:rhs.tSFDATE)!
}
编辑:压缩闭包声明

let dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MM/yyyy-HH:MM:ss”
让sortedArray=trackingListArr.sorted{dateFormatter.date(from:$0.tSFDATE)!


编辑2:将
dateFormat
更改为
“dd/MM/yyyy-HH:MM:ss”
以处理24小时时间。

使用。改为使用比较进行日期比较。类似于date1.compare(date2)==。orderedAscending@koropok你能给我代码吗,因为我试过了,但我相信我的代码字符串有问题,表示日期的代码字符串只有在格式为
yyyy-MM-dd
(首先
year
然后
month
然后
day
)时才能可靠排序。如果不可能,您必须将日期字符串转换为
date
。请改用.compare进行日期比较。类似于date1.compare(date2)==。orderedAscending@koropok你能给我代码吗,因为我试过了,但我相信我的代码字符串有问题,表示日期的代码字符串只有在格式为
yyyy-MM-dd
(首先
year
然后
month
然后
day
)时才能可靠排序。如果不可能,您必须将日期字符串转换为
date
。它返回相同的结果,只需对前2个字符进行排序。是否从该函数中对该数组进行排序?由于此表视图函数调用多次。无法工作。排序字符串与排序日期不同。它返回相同的结果,只对前2个字符进行排序。是否从该函数中对该数组进行排序?由于此表视图函数调用多次。无法工作。排序字符串与排序日期不同。您所说的示例Whoops是什么意思。这就是我用来测试代码的结构。我现在已经修复并更新了答案。这很奇怪,你是有错误还是排序不正确?我编辑了我的问题,并附上了你的代码和我更改的截图“你说的例子是什么意思。这就是我用来测试代码的结构。我现在已经修复并更新了答案。这很奇怪,你是有错误还是排序不正确?我编辑了我的问题并附上了你的代码和截图我更改了”